Regresión lineal e métodos para a súa recuperación

Regresión lineal e métodos para a súa recuperación
Fonte: xkcd

A regresión lineal é un dos algoritmos básicos para moitas áreas relacionadas coa análise de datos. A razón disto é obvia. Este é un algoritmo moi sinxelo e comprensible, que contribuíu ao seu uso xeneralizado durante moitas decenas, se non centos, de anos. A idea é que asumimos unha dependencia lineal dunha variable sobre un conxunto doutras variables e despois tentamos restaurar esta dependencia.

Pero este artigo non trata de usar a regresión lineal para resolver problemas prácticos. Aquí consideraremos características interesantes da implementación de algoritmos distribuídos para a súa recuperación, que atopamos ao escribir un módulo de aprendizaxe automática en Apache Ignite. Un pouco de matemáticas básicas, aprendizaxe automática e computación distribuída poden axudarche a descubrir como realizar a regresión lineal aínda que os teus datos estean distribuídos en miles de nodos.

De que estamos a falar?

Estamos ante a tarefa de restaurar a dependencia lineal. Como datos de entrada, dáse un conxunto de vectores de variables supostamente independentes, cada un dos cales está asociado a un determinado valor da variable dependente. Estes datos pódense representar en forma de dúas matrices:

Regresión lineal e métodos para a súa recuperación

Agora, dado que a dependencia é asumida, e, ademais, lineal, escribiremos a nosa suposición en forma de produto de matrices (para simplificar o rexistro, aquí e abaixo asúmese que o termo libre da ecuación está agochado detrás Regresión lineal e métodos para a súa recuperación, e a última columna da matriz Regresión lineal e métodos para a súa recuperación contén unidades):

Regresión lineal e métodos para a súa recuperación

Soa moito a un sistema de ecuacións lineais, non? Parece, pero o máis probable é que non haxa solucións para tal sistema de ecuacións. A razón disto é o ruído, que está presente en case todos os datos reais. Outra razón pode ser a falta de dependencia lineal como tal, que se pode combater introducindo variables adicionais que non dependen linealmente das orixinais. Considere o seguinte exemplo:
Regresión lineal e métodos para a súa recuperación
Fonte: Wikipedia

Este é un exemplo sinxelo de regresión lineal que mostra a relación dunha variable (ao longo do eixe Regresión lineal e métodos para a súa recuperación) doutra variable (ao longo do eixe Regresión lineal e métodos para a súa recuperación). Para que o sistema de ecuacións lineais correspondente a este exemplo teña solución, todos os puntos deben estar exactamente na mesma recta. Pero iso non é certo. Pero non se atopan na mesma liña recta precisamente polo ruído (ou porque a suposición dunha relación lineal era errónea). Así, para restaurar unha relación lineal a partir de datos reais, adoita ser necesario introducir unha suposición máis: os datos de entrada conteñen ruído e este ruído ten ruído. distribución normal. Podes facer suposicións sobre outros tipos de distribución de ruído, pero na gran maioría dos casos é a distribución normal a que se considera, que se comentará máis adiante.

Método de máxima verosimilitud

Entón, asumimos a presenza de ruído aleatorio distribuído normalmente. Que facer ante tal situación? Para este caso en matemáticas hai e é moi utilizado método de máxima verosimilitud. En definitiva, a súa esencia reside na elección funcións de probabilidade e a súa maximización posterior.

Volvemos a restaurar unha relación lineal a partir de datos con ruído normal. Nótese que a relación lineal asumida é a expectativa matemática Regresión lineal e métodos para a súa recuperación distribución normal existente. Ao mesmo tempo, a probabilidade de que Regresión lineal e métodos para a súa recuperación adquire un valor ou outro, suxeito á presenza de observables Regresión lineal e métodos para a súa recuperación, como segue:

Regresión lineal e métodos para a súa recuperación

Imos agora substituír no seu lugar Regresión lineal e métodos para a súa recuperación и Regresión lineal e métodos para a súa recuperación As variables que necesitamos son:

Regresión lineal e métodos para a súa recuperación

Só queda atopar o vector Regresión lineal e métodos para a súa recuperación, no que esta probabilidade é máxima. Para maximizar tal función, é conveniente tomar primeiro un logaritmo dela (o logaritmo da función alcanzará un máximo no mesmo punto que a propia función):

Regresión lineal e métodos para a súa recuperación

O que, á súa vez, reduce ao mínimo a seguinte función:

Regresión lineal e métodos para a súa recuperación

Por certo, isto chámase método mínimos cadrados. Moitas veces omítense todas as consideracións anteriores e simplemente úsase este método.

Descomposición QR

O mínimo da función anterior pódese atopar atopando o punto no que o gradiente desta función é cero. E o gradiente escribirase do seguinte xeito:

Regresión lineal e métodos para a súa recuperación

Descomposición QR é un método matricial para resolver o problema de minimización utilizado no método dos mínimos cadrados. Neste sentido, reescribimos a ecuación en forma matricial:

Regresión lineal e métodos para a súa recuperación

Entón descompoñemos a matriz Regresión lineal e métodos para a súa recuperación ás matrices Regresión lineal e métodos para a súa recuperación и Regresión lineal e métodos para a súa recuperación e realizar unha serie de transformacións (non se considerará aquí o propio algoritmo de descomposición de QR, só o seu uso en relación coa tarefa a realizar):

Regresión lineal e métodos para a súa recuperación

Matriz Regresión lineal e métodos para a súa recuperación é ortogonal. Isto permítenos desfacernos do traballo Regresión lineal e métodos para a súa recuperación:

Regresión lineal e métodos para a súa recuperación

E se o substitúe Regresión lineal e métodos para a súa recuperación en Regresión lineal e métodos para a súa recuperación, entón vai funcionar Regresión lineal e métodos para a súa recuperación. Tendo en conta iso Regresión lineal e métodos para a súa recuperación é unha matriz triangular superior, ten o seguinte aspecto:

Regresión lineal e métodos para a súa recuperación

Isto pódese resolver mediante o método de substitución. Elemento Regresión lineal e métodos para a súa recuperación está situado como Regresión lineal e métodos para a súa recuperación, elemento anterior Regresión lineal e métodos para a súa recuperación está situado como Regresión lineal e métodos para a súa recuperación e así por diante.

Paga a pena sinalar aquí que a complexidade do algoritmo resultante debido ao uso da descomposición QR é igual a Regresión lineal e métodos para a súa recuperación. Ademais, a pesar de que a operación de multiplicación da matriz está ben paralelizada, non é posible escribir unha versión distribuída efectiva deste algoritmo.

Descenso Gradiente

Cando se fala de minimizar unha función, sempre convén lembrar o método de descenso do gradiente (estocástico). Este é un método de minimización sinxelo e eficaz baseado en calcular de forma iterativa o gradiente dunha función nun punto e despois desprazalo na dirección oposta ao gradiente. Cada paso deste tipo achega a solución ao mínimo. O gradiente segue sendo o mesmo:

Regresión lineal e métodos para a súa recuperación

Este método tamén está ben paralelizado e distribuído debido ás propiedades lineais do operador de gradiente. Teña en conta que na fórmula anterior, baixo o signo de suma hai termos independentes. Noutras palabras, podemos calcular o gradiente de forma independente para todos os índices Regresión lineal e métodos para a súa recuperación dende o primeiro ata Regresión lineal e métodos para a súa recuperación, paralelamente a isto, calcula o gradiente para índices con Regresión lineal e métodos para a súa recuperación para Regresión lineal e métodos para a súa recuperación. A continuación, engade os gradientes resultantes. O resultado da suma será o mesmo que se calculasemos inmediatamente o gradiente dos índices do primeiro ao Regresión lineal e métodos para a súa recuperación. Así, se os datos se distribúen entre varios datos, o gradiente pódese calcular de forma independente en cada peza, e despois pódense sumar os resultados destes cálculos para obter o resultado final:

Regresión lineal e métodos para a súa recuperación

Dende o punto de vista da implementación, isto encaixa co paradigma MapReduce. En cada paso do descenso do gradiente, envíase unha tarefa a cada nodo de datos para calcular o gradiente, despois recóllense os gradientes calculados e utilízase o resultado da súa suma para mellorar o resultado.

A pesar da facilidade de implementación e da capacidade de execución no paradigma MapReduce, a baixada de gradientes tamén ten os seus inconvenientes. En particular, o número de pasos necesarios para lograr a converxencia é significativamente maior en comparación con outros métodos máis especializados.

LSQR

LSQR é outro método para resolver o problema, que é adecuado tanto para restaurar a regresión lineal como para resolver sistemas de ecuacións lineais. A súa principal característica é que combina as vantaxes dos métodos matriciales e un enfoque iterativo. As implementacións deste método pódense atopar en ambas as bibliotecas SciPye en MATLAB. Non se dará aquí unha descrición deste método (pódese atopar no artigo LSQR: Un algoritmo para ecuacións lineais dispersas e mínimos cadrados escasos). Pola contra, demostrarase un enfoque para adaptar LSQR á execución nun ambiente distribuído.

O método LSQR baséase en procedemento de bidiagonalización. Este é un procedemento iterativo, cada iteración consta dos seguintes pasos:
Regresión lineal e métodos para a súa recuperación

Pero se asumimos que a matriz Regresión lineal e métodos para a súa recuperación está dividido horizontalmente, entón cada iteración pode representarse como dous pasos de MapReduce. Deste xeito, é posible minimizar as transferencias de datos durante cada iteración (só vectores cunha lonxitude igual ao número de incógnitas):

Regresión lineal e métodos para a súa recuperación

Este enfoque é o que se usa cando se implementa a regresión lineal Apache Ignite ML.

Conclusión

Hai moitos algoritmos de recuperación de regresión lineal, pero non todos poden aplicarse en todas as condicións. Polo tanto, a descomposición QR é excelente para unha solución precisa en conxuntos de datos pequenos. O descenso en gradiente é sinxelo de implementar e permítelle atopar rapidamente unha solución aproximada. E LSQR combina as mellores propiedades dos dous algoritmos anteriores, xa que se pode distribuír, converxe máis rápido en comparación co descenso de gradientes e tamén permite a detención temperá do algoritmo, a diferenza da descomposición QR, para atopar unha solución aproximada.

Fonte: www.habr.com

Engadir un comentario