Gradient descent vs lm () function in R?

14

Przeglądam filmy z bezpłatnego internetowego kursu uczenia maszynowego Andrew Ng w Stanford. Omawia Gradient Descent jako algorytm do rozwiązywania regresji liniowej i pisania funkcji w Octave do jej wykonania. Przypuszczalnie mógłbym przepisać te funkcje w R, ale moje pytanie brzmi: czy funkcja lm () już nie daje wyników regresji liniowej? Dlaczego miałbym pisać własną funkcję spadku gradientu? Czy jest jakaś korzyść, czy jest to wyłącznie ćwiczenie edukacyjne? Czy lm () wykonuje opadanie gradientu?

Użytkownik
źródło
Myślę, że być może będziesz musiał zaimplementować zejście gradientowe w innym języku w przypadkach, w których nie ma dobrego rozwiązania w R (na przykład pewna odmiana regresji, na przykład regresja regulowana z dużymi danymi)
Manoel Galdino

Odpowiedzi:

20

Spadek gradientu jest w rzeczywistości dość kiepskim sposobem rozwiązania problemu regresji liniowej. lm()Funkcja na badania wewnętrznie wykorzystuje postać QR rozkładu , który jest znacznie bardziej skuteczne. Zejście gradientowe jest jednak ogólnie użyteczną techniką, którą warto wprowadzić w tym prostym kontekście, aby wyjaśnić, jak stosować ją w bardziej złożonych problemach. Jeśli chcesz wdrożyć własną wersję jako ćwiczenie edukacyjne, warto to zrobić, ale lm()jest lepszym wyborem, jeśli wszystko, czego chcesz, to narzędzie do regresji liniowej.

Martin O'Leary
źródło
@Martin Czy lm () może być jeszcze lepszy, jeśli mamy wiele funkcji?
user2626445,
0

Powodem, dla którego gradient online jest przydatny, są aplikacje o dużej skali. W każdym razie teraz istnieją biblioteki, które go implementują, więc nie trzeba go programować. To dobry sposób, aby dowiedzieć się, jak działają rzeczy.

W słowach Leon Bottou:

Uczenie maszynowe na dużą skalę zostało po raz pierwszy potraktowane jako problem inżynierski. Na przykład, aby wykorzystać większy zestaw szkoleniowy, możemy użyć równoległego komputera do uruchomienia znanego algorytmu uczenia maszynowego lub dostosować bardziej zaawansowane metody numeryczne w celu optymalizacji znanej funkcji celu uczenia maszynowego. Takie podejścia opierają się na atrakcyjnym założeniu, że można oddzielić aspekty statystyczne od obliczeniowych aspektów problemu uczenia maszynowego.

Ta praca pokazuje, że założenie to jest niepoprawne, a rezygnacja z niego prowadzi do znacznie bardziej efektywnych algorytmów uczenia się. Nowa struktura teoretyczna uwzględnia wpływ przybliżonej optymalizacji na algorytmy uczenia się.

Analiza wykazuje wyraźne kompromisy w przypadku problemów uczenia się na małą i dużą skalę. Problemy z uczeniem się na małą skalę podlegają zwykle kompromisowi przybliżania i szacowania. Problemy uczenia się na dużą skalę podlegają jakościowo odmiennemu kompromisowi obejmującemu złożoność obliczeniową podstawowych algorytmów optymalizacyjnych w nietrywialny sposób. Na przykład algorytmy Stochastic Gradient Descent (SGD) wydają się być miernymi algorytmami optymalizacji, a mimo to wykazano, że działają wyjątkowo dobrze w przypadku problemów uczenia się na dużą skalę.

Uczenie się na dużą skalę

projekt SGD

marmur
źródło