Regresión lineal y sus métodos de restauración

Regresión lineal y sus métodos de restauración
Fuente: xkcd

La regresión lineal es uno de los algoritmos básicos para muchas áreas relacionadas con el análisis de datos. La razón es obvia. Es un algoritmo muy simple y comprensible, lo que contribuye a su amplia aplicación durante muchas décadas, si no cientos de años. La idea es que suponemos una dependencia lineal de una variable respecto a un conjunto de otras variables, y luego intentamos recuperar esa dependencia.

Pero en este artículo no se tratará sobre la aplicación de la regresión lineal para resolver problemas prácticos. Aquí se discutirán características interesantes de la implementación de algoritmos distribuidos para su recuperación, con las que nos encontramos al escribir el módulo de aprendizaje automático en Apache Ignite. Un poco de matemáticas básicas, fundamentos de aprendizaje automático y computación distribuida ayudarán a entender cómo recuperar la regresión lineal, incluso si los datos están distribuidos entre miles de nodos.

¿De qué se trata?

Se nos presenta la tarea de recuperar una dependencia lineal. Como datos de entrada se proporciona un conjunto de vectores de variables presuntamente independientes, a cada uno de los cuales se le asigna un cierto valor de variable dependiente. Estos datos se pueden representar en forma de dos matrices:

Regresión lineal y sus métodos de restauración

Ahora, dado que se supone una dependencia, y además lineal, escribamos nuestra suposición en forma de producto de matrices (para simplificar la notación, de aquí en adelante se supone que el término independiente de la ecuación está oculto detrás de Regresión lineal y sus métodos de restauración, y la última columna de la matriz Regresión lineal y sus métodos de restauración contiene unos):

Regresión lineal y sus métodos de restauración

Se parece mucho a un sistema de ecuaciones lineales, ¿no es así? Se parece, pero es probable que no haya soluciones para dicho sistema de ecuaciones. La razón de esto es el ruido que está presente en prácticamente todos los datos reales. También puede ser que no exista una dependencia lineal como tal, con la que se pueda intentar combatir introduciendo variables adicionales que dependan no linealmente de las originales. Consideremos el siguiente ejemplo:
Regresión lineal y sus métodos de restauración
Fuente: Wikipedia

Este es un ejemplo simple de regresión lineal que demuestra la dependencia de una variable (en el eje Regresión lineal y sus métodos de restauración) de otra variable (en el eje Regresión lineal y sus métodos de restauración). Para que el sistema de ecuaciones lineales correspondiente a este ejemplo tenga solución, todos los puntos deben estar exactamente en una misma línea. Pero no es así. Y no están en una misma línea precisamente por el ruido (o porque la suposición de la existencia de dependencia lineal fue errónea). Así, para restaurar la dependencia lineal a partir de datos reales, generalmente es necesario introducir otra suposición: los datos de entrada contienen ruido y este ruido tiene distribución normal. Se pueden hacer suposiciones sobre otros tipos de distribución de ruido, pero en la gran mayoría de los casos se considera precisamente la distribución normal, de la cual se hablará a continuación.

Método de máxima verosimilitud

Entonces, hemos supuesto la existencia de un ruido aleatorio normalmente distribuido. ¿Cómo actuar en tal situación? Para este caso, en matemáticas existe y se utiliza ampliamente método de máxima verosimilitud. En resumen, su esencia radica en la elección la función de verosimilitud y su posterior maximización.

Regresamos a la restauración de la dependencia lineal a partir de datos con ruido normal. Observemos que la dependencia lineal supuesta es la esperanza matemática Regresión lineal y sus métodos de restauración de la distribución normal existente. Al mismo tiempo, la probabilidad de que Regresión lineal y sus métodos de restauración tome un determinado valor, dado que hay observables Regresión lineal y sus métodos de restauración, se ve de la siguiente manera:

Regresión lineal y sus métodos de restauración

Ahora sustituiremos en lugar de Regresión lineal y sus métodos de restauración y Regresión lineal y sus métodos de restauración las variables que necesitamos:

Regresión lineal y sus métodos de restauración

Solo queda encontrar el vector Regresión lineal y sus métodos de restauración, en el que esta probabilidad es máxima. Para maximizar tal función, es conveniente primero logaritmarla (el logaritmo de la función alcanzará su máximo en el mismo punto que la propia función):

Regresión lineal y sus métodos de restauración

Lo que, a su vez, se reduce a la minimización de la siguiente función:

Regresión lineal y sus métodos de restauración

Por cierto, esto se llama el método de los mínimos cuadrados. A menudo, se omiten todas las consideraciones anteriores y simplemente se utiliza este método.

Descomposición QR

Se puede encontrar el mínimo de la función mencionada anteriormente si se encuentra el punto en el que el gradiente de esta función es igual a cero. Y el gradiente se escribirá de la siguiente manera:

Regresión lineal y sus métodos de restauración

Descomposición QR es un método matricial para resolver el problema de minimización que se utiliza en el método de los mínimos cuadrados. En este sentido, reescribimos la ecuación en forma matricial:

Regresión lineal y sus métodos de restauración

Entonces, descomponemos la matriz Regresión lineal y sus métodos de restauración en matrices Regresión lineal y sus métodos de restauración y Regresión lineal y sus métodos de restauración y realizamos una serie de transformaciones (el algoritmo QR de descomposición no se discutirá aquí, solo su uso relativo a la tarea planteada):

Regresión lineal y sus métodos de restauración

Matriz Regresión lineal y sus métodos de restauración es ortogonal. Esto nos permite deshacernos del producto Regresión lineal y sus métodos de restauración:

Regresión lineal y sus métodos de restauración

Y si reemplazamos Regresión lineal y sus métodos de restauración en Regresión lineal y sus métodos de restauración, entonces obtendremos Regresión lineal y sus métodos de restauración. Teniendo en cuenta que Regresión lineal y sus métodos de restauración es una matriz triangular superior, esto se ve de la siguiente manera:

Regresión lineal y sus métodos de restauración

Esto se puede resolver mediante el método de sustitución. El elemento Regresión lineal y sus métodos de restauración se encuentra como Regresión lineal y sus métodos de restauración, el elemento anterior Regresión lineal y sus métodos de restauración se encuentra como Regresión lineal y sus métodos de restauración y así sucesivamente.

Cabe señalar que la complejidad del algoritmo resultante debido al uso de la descomposición QR es igual a Regresión lineal y sus métodos de restauración. Aunque la operación de multiplicación de matrices se puede paralelizar bien, no parece posible escribir una versión distribuida efectiva de este algoritmo.

Descenso por gradiente

Al hablar de la minimización de alguna función, siempre se debe recordar el método (estocástico) de descenso de gradientes. Este es un método simple y efectivo de minimización, basado en el cálculo iterativo del gradiente de la función en un punto y su posterior desplazamiento en dirección opuesta al gradiente. Cada uno de estos pasos acerca la solución al mínimo. El gradiente se ve igual:

Regresión lineal y sus métodos de restauración

Además, este método se puede paralelizar y distribuir bien gracias a las propiedades lineales del operador gradiente. Notemos que en la fórmula anterior, bajo el signo de suma, hay términos independientes. En otras palabras, podemos calcular el gradiente de manera independiente para todos los índices Regresión lineal y sus métodos de restauración desde el primero hasta Regresión lineal y sus métodos de restauración, paralelamente, calcular el gradiente para los índices desde Regresión lineal y sus métodos de restauración hasta Regresión lineal y sus métodos de restauración. Luego, sumamos los gradientes obtenidos. El resultado de la suma será el mismo que si hubiéramos calculado el gradiente de una vez para los índices desde el primero hasta Regresión lineal y sus métodos de restauración. Así, si los datos están distribuidos entre varias partes, el gradiente puede ser calculado independientemente en cada parte, y luego los resultados de estos cálculos se pueden sumar para obtener el resultado final:

Regresión lineal y sus métodos de restauración

Desde el punto de vista de la implementación, esto se ajusta a la paradigma MapReduce. En cada paso del descenso de gradientes, se envía una tarea a cada nodo de datos para calcular el gradiente, luego se recolectan los gradientes calculados y el resultado de su suma se utiliza para mejorar el resultado.

A pesar de la simplicidad de implementación y la posibilidad de ejecución en la paradiгma MapReduce, el descenso de gradiente también tiene sus desventajas. En particular, el número de pasos necesarios para alcanzar la convergencia es significativamente mayor en comparación con otros métodos más especializados.

LSQR

LSQR es otro método para resolver el problema planteado, que es adecuado tanto para la recuperación de la regresión lineal como para la solución de sistemas de ecuaciones lineales. Su principal característica es que combina las ventajas de los métodos matriciales y el enfoque iterativo. Las implementaciones de este método se pueden encontrar en la biblioteca SciPy, así como en MATLAB. No se proporcionará una descripción de este método (se puede encontrar en el artículo LSQR: An algorithm for sparse linear equations and sparse least squares). En su lugar, se demostrará un enfoque que permite adaptar LSQR para su ejecución en un entorno distribuido.

El método LSQR se basa en el procedimiento de bidiagonalización. Es un procedimiento iterativo, donde cada iteración consta de los siguientes pasos:
Regresión lineal y sus métodos de restauración

Pero suponiendo que la matriz Regresión lineal y sus métodos de restauración está particionada horizontalmente, cada iteración se puede representar en forma de dos pasos MapReduce. De esta manera, se logra minimizar la transferencia de datos durante cada iteración (solo vectores de longitud igual al número de incógnitas):

Regresión lineal y sus métodos de restauración

Este enfoque se utiliza en la implementación de la regresión lineal en Apache Ignite ML.

Conclusión

Existen muchos algoritmos para la recuperación de la regresión lineal, pero no todos pueden aplicarse en cualquier situación. Por ejemplo, la descomposición QR es excelente para resolver con precisión en pequeños conjuntos de datos. El descenso de gradiente se implementa fácilmente y permite encontrar rápidamente una solución aproximada. LSQR, por su parte, combina las mejores propiedades de los dos algoritmos anteriores, ya que puede ser distribuido, converge más rápido en comparación con el descenso de gradiente y también permite la detención temprana del algoritmo, a diferencia de la descomposición QR para la búsqueda de soluciones aproximadas.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster