Gradientenabfall vs lm () -Funktion in R?

13

Ich gehe die Videos in Andrew Ngs kostenlosem Online-Kurs für maschinelles Lernen in Stanford durch. Er beschreibt Gradient Descent als einen Algorithmus zum Lösen linearer Regression und zum Ausführen von Schreibfunktionen in Octave. Vermutlich könnte ich diese Funktionen in R umschreiben, aber meine Frage ist, gibt mir die Funktion lm () nicht bereits die Ausgabe einer linearen Regression? Warum sollte ich meine eigene Gradientenabstiegsfunktion schreiben wollen? Gibt es einen Vorteil oder ist es nur eine Lernübung? Führt lm () einen Gefälleabstieg durch?

Benutzer
quelle
Ich denke, Sie müssen möglicherweise Gradientenabstieg selbst in einer anderen Sprache implementieren, wenn es in R keine gute Lösung gibt (zum Beispiel eine Variation der Regression, wie die regulierte Regression mit großen Datenmengen)
Manoel Galdino

Antworten:

20

Gradientenabstieg ist eigentlich eine ziemlich schlechte Möglichkeit, ein lineares Regressionsproblem zu lösen. Die lm()Funktion in R verwendet intern eine Form der QR-Zerlegung , die wesentlich effizienter ist. Gradientenabstieg ist jedoch eine allgemein nützliche Technik, die in diesem einfachen Kontext eingeführt werden sollte, damit klarer wird, wie sie bei komplexeren Problemen angewendet werden kann. Wenn Sie Ihre eigene Version als Lernübung implementieren möchten, lohnt es sich, dies zu tun, ist jedoch die lm()bessere Wahl, wenn Sie nur ein Tool für die lineare Regression benötigen.

Martin O'Leary
quelle
@Martin Könnte lm () noch besser sein, wenn wir viele Funktionen haben?
user2626445
0

Der Grund, warum Online-Farbverläufe nützlich sind, liegt in Anwendungen mit großem Maßstab. Auf jeden Fall gibt es jetzt Bibliotheken, die es implementieren, so dass Sie es nicht programmieren müssen. Es ist eine gute Möglichkeit zu lernen, wie Dinge funktionieren.

In Leon Bottou Worten:

Maschinelles Lernen in großem Maßstab wurde zuerst als technisches Problem betrachtet. Um beispielsweise einen größeren Trainingssatz zu nutzen, können wir einen Parallelcomputer verwenden, um einen bekannten Algorithmus für maschinelles Lernen auszuführen, oder fortgeschrittenere numerische Methoden anpassen, um eine bekannte Zielfunktion für maschinelles Lernen zu optimieren. Solche Ansätze beruhen auf der ansprechenden Annahme, dass man die statistischen Aspekte von den rechnerischen Aspekten des Problems des maschinellen Lernens entkoppeln kann.

Diese Arbeit zeigt, dass diese Annahme falsch ist und dass das Aufgeben zu wesentlich effektiveren Lernalgorithmen führt. Ein neuer theoretischer Rahmen berücksichtigt den Effekt der Näherungsoptimierung auf Lernalgorithmen.

Die Analyse zeigt unterschiedliche Kompromisse für den Fall kleiner und großer Lernprobleme. Kleine Lernprobleme unterliegen dem üblichen Kompromiss zwischen Approximation und Schätzung. Große Lernprobleme unterliegen einem qualitativ anderen Kompromiss, der die Komplexität der zugrunde liegenden Optimierungsalgorithmen auf nicht triviale Weise in Rechnung stellt. Zum Beispiel scheinen Stochastic Gradient Descent (SGD) -Algorithmen mittelmäßige Optimierungsalgorithmen zu sein, und es wird gezeigt, dass sie bei großen Lernproblemen äußerst gut funktionieren.

Lernen in großem Maßstab

SGD-Projekt

Marbel
quelle