¿Qué algoritmo se usa en regresión lineal?


42

Usualmente escucho sobre "mínimos cuadrados ordinarios". ¿Es ese el algoritmo más utilizado para la regresión lineal? ¿Hay razones para usar una diferente?


@hxd, salvo cualquier estructura especial en la matriz de diseño, todos estos son algoritmos , que difieren solo en el factor constante. El enfoque descomposicional es un buen hábito heredado de la tradición del álgebra lineal numérica. O(mn2)
JM no es un estadístico

@hxd, y es por eso que mi respuesta se diseñó para ser una exposición de los algoritmos involucrados. Si tiene preguntas no cubiertas por este hilo, considere hacer una nueva pregunta.
JM no es un estadístico

Respuestas:


32

Con respecto a la pregunta en el título, sobre cuál es el algoritmo que se utiliza:

En una perspectiva de álgebra lineal, el algoritmo de regresión lineal es la forma de resolver un sistema lineal con más ecuaciones que incógnitas. En la mayoría de los casos no hay solución para este problema. Y esto se debe a que el vector no pertenece al espacio de columna de , .Ax=bbAC(A)

El best straight linees el que hace que el error general tan pequeño como sea necesario. Y es conveniente pensar que la longitud al cuadrado es tan pequeña, , porque no es negativa, y es igual a 0 solo cuando b \ en C (\ mathbf {A}) .e=Axbe2bC(A)

Proyectar (ortogonalmente) el vector al punto más cercano en el espacio de la columna de da el vector que resuelve el sistema (sus componentes se encuentran en la mejor línea recta) con el mínimo error.bAb

ATAx^=ATbx^=(ATA)1ATb

y el vector proyectado viene dado por:b

b=Ax^=A(ATA)1ATb

Quizás el método de mínimos cuadrados no se usa exclusivamente porque squaring compensa en exceso los valores atípicos.

Permítanme dar un ejemplo simple en R, que resuelve el problema de regresión usando este algoritmo:

library(fBasics)

reg.data <- read.table(textConnection("
   b      x
  12      0
  10      1
   8      2
  11      3
   6      4
   7      5
   2      6
   3      7
   3      8 "), header = T)

attach(reg.data)

A <- model.matrix(b~x)

# intercept and slope
inv(t(A) %*% A) %*% t(A) %*% b

# fitted values - the projected vector b in the C(A)
A %*% inv(t(A) %*%A ) %*% t(A) %*% b

# The projection is easier if the orthogonal matrix Q is used, 
# because t(Q)%*%Q = I
Q <- qr.Q(qr(A))
R <- qr.R(qr(A))

# intercept and slope 
best.line <- inv(R) %*% t(Q) %*% b

# fitted values 
Q %*% t(Q) %*% b

plot(x,b,pch=16)
abline(best.line[1],best.line[2])

Me sale un error could not find inv?
hhh


55
¿Hay alguna razón para usar inv de fBasics cuando es solo un sinónimo para resolver? ¿No sería mejor para la respuesta no requerir una dependencia de paquetes externos si no es necesario?
Dason

@ George Me encanta la respuesta clara, sin embargo, creo que la pregunta original era hacer algoritmos, y QR es solo una de ellas. ¿Qué hay de LU, SVD, descomposición de Cholesky? Además, en R, el método para lmes QR, hay razones para eso, ¿podría explicar por qué?
Haitao Du

@GeorgeDontas Tenga en cuenta que puede ser que no sea invertible. Como se explica en esta respuesta , una forma de lidiar con eso es eliminar las columnas que son combinaciones lineales de otras columnas. ATAA
Oren Milman

70

Para responder la letra de la pregunta, "mínimos cuadrados ordinarios" no es un algoritmo; más bien es un tipo de problema en álgebra lineal computacional, de la cual la regresión lineal es un ejemplo. Por lo general, uno tiene datos y una función tentativa ("modelo") para ajustar los datos, de la forma . Las se denominan "funciones básicas" y pueden ser desde monomios hasta funciones trigonométricas (por ejemplo, , ) y funciones exponenciales ( ). El término "lineal" en "regresión lineal" aquí no se refiere a las funciones básicas,{(x1,y1),,(xm,ym)}f(x)=c1f1(x)++cnfn(x)fj(x)xjsin(jx)cos(jx)exp(jx)cj, al tomar la derivada parcial del modelo con respecto a cualquiera de le da el factor que multiplica ; es decir, .cjcjfj(x)

Uno tiene ahora un matriz rectangular ( "matriz de diseño") que (generalmente) tiene más filas que columnas, y cada entrada es de la forma , es el índice de la fila y es el índice de columna. OLS ahora es la tarea de encontrar el vector que minimiza la cantidad (en notación matricial, ; aquí, generalmente se denomina "vector de respuesta").m×nAfj(xi)ijc=(c1cn)j=1m(yjf(xj))2Acy2y=(y1ym)

Existen al menos tres métodos utilizados en la práctica para calcular soluciones de mínimos cuadrados: las ecuaciones normales, la descomposición QR y la descomposición de valores singulares. En resumen, son formas de transformar la matriz en un producto de matrices que se manipulan fácilmente para resolver el vector .Ac

George ya mostró el método de ecuaciones normales en su respuesta; uno solo resuelve el conjunto de ecuaciones linealesn×n

AAc=Ay

para . Debido al hecho de que la matriz es simétrica positiva (semi) definida, el método habitual utilizado para esto es la descomposición de Cholesky, que factoriza en la forma , con una matriz triangular inferior. El problema con este enfoque, a pesar de la ventaja de poder comprimir la matriz de diseño en una matriz (generalmente) mucho más pequeña , es que esta operación es propensa a la pérdida de cifras significativas (esto tiene algo que ver con hacer con el "número de condición" de la matriz de diseño).cAAAAGGGm×nn×n

Una forma ligeramente mejor es la descomposición de QR, que funciona directamente con la matriz de diseño. Factoriza como , donde es una matriz ortogonal (al multiplicar dicha matriz con su transposición se obtiene una matriz de identidad) y es triangular superior. se calcula posteriormente como . Por razones por las que no entraré (solo vea cualquier texto decente de álgebra lineal numérica, como este ), esto tiene mejores propiedades numéricas que el método de ecuaciones normales.AA=QRQRcR1Qy

Una variación en el uso de la descomposición QR es el método de ecuaciones seminormales . Brevemente, si uno tiene la descomposición , el sistema lineal a resolver toma la formaA=QR

RRc=Ay

Efectivamente, uno está utilizando la descomposición QR para formar el triángulo Cholesky de en este enfoque. Esto es útil para el caso donde es escaso, y el almacenamiento explícito y / o la formación de (o una versión factorizada de este) no es deseable o poco práctico.AAAQ

Finalmente, la forma más costosa, pero más segura, de resolver OLS es la descomposición de valores singulares (SVD). Esta vez, se factoriza como , donde y son ortogonales yAA=UΣVUVΣes una matriz diagonal, cuyas entradas diagonales se denominan "valores singulares". El poder de esta descomposición radica en la capacidad de diagnóstico que le otorgan los valores singulares, en el sentido de que si uno ve uno o más valores singulares minúsculos, es probable que haya elegido un conjunto de bases no completamente independiente, por lo que necesita una reformulación de tu modelo (El "número de condición" mencionado anteriormente está de hecho relacionado con la relación del valor singular más grande al más pequeño; la relación, por supuesto, se vuelve enorme (y la matriz está mal condicionada) si el valor singular más pequeño es "pequeño" .)

Esto es simplemente un bosquejo de estos tres algoritmos; cualquier buen libro sobre estadística computacional y álgebra lineal numérica debería poder brindarle detalles más relevantes.


3
Buena explicación!
Mike Spivey

¿Cómo se calcula R^{-1} Q^T ysi A no es cuadrado? ¿Dejas caer las filas cero en R?
bhan

1
@bhan, supongo que la variante de "economía" (o "delgada") de descomposición QR, donde es cuadrada y tiene las mismas dimensiones que la matriz de diseño. Algo que debe hacer: busque la diferencia entre "QR completo" y "QR delgado". RQ
JM no es un estadístico

@JM alguna recomendación sobre "buen libro sobre estadísticas computacionales y álgebra lineal numérica"? Realmente quiero aprender más.
Haitao Du

1
@hxd, fuera de mi cabeza: Monahan para estadísticas computacionales y Golub / van Loan para álgebra lineal numérica.
JM no es un estadístico


4

Es fácil confundirse entre definiciones y terminología. Ambos términos se usan, a veces indistintamente. Una búsqueda rápida en Wikipedia debería ayudar:

Mínimos cuadrados ordinarios (MCO) es un método utilizado para ajustar modelos de regresión lineal. Debido a la consistencia y eficiencia demostrables (bajo supuestos suplementarios) del método MCO, es el enfoque dominante. Ver los artículos para más clientes potenciales.


Bien, por eso considero que OLS es un "algoritmo" usado en regresión lineal ...
Belmont

3
Los mínimos cuadrados ordinarios son un estimador. Hay una variedad de algoritmos para calcular la estimación: generalmente se usa algún tipo de descomposición de matriz ortogonal, como QR. Ver en.wikipedia.org/wiki/…
Simon Byrne

4

Tiendo a pensar en los "mínimos cuadrados" como un criterio para definir la línea de regresión que mejor se ajusta (es decir, la que hace que la suma de los "cuadrados" residuales sea "menor") y el "algoritmo" en este contexto como el conjunto de pasos utilizados para determinar los coeficientes de regresión que satisfacen ese criterio. Esta distinción sugiere que es posible tener diferentes algoritmos que satisfagan el mismo criterio.

Me gustaría saber si otros hacen esta distinción y qué terminología usan.


Por algoritmo, me refiero aproximadamente a la implementación de software utilizada para ajustar una línea para modelar la media de una distribución.
Belmont

3

Un libro viejo, pero uno al que me encuentro recurriendo repetidamente, es

Lawson, CL y Hanson, RJ Solucionando problemas de mínimos cuadrados , Prentice-Hall, 1974.

Contiene una discusión detallada y muy legible de algunos de los algoritmos que las respuestas anteriores han mencionado. Es posible que desee verlo.


1
Si lees este viejo libro, también deberías estar investigando los Métodos numéricos de Åke Björck para problemas de mínimos cuadrados , que tiene cosas que no se discutieron en Lawson / Hanson. Las rutinas incluidas en el libro de Lawson / Hanson están disponibles en Netlib .
JM no es estadístico el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.