Lineare Regression unter Verwendung der Gradientenabstiegsmethode [Erklärt mit Codierungsbeispiel]
Veröffentlicht: 2020-12-21Maschinelles Lernen macht immer noch die Runde, egal ob Sie Softwareentwickler, Datenwissenschaftler oder Datenanalyst werden möchten. Um ernsthafte Anstrengungen in der linearen Regression zu unternehmen, müssen Sie sich mit Python auskennen. Der Einstieg in eine Anfangsphase kann eine mühsame Aufgabe sein, dieser Artikel wird Ihnen helfen, die Regression besser zu verstehen.
Das Gradientenabstiegsverfahren wird aufgrund der Optimierungstechniken, die es zu bieten hat, in verschiedenen Iterationen gewählt. Mit dem Algorithmus ist es möglich, die Größe zu reduzieren, z. B. logistische Regression und neuronales Netzwerk. Bevor wir mit dem Gradienten beginnen, werfen wir einen Blick auf die lineare Regression.
Lesen Sie: Algorithmen für maschinelles Lernen für die Datenwissenschaft
Inhaltsverzeichnis
Was ist lineare Regression?
Es ist der lineare Ansatz, der zur Modellierung der Beziehung zwischen einer abhängigen Variablen und einer oder mehreren unabhängigen Variablen verwendet wird. Die lineare Beziehung zwischen solchen Variablen würde im Gleichungsformat ay=mx+b ausgedrückt werden.
Es ist ein überwachter maschineller Lernalgorithmus, der seine Lernkurve von einer gegebenen x-abhängigen Variablen und y als der anderen, die für das Verursachen eines Effekts verantwortlich ist, verbessert. Diese Art hilft bei der Vorhersage der Werte und Sicherheitsfaktoren für x und y.
Was ist Gradient Descent?
Die Verwendung der Gradientenregression beinhaltet die Optimierung des Algorithmus, der verwendet wird, um die Werte der erforderlichen Parameter einer Funktion zu finden, was es ermöglicht, die Kosten einer Funktion direkt zu minimieren.

Lassen Sie uns das Konzept anhand eines Szenarios verstehen, stellen Sie sich vor, Sie möchten eine Festung in einer stockdunklen Umgebung hinabsteigen. Gehen wir dabei davon aus, dass Sie komplett gehandicapt sind und den kürzesten und einfachsten Weg finden müssen, um wieder nach unten zu kommen. Der Gradientenabstieg ist die Ressource, die verwendet wird, um den optimierten Weg zu finden, um Ihr Ziel zu erreichen. Mit einer einfachen Richtungseingabe wäre es dem Algorithmus möglich, die beste Route aufzuzeichnen und vorzuschlagen.
Der Gradient ist einer der am häufigsten verwendeten und am weitesten verbreiteten Algorithmen im maschinellen Lernen. Er gilt auch als Grundlage für die Beherrschung des maschinellen Lernens in den früheren Phasen.
Für eine bessere Annäherung an den Gradienten versuchen wir, ihn mit einem Code in einem Beispiel zu implementieren, indem wir mit Hilfe von NumPy an Python arbeiten.
aus NumPy-Import *
# y = mx + b
# m ist die Steigung, b ist der y-Achsenabschnitt
def compute_error_for_line_given_points(b, m, points):
Gesamtfehler = 0
für i in range(0, len(points)):
x = Punkte[i, 0]
y = Punkte[i, 1]
Gesamtfehler += (y – (m * x + b)) ** 2
return totalError / float(len(points))
def step_gradient(b_current, m_current, points, learningRate):
b_gradient = 0
m_gradient = 0
N = float(len(Punkte))
für i in range(0, len(points)):
x = Punkte[i, 0]
y = Punkte[i, 1]
b_gradient += -(2/N) * (y – ((m_aktuell * x) + b_aktuell))
m_gradient += -(2/N) * x * (y – ((m_aktuell * x) + b_aktuell))
new_b = b_current – (learningRate * b_gradient)
new_m = m_current – (learningRate * m_gradient)
zurück [neu_b, neu_m]
def gradient_descent_runner(Punkte, Start_b, Start_m, Lernrate, Anzahl_Iterationen):

b = start_b
m = start_m
für i im Bereich (Anzahl_Iterationen):
b, m = step_gradient(b, m, array(points), learning_rate)
Rückkehr [b, m]
def run():
Punkte = genfromtxt(“data.csv”, Trennzeichen=”,”)
Lernrate = 0,0001
initial_b = 0 # Anfangsschätzung des y-Achsenabschnitts
initial_m = 0 # Schätzung der Anfangssteigung
num_iterations = 1000
print „Gradientenabstieg bei b = {0}, m = {1}, Fehler = {2}“ drucken. format(initial_b, initial_m, compute_error_for_line_given_points(initial_b, initial_m, points))
Drucken Sie „Läuft…“
[b, m] = gradient_descent_runner(points, initial_b, initial_m, learning_rate, num_iterations)
print „Nach {0} Iterationen b = {1}, m = {2}, Fehler = {3}“.format(Anzahl_Iterationen, b, m, compute_error_for_line_given_points(b, m, points))
if __name__ == '__main__':
Lauf()
Code-Referenz
Dies ist eine visuelle Darstellung des Gradientensuchprogramms, bei dem die Probleme in der linearen Regression gelöst werden, indem die Punkte in einer einzigen Linie gezeichnet werden. Der Code ist eine Demonstration dessen, wie es funktioniert, und hilft, mehrere Punkte entlang einer Linie zu setzen. Der Gradientenabstieg versucht, die besten Werte für diese Parameter bezüglich einer Fehlerfunktion zu finden.
Der Code enthält eine eigentümliche Funktion mit der Bezeichnung „run“. Es hilft, einen Satz von Parametern zu definieren, die im Algorithmus verwendet werden, um einen ersten Satz von Vorhersagen basierend auf dem Verhalten der Variablen und der Liniensteigung zu treffen. Die anderen Faktoren betreffen die Anzahl der Iterationen, die erforderlich sind, um den Gradientenabstieg in dem unten gezeigten Format zu erreichen:
initial_b = 0 # Anfangsschätzung des y-Achsenabschnitts
initial_m = 0 # Schätzung der Anfangssteigung
num_iterations = 1000
Sie können leicht verstehen, dass die Verlaufsmethode recht einfach und unkompliziert ist. Sobald Sie seine Funktionsfähigkeit verstanden haben, müssen Sie sich nur noch auf die Kosten der Funktion konzentrieren, die Sie optimieren möchten.

Das Ziel besteht darin, kontinuierliche Anstrengungen zu unternehmen, um verschiedene Iterationen für jeden der Werte der Variablen durchzuführen, ihre Kosten zu bewerten und neue Variablen zu erstellen, die bessere und niedrigere Kosten im Programm einleiten würden.
Muss gelesen werden: Interviewfragen zum maschinellen Lernen
Tipps für den Gradientenabstieg
1. Lernrate
Das Optimierungsprotokoll hilft, den Wert der Lernrate auch bei kleineren Dezimalstellen zu reduzieren, verschiedene für die Plattform geeignete Werte zu mischen und sich dann für den besten Arbeitswert zu entscheiden. Das Lernen kann viel schneller und fruchtbarer sein, um dies zu erreichen, stellen Sie sicher, dass Sie die Anzahl der Durchgänge durch jeden Datensatz begrenzen. Die ideale Zahl liegt zwischen 1 und 10.
2. Zeichnen Sie die mittleren Kosten
Die Trainingszeit für jede Datensatzinstanz kann aufgrund der zusätzlichen Zeit, die während der Ausführung des Algorithmus benötigt wird, zu einer Verzögerung führen. Wählen Sie für bessere Ergebnisse den Durchschnitt über 100 oder 1000, um bessere Chancen zu haben, einen besseren Lerntrend für den Algorithmus zu finden.
Zusammenfassung
In diesem Artikel haben Sie etwas über Gradienten gelernt und wie Sie einen solchen Algorithmus erstellen. Dies hilft, mit einem erlernten Regressionsmodell präzisere und effektivere Vorhersagen zu treffen. Melden Sie sich bei upGrad an, um auf einer viel umfassenderen und tieferen Ebene reale Fallbeispiele zu verstehen. Wir bieten kuratierte Kurse an, die speziell für angehende Data Scientists und Bewerber für maschinelles Lernen strukturiert sind.