¿Descenso de gradiente vs función lm () en R?

14

Voy a ver los videos del curso gratuito de aprendizaje automático en línea de Andrew Ng en Stanford. Analiza el Descenso de degradado como un algoritmo para resolver regresión lineal y funciones de escritura en Octave para realizarlo. Presumiblemente podría reescribir esas funciones en R, pero mi pregunta es si la función lm () ya no me da la salida de la regresión lineal. ¿Por qué querría escribir mi propia función de descenso de gradiente? ¿Hay alguna ventaja o es puramente como un ejercicio de aprendizaje? ¿Lm () hace descenso en gradiente?

Usuario
fuente
Creo que es posible que deba implementar el descenso de gradiente en otro idioma en los casos en que no haya una buena solución en R (por ejemplo, alguna variación de regresión, como la regresión regularizada con grandes datos)
Manoel Galdino

Respuestas:

20

El descenso de gradiente es en realidad una forma bastante pobre de resolver un problema de regresión lineal. La lm()función en R usa internamente una forma de descomposición QR , que es considerablemente más eficiente. Sin embargo, el descenso de gradiente es una técnica generalmente útil y vale la pena introducirlo en este contexto simple, para que sea más claro cómo aplicarlo en problemas más complejos. Si desea implementar su propia versión como un ejercicio de aprendizaje, vale la pena hacerlo, pero lm()es una mejor opción si todo lo que desea es una herramienta para hacer una regresión lineal.

Martin O'Leary
fuente
@ Martin ¿Podría lm () seguir siendo mejor si tenemos muchas funciones?
usuario2626445
0

La razón por la que el gradiente en línea es útil es para aplicaciones a gran escala. En cualquier caso, ahora hay bibliotecas que lo implementan para que no necesite programarlo. Es una buena manera de aprender cómo funcionan las cosas.

En palabras de Leon Bottou:

El aprendizaje automático a gran escala se abordó por primera vez como un problema de ingeniería. Por ejemplo, para aprovechar un conjunto de entrenamiento más grande, podemos usar una computadora paralela para ejecutar un algoritmo de aprendizaje automático conocido o adaptar métodos numéricos más avanzados para optimizar una función objetivo de aprendizaje automático conocida. Tales enfoques se basan en la suposición atractiva de que uno puede desacoplar los aspectos estadísticos de los aspectos computacionales del problema de aprendizaje automático.

Este trabajo muestra que esta suposición es incorrecta y que abandonarla conduce a algoritmos de aprendizaje considerablemente más efectivos. Un nuevo marco teórico tiene en cuenta el efecto de la optimización aproximada en los algoritmos de aprendizaje.

El análisis muestra compensaciones distintas para el caso de problemas de aprendizaje a pequeña y gran escala. Los problemas de aprendizaje a pequeña escala están sujetos a la aproximación habitual de estimación-compensación. Los problemas de aprendizaje a gran escala están sujetos a una compensación cualitativamente diferente que involucra la complejidad computacional de los algoritmos de optimización subyacentes de manera no trivial. Por ejemplo, los algoritmos de Descenso de gradiente estocástico (SGD) parecen ser algoritmos de optimización mediocres y, sin embargo, muestran un rendimiento extremadamente bueno en problemas de aprendizaje a gran escala.

Aprendizaje a gran escala

proyecto sgd

marbel
fuente