Die Regularisierung beim maschinellen Lernen ist eines der effektivsten Werkzeuge zur Verbesserung der Zuverlässigkeit Ihrer Modelle für maschinelles Lernen. Es hilft, eine Überanpassung zu verhindern und stellt sicher, dass Ihre Modelle nicht nur bei den Daten, die sie gesehen haben, sondern auch bei neuen, unsichtbaren Daten eine gute Leistung erbringen.

Wenn Sie die Regularisierung beim maschinellen Lernen verstehen, können Sie:

  • Identifizieren Sie, wann Ihre Modelle von der Regularisierung profitieren könnten
  • Verwenden L1 (Lasso) und L2 (Ridge-)Regularisierung effektiv
  • Hebelwirkung Elastisches Netz für komplexe Datensätze
  • Optimieren Sie die Modellleistung mit diesen Techniken

Wir gehen davon aus, dass Sie bereits mit den Grundlagen des maschinellen Lernens, insbesondere der linearen Regression, vertraut sind. Aber wenn Sie gerade erst anfangen oder eine Auffrischung benötigen, ist unser Maschinelles Lernen in Python Der Talent Path ist ein großartiger Ort, um ein starkes Fundament aufzubauen.

Warum Fashions überfit sind und wie man dagegen vorgeht

Überanpassung tritt auf, wenn ein Modell für maschinelles Lernen die Trainingsdaten, einschließlich ihres Rauschens und kleinerer Particulars, zu intestine lernt. Dies führt zu einem Modell, das bei den Trainingsdaten eine hervorragende Leistung erbringt, sich aber nur schwer auf neue, noch nie gesehene Daten übertragen lässt.

Sie können dieses Verhalten in der folgenden Grafik sehen:

Training vs. Validierungsverlust in Modellen für maschinelles LernenTraining vs. Validierungsverlust in Modellen für maschinelles Lernen

Die Minimierung von Trainingsverlusten scheint das ultimative Ziel zu sein, aber das ist nicht die ganze Geschichte. Wenn der Trainingsverlust abnimmt, steigt der Validierungsverlust häufig ab einem bestimmten Punkt an. Dieser Development weist darauf hin, dass das Modell zu komplex wird und nicht nur die zugrunde liegenden Muster, sondern auch das Rauschen in den Trainingsdaten erfasst. Daher fällt es ihm schwer, auf neue Daten zu verallgemeinern.

Andererseits ist das Modell im Bereich mit hoher Abweichung des Diagramms zu einfach, um die Komplexität der Daten zu erfassen. Dies führt zu hohen Trainings- und Validierungsverlusten, die sehr ähnlich sind, was auf eine Unteranpassung hinweist. Obwohl zwischen den beiden Verlusten keine Lücke besteht, bleibt die Gesamtleistung schlecht, da das Modell nicht in der Lage ist, die zugrunde liegenden Muster in den Daten zu lernen.

Die Verhinderung einer Überanpassung ist entscheidend für die Erstellung von Modellen für maschinelles Lernen, die bei unsichtbaren Daten eine gute Leistung erbringen. Als nächstes werden wir untersuchen, wie die Regularisierung dazu beiträgt, dieses Gleichgewicht zu erreichen, und welche Techniken Sie verwenden können, um es effektiv anzuwenden.

Was ist Regularisierung beim maschinellen Lernen?

Durch die Regularisierung wird ein Modell eingeschränkt, um eine Überanpassung zu verhindern, indem große Koeffizientenwerte bestraft werden. Bei einigen Techniken werden die Koeffizienten auf Null reduziert. Wenn ein Modell unter Überanpassung leidet, sollten wir die Komplexität des Modells kontrollieren. Technisch gesehen vermeidet die Regularisierung eine Überanpassung, indem sie eine Strafe zur Verlustfunktion des Modells hinzufügt:

$$textual content{Regularisierung = Verlustfunktion + Strafe}$$

Es gibt drei häufig verwendete Regularisierungstechniken, um die Komplexität maschineller Lernmodelle zu kontrollieren:

  • L2-Regularisierung
  • L1-Regularisierung
  • Elastisches Netz

Lassen Sie uns diese Standardtechniken im Element besprechen.

L2-Regularisierung

Ein lineares Regressionsmodell, das die L2-Regularisierungstechnik verwendet, wird aufgerufen Gratregression. Tatsächlich wird der Kostenfunktion ein Strafterm hinzugefügt, der die Größe der Gewichte (Koeffizienten) des Modells verringert, ohne sie auf Null zu setzen. Dies regt das Modell dazu an, den Einfluss gleichmäßiger auf die Options zu verteilen, was dazu beiträgt, eine Überanpassung zu verhindern und gleichzeitig so viel Vorhersagekraft wie möglich beizubehalten.

$$textual content{Ridge-Regression-Kostenfunktion} = textual content{Verlustfunktion} + frac{1}{2} lambda sum_{j=1}^m w_j^2$$

Hier steuert $lambda$ die Stärke der Regularisierung und $w_j$ sind die Gewichte (Koeffizienten) des Modells. Durch Erhöhen von $lambda$ wird eine stärkere Regularisierung angewendet und die Koeffizienten weiter verkleinert, was eine Überanpassung verringern kann, aber zu einer Unteranpassung führen kann, wenn $lambda$ zu groß ist. Wenn umgekehrt $lambda$ nahe bei $0$ liegt, hat der Regularisierungsterm nur geringe Auswirkungen und die Ridge-Regression verhält sich wie eine gewöhnliche lineare Regression.

Die Ridge-Regression trägt dazu bei, ein Gleichgewicht zwischen Bias und Varianz zu finden und verbessert die Fähigkeit des Modells, auf unsichtbare Daten zu verallgemeinern, indem der Einfluss weniger wichtiger Merkmale kontrolliert wird.

L1-Regularisierung

LOst Absolut SSchrumpfung und SWahl OBetreiber (Lasso) Regression ist eine Different zur Ridge-Regression zur Regularisierung linearer Modelle. Es fügt der Kostenfunktion einen Strafterm hinzu, der als L1-Regularisierung bekannt ist und die Sparsity fördert, indem einige Koeffizienten auf genau Null schrumpfen. Dadurch werden die unwichtigsten Merkmale praktisch ignoriert und die wichtigsten Prädiktoren des Modells hervorgehoben.

$$textual content{Lasso-Regressionskostenfunktion} = textual content{Verlustfunktion} + lambda sum_{j=1}^m |w_j|$$

Hier steuert $lambda$ die Stärke der Regularisierung, wobei größere Werte die Koeffizienten stärker benachteiligen, und $w_j$ stellt die Gewichte (Koeffizienten) des Modells dar.

Durch die Eliminierung weniger wichtiger Merkmale führt die Lasso-Regression eine automatische Merkmalsauswahl durch, wodurch das Modell vereinfacht und die Interpretierbarkeit verbessert wird.

Elastisches Netz

Das Elastic Internet ist eine regulierte Regressionstechnik, die die Regularisierungsterme von Ridge und Lasso kombiniert. Der Parameter $r$ steuert das Kombinationsverhältnis. Wenn $r=1$, wird der L2-Time period entfernt, und wenn $r=0$, wird der L1-Time period entfernt.

$$textual content{Elastische Nettokostenfunktion} = textual content{Verlustfunktion} + lambda left( r sum_{j=1}^m |w_j| + frac{(1 – r)}{2} sum_{j=1}^m w_j^2 proper)$$

Obwohl die Kombination der Strafen von Lasso und Ridge normalerweise besser funktioniert als nur die Verwendung einer der Regularisierungstechniken, ist die Anpassung zweier Parameter, $lambda$ und $r$, etwas schwierig.

Demonstration von Regularisierungstechniken mit Python

In diesem Abschnitt wenden wir die drei oben genannten Regularisierungstechniken auf den Boston Housing-Datensatz an und vergleichen den Trainingssatz-Rating und den Testsatz-Rating vor und nach der Verwendung dieser Techniken.

Laden wir zunächst den Datensatz und teilen ihn wie folgt in einen Trainingssatz und einen Testsatz auf:

import mglearn as ml
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from numpy import genfromtxt

dataset = genfromtxt('https://uncooked.githubusercontent.com/datatweets/tutorials/refs/heads/foremost/misc/boston_housing.csv', delimiter=',')
X = dataset(:,:-1)
y = dataset(:,-1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

Jetzt können wir das lineare Regressionsmodell trainieren und dann den Trainingssatz-Rating und den Testsatz-Rating ausdrucken:

lr = LinearRegression().match(X_train, y_train)

print(f"Linear Regression-Coaching set rating: {lr.rating(X_train, y_train):.2f}")
print(f"Linear Regression-Check set rating: {lr.rating(X_test, y_test):.2f}")
    Linear Regression-Coaching set rating: 0.95
    Linear Regression-Check set rating: 0.61

Ein Vergleich der Modellleistung auf dem Trainingssatz und dem Testsatz zeigt, dass das Modell an einer Überanpassung leidet.

Anwenden der L2-Regularisierung

Um eine Überanpassung zu vermeiden und die Komplexität des Modells zu kontrollieren, verwenden wir die Ridge-Regression (L2-Regularisierung) und sehen, wie intestine sie im Datensatz funktioniert:

from sklearn.linear_model import Ridge

ridge = Ridge(alpha=0.7).match(X_train, y_train)
print(f"Ridge Regression-Coaching set rating: {ridge.rating(X_train, y_train):.2f}")
print(f"Ridge Regression-Check set rating: {ridge.rating(X_test, y_test):.2f}")
    Ridge Regression-Coaching set rating: 0.90
    Ridge Regression-Check set rating: 0.76

Obwohl der Trainingssatzwert der Ridge-Regression etwas niedriger ist als der Trainingswert der linearen Regression, ist der Testsatzwert des Ridge deutlich höher als der Testsatzwert der linearen Regression. Diese Ergebnisse bestätigen, dass die Ridge-Regression die Komplexität des Modells verringert, was zu einem weniger überangepassten, aber allgemeineren Modell führt.

Der alpha Der Parameter gibt einen Kompromiss zwischen der Leistung des Modells auf dem Trainingssatz und seiner Einfachheit an. Additionally, Erhöhung der alpha Der Wert (der Standardwert ist 1,0) vereinfacht das Modell durch Verkleinern der Koeffizienten.

Anwenden der L1-Regularisierung

Wenden wir nun die Lasso-Regression (L1-Regularisierung) auf den Datensatz an und untersuchen die Ergebnisse.

from sklearn.linear_model import Lasso

lasso = Lasso(alpha=1.0).match(X_train, y_train)
print(f"Lasso Regression-Coaching set rating: {lasso.rating(X_train, y_train):.2f}")
print(f"Lasso Regression-Check set rating: {lasso.rating(X_test, y_test):.2f}")
    Lasso Regression-Coaching set rating: 0.29
    Lasso Regression-Check set rating: 0.21

Wie gezeigt, schneidet das Lasso ziemlich enttäuschend ab, und das ist ein Zeichen für unzureichende Anpassung. Das Lasso-Modell funktioniert nicht intestine, da die meisten Koeffizienten genau Null geworden sind. Wenn wir die genaue Anzahl der im Modell verwendeten Options wissen möchten, können wir den folgenden Code verwenden:

print(f"Variety of options: {sum(lasso.coef_ != 0)}")
    Variety of options: 4

Dies bedeutet, dass nur 4 der 104 Merkmale im Trainingssatz im Lasso-Regressionsmodell verwendet werden, während der Relaxation ignoriert wird.

Ändern des Werts von alpha

Passen wir uns an alpha um die Unteranpassung zu reduzieren, indem der Wert auf 0,01 verringert wird:

lasso = Lasso(alpha=0.01).match(X_train, y_train)
print("Lasso Regression-Coaching set rating: {:.2f}".format(lasso.rating(X_train, y_train)))
print("Lasso Regression-Check set rating: {:.2f}".format(lasso.rating(X_test, y_test)))
    Lasso Regression-Coaching set rating: 0.90
    Lasso Regression-Check set rating: 0.77

Das erneute Ausführen des folgenden Codes zeigt dies durch Verringern alphaDas Lasso-Modell verwendet 32 ​​der 104 Funktionen:

print(f"Variety of options: {sum(lasso.coef_ != 0)}")
    Variety of options: 32

Obwohl wir reduzieren können alpha mehr noch, es scheint, dass sein optimaler Wert bei etwa liegt 0.01.

Anwenden der Elastic-Internet-Regularisierung

Die letzte Technik, die wir verwenden werden, ist das elastische Netz. Mal sehen, wie intestine es funktioniert.

from sklearn.linear_model import ElasticNet

elastic_net = ElasticNet(alpha=0.01, l1_ratio=0.01).match(X_train, y_train)
print(f"Elastic Internet-Coaching set rating: {elastic_net.rating(X_train, y_train):.2f}")
print(f"Elastic Internet-Check set rating: {elastic_net.rating(X_test, y_test):.2f}")
    Elastic Internet-Coaching set rating: 0.84
    Elastic Internet-Check set rating: 0.70

NOTIZ

Um eine Überanpassung zu vermeiden, sind die regulierten Modelle im Allgemeinen einem einfachen linearen Regressionsmodell vorzuziehen. In den meisten Szenarien funktioniert Ridge intestine. Wenn Sie sich jedoch bei der Verwendung von Lasso oder elastischem Netz nicht sicher sind, ist elastisches Netz die bessere Wahl, da das Lasso, wie wir gesehen haben, stark korrelierte Merkmale entfernt.


Nächste Schritte

Heute haben wir drei verschiedene Möglichkeiten untersucht, um eine Überanpassung durch die Implementierung der Regularisierung beim maschinellen Lernen zu vermeiden. Wir haben besprochen, warum es zu Überanpassung kommt und was wir dagegen tun können. Dann haben wir uns angesehen, was Ridge-, Lasso- und elastische Netzregressionsmethoden sind. Wir haben diese Techniken auch auf den Bostoner Wohnungsdatensatz angewendet und die Ergebnisse verglichen. Einige andere Techniken, die Sie vielleicht ausprobieren möchten, sind: frühes Anhalten Und ausfallen die zur Regularisierung komplexer Modelle verwendet werden kann. Bedenken Sie, dass Dropout hauptsächlich zur Regularisierung künstlicher neuronaler Netze verwendet wird.

Ich hoffe, dass Sie heute etwas Neues gelernt haben. Nehmen Sie gerne Kontakt mit mir auf LinkedIn oder Twitter.



Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert