¿Necesitamos un descenso de gradiente para encontrar los coeficientes de un modelo de regresión lineal?


31

Estaba tratando de aprender el aprendizaje automático usando el material de Coursera . En esta conferencia, Andrew Ng usa un algoritmo de descenso de gradiente para encontrar los coeficientes del modelo de regresión lineal que minimizará la función de error (función de costo).

Para la regresión lineal, ¿necesitamos un descenso de gradiente? Parece que puedo diferenciar analíticamente la función de error y ponerla a cero para resolver los coeficientes; ¿está bien?


3
Los modelos lineales se han manejado decentemente bien desde la década de 1700. Hay un montón de formas de manejarlos que no requieren descenso de gradiente (GD). Hay modelos no lineales donde la mayoría de esos métodos caen de bruces. Andrew te está haciendo usar un método desconocido pero muy útil contra un problema muy simple para que puedas depurar tu enfoque. Cuando eres bueno con el método, puedes aplicarlo a los problemas asombrosamente no lineales para los cuales GD es el único método para obtener resultados.
EngrStudent - Restablece a Monica el

10
No, no tiene que usar enfoques como el descenso de gradiente (ese no es el único método de optimización, en cualquier caso). De hecho, puede resolverlo analíticamente, como sugiere; diferencia con respecto a cada parámetro, por lo que obtiene una ecuación por parámetro. Pero es útil para resolver problemas simples que se pueden hacer de otras maneras; Si ya conoce la respuesta, puede estar seguro de cuándo obtendrá la respuesta correcta con el descenso de gradiente.
Glen_b -Reinstate Monica

Si la función de costo es la penalización cuadrática habitual ('distancia'), hay una solución de forma cerrada. Sin embargo, el descenso de gradiente es generalmente mucho más rápido, por eso se usa típicamente.
aginensky

Además, el descenso de gradiente se puede utilizar para encontrar soluciones numéricas a problemas que son analíticamente intratables. Sospecharía que usa el descenso de gradiente desde el principio para acostumbrarse a él. Creo que luego usa el descenso en gradiente con redes neuronales. No hace falta decir que la situación de la red neuronal es más complicada. Creo que desde una situación pedagógica, habiéndolos visto antes, con modelos lineales, el descenso de gradiente para usar con redes neuronales parece más razonable.
aginensky

3
Gracias por publicar el enlace a los videos de Andre Ng. Vi varios. Ya lo sabía, aunque no hasta este extremo, pero da miedo ver lo que está aprendiendo la gran mayoría de las personas que aprenden a optimizar, sin mencionar lo que al menos algunos de ellos están aprendiendo sobre informática estadística. Gene Golub, EL pionero en computación y uso de SVD, se revolcaría en su tumba si supiera lo que se enseña ahora en su Departamento de Informática de Stanford. El video "más divertido" es youtube.com/watch?v=B3vseKmgi8E , que recomienda y compara los 2 peores algoritmos para mínimos cuadrados.
Mark L. Stone

Respuestas:


43

Los mínimos cuadrados lineales pueden resolverse mediante

0) Usar un solucionador de mínimos cuadrados lineales de alta calidad, basado en SVD o QR, como se describe a continuación, para mínimos cuadrados lineales no restringidos, o en una versión de Programación cuadrática u Optimización cónica para mínimos cuadrados limitados linealmente, como se describe a continuación. Tal solucionador está pre-enlatado, muy probado y listo para usar: úselo.

1) SVD, que es el método más confiable y numéricamente preciso, pero también requiere más computación que alternativas. En MATLAB, la solución SVD del problema de mínimos cuadrados lineales sin restricciones A * X = b es pinv (A) * b, que es muy precisa y confiable.

2) QR, que es bastante confiable y numéricamente preciso, pero no tanto como SVD, y es más rápido que SVD. En MATLAB, la solución QR del problema de mínimos cuadrados lineales sin restricciones A * X = b es A \ b, que es bastante precisa y confiable, excepto cuando A está mal acondicionado, es decir, tiene un número de condición grande. A \ b es más rápido de calcular que pinv (A) * b, pero no es tan confiable o preciso.

3) Formando las ecuaciones normales (TERRIBLE desde el punto de vista de la fiabilidad y la precisión numérica, porque cuadra el número de condición, lo cual es algo muy malo) y

3a) resolver por factorización de Cholesky (no es bueno)

3b) matriz de inversión explícita (HORRIBLE)

4) Resolver como un problema de programación cuadrática o un problema de cono de segundo orden

4a) Resolver usando software de programación cuadrática de alta calidad. Esto es confiable y numéricamente preciso, pero lleva más tiempo que SVD o QR. Sin embargo, es fácil agregar restricciones lineales limitadas o generales, o términos de penalización o regularización lineal o cuadrática (dos normas) a la función objetivo, y aún así resolver el problema usando el software de Programación Cuadrática.

4b) Resolver como un problema de cono de segundo orden utilizando el software de optimización de cónica de alta calidad. Las observaciones son las mismas que para el software de programación cuadrática, pero también puede agregar restricciones lineales limitadas o generales y otras restricciones cónicas o términos de función objetivo, como términos de penalización o regularización en varias normas.

5) Resuelva utilizando un software de optimización no lineal de propósito general de alta calidad. Esto aún puede funcionar bien, pero en general será más lento que el software de programación cuadrática u optimización cónica, y tal vez no sea tan confiable. Sin embargo, puede ser posible incluir no solo restricciones lineales unidas y generales, sino también restricciones no lineales en la optimización de mínimos cuadrados. Además, se puede usar para mínimos cuadrados no lineales, y si se agregan otros términos no lineales a la función objetivo.

6) Resuelva usando pésimos algoritmos de optimización no lineal de propósito general -> NO HAGA NUNCA ESTO

7) Resolver usando EL PEOR POSIBLE algoritmo de optimización no lineal de propósito general que existe, es decir, descenso de gradiente. Use esto solo si desea ver qué tan malo y poco confiable puede ser un método de solución Si alguien le dice que use el descenso de gradiente para resolver problemas lineales de mínimos cuadrados

7 i) Aprenda sobre informática estadística de alguien que sepa algo al respecto

7 ii) Aprenda la optimización de alguien que sepa algo al respecto.


Buena publicación, ¿por qué crees que Cholesky no es bueno dado que tu sistema es PD? (y no con un número de condición ridícula) Por cierto, creo que quiere decir (o agregar) la noción de inverso generalizado (usado principalmente con fines educativos obviamente) ya sea en el punto "SVD" o "explícitamente inverso".
usεr11852 dice Reinstate Monic

2
Por cierto, es ridículo la frecuencia con la que se generan matrices con números de condición muy altos, especialmente por las masas sin lavar (es decir, la mayoría de las personas que hacen mínimos cuadrados lineales, especialmente dada la democratización en el acceso), que no están en sintonía.
Mark L. Stone

1
mldivide, es decir. barra invertida, es decir, \ usa QR cuando m ~ = n (mínimos cuadrados), como dije en la segunda oración de mi párrafo (2) anterior. Sin embargo, se sorprenderá de la cantidad de basura que hay en MATLAB, no solo en las cajas de herramientas, algunas de las cuales son absolutamente horribles, sino también, en menor medida, en algunas de las funciones principales.
Mark L. Stone

1
@ MarkL.Stone, ¡gran respuesta! ¿Podrías explicar un poco más por qué no es aconsejable usar la pendiente de gradiente para resolver el mínimo cuadrado? (en mi opinión, es solo un enfoque iterativo en comparación con los otros (enfoques de solución de dirección) que ha mencionado anteriormente). Además, ¿podría comentar también el problema: "si tengo n> = 30,000 características para un problema, el método de ecuación normal será muy lento ya que invertir la matriz n * n sería terrible! Por otro lado, GD funcionaría en esto caso bonito! alguna idea sobre cómo SVD y QR funcionará ". Cualquier sugerencia sería muy útil.
Anu

1
@ anu Solo use el descenso de gradiente como último recurso. y eso solo sería si el problema es demasiado grande para ser resuelto por SVD o QR. Nunca forme las ecuaciones normales, y mucho menos invierta explícitamente una matriz para resolver ecuaciones normales, NUNCA. 30,000 funciones no suenan como muchas por hoy en día.
Mark L. Stone

0

Encontrar coeficientes de un modelo lineal es técnicamente el proceso de encontrar soluciones a un conjunto de ecuaciones lineales .

Para calcular tales soluciones, optimization techniquesse han desarrollado muchas y Gradient Descentes una de ellas.
Por lo tanto, la pendiente de gradiente no es la única forma de hacerlo.

Andrew Ng lo usa en el curso porque es fácil de entender, sin tener que lidiar con álgebra lineal avanzada y computación numérica.


Si bien no está mal, creo que su respuesta pierde el panorama general al centrarse en un caso no estándar. La gran mayoría de los modelos de regresión lineal se ajustan mediante el uso de descomposición QR empleando una solución de forma cerrada. GD-decente decente- se utiliza como ejemplo para introducir métodos más avanzados (por ejemplo SGD, estocástico GD).
usεr11852 dice Reinstate Monic

¿Puedes explicar qué es la descomposición QR?
Victor

3
UNAX=siUNA=QRRQUNAX=siQRX=siRX=QTsiRQTQ=yoSGD. Como la mayoría de las personas no tienen matrices muy grandes, la descomposición QR es mejor. En general, la descomposición QR ha dado forma al mundo numérico; SIAM lo seleccionó como uno de los 10 mejores algoritmos del siglo XX.
usεr11852 dice Reinstate Monic

@ usεr11852 sí, por supuesto. Eso porque quería mantener la respuesta simple, a fin de evitar conceptos como la descomposición QR, que siguen siendo relevantes para el dominio del nivel de curso de Ng.
Vikas Raturi

3
QR fue uno de los 10 mejores algoritmos del siglo XX. Pero el tiempo avanza y, aunque los algoritmos efectivos para calcular SVD se remontan a la década de 1960, hay que tener en cuenta la importancia de las áreas de aplicación. Por lo tanto, creo que SVD es el algoritmo TOP del siglo XXI. Francamente, ¿alguna vez has oído hablar de QR para recomendar películas? No, SVD se utiliza para esa aplicación crítica. SVD es claramente el algoritmo de elección cuando Twitter envía recomendaciones no solicitadas a los viejos amigos conservadores sobre qué celebridades adolescentes deben seguir. ¡Veamos a QR hacer eso!
Mark L. Stone
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.