Discesa gradiente vs funzione lm () in R?


14

Sto esaminando i video del corso di apprendimento automatico online di Andrew Ng a Stanford. Discute Gradient Descent come un algoritmo per risolvere la regressione lineare e scrivere funzioni in Octave per eseguirlo. Presumibilmente potrei riscrivere quelle funzioni in R, ma la mia domanda è: la funzione lm () non mi dà già l'output della regressione lineare? Perché dovrei voler scrivere la mia funzione di discesa gradiente? C'è qualche vantaggio o è puramente un esercizio di apprendimento? Lm () fa la discesa gradiente?


Penso che potrebbe essere necessario implementare la discesa gradiente in un'altra lingua nei casi in cui non esiste una buona soluzione in R (ad esempio, alcune variazioni di regressione, come la regressione regolarizzata con big data)
Manoel Galdino

Risposte:


20

La discesa a gradiente è in realtà un modo piuttosto scarso di risolvere un problema di regressione lineare. La lm()funzione in R utilizza internamente una forma di decomposizione QR , che è considerevolmente più efficiente. Tuttavia, la discesa gradiente è una tecnica generalmente utile, e vale la pena introdurla in questo semplice contesto, in modo che sia più chiaro come applicarla in problemi più complessi. Se vuoi implementare la tua versione come esercizio di apprendimento, è una cosa utile da fare, ma lm()è una scelta migliore se tutto ciò che vuoi è uno strumento per fare una regressione lineare.


@Martin Potrebbe essere meglio lm () se abbiamo molte funzionalità?
user2626445

0

Il motivo per cui il gradiente online è utile è per le applicazioni su larga scala. In ogni caso, ora ci sono librerie che lo implementano, quindi non è necessario programmarlo. È un buon modo per imparare come funzionano le cose.

In parole di Leon Bottou:

L'apprendimento automatico su larga scala è stato inizialmente affrontato come un problema di ingegneria. Ad esempio, per sfruttare un set di addestramento più ampio, possiamo utilizzare un computer parallelo per eseguire un algoritmo di apprendimento automatico noto o adattare metodi numerici più avanzati per ottimizzare una funzione di obiettivo di apprendimento automatico noto. Tali approcci si basano sul presupposto accattivante che si possano separare gli aspetti statistici dagli aspetti computazionali del problema dell'apprendimento automatico.

Questo lavoro mostra che questa ipotesi non è corretta e che rinunciarci porta a algoritmi di apprendimento notevolmente più efficaci. Un nuovo quadro teorico tiene conto dell'effetto dell'ottimizzazione approssimativa sugli algoritmi di apprendimento.

L'analisi mostra distinti compromessi per il caso di problemi di apprendimento su piccola e grande scala. I problemi di apprendimento su piccola scala sono soggetti al consueto compromesso di approssimazione-stima. I problemi di apprendimento su larga scala sono soggetti a un compromesso qualitativamente diverso che coinvolge la complessità computazionale degli algoritmi di ottimizzazione sottostanti in modi non banali. Ad esempio, gli algoritmi SGD (Stochastic Gradient Descent) sembrano algoritmi di ottimizzazione mediocri e tuttavia hanno dimostrato di funzionare molto bene su problemi di apprendimento su larga scala.

Apprendimento su larga scala

progetto sgd

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.