Lineare Regression unter Verwendung der Gradientenabstiegsmethode [Erklärt mit Codierungsbeispiel]

Veröffentlicht: 2020-12-21

Maschinelles 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.

Führen Sie die KI-gesteuerte technologische Revolution an

PG DIPLOM IN MASCHINELLEM LERNEN UND KÜNSTLICHER INTELLIGENZ
Erfahren Sie mehr