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?
Respuestas:
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.
fuente
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 techniques
se han desarrollado muchas yGradient Descent
es 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.
fuente
GD
-decente decente- se utiliza como ejemplo para introducir métodos más avanzados (por ejemploSGD
, estocásticoGD
).SGD
. 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.