Python: Anwendung des überwachten Lernens (Rückkehr)

Verallgemeinerung des Modells

Was ist Verallgemeinerung?

Der Ansatz zur Verhinderung von Überlernen ist die Verallgemeinerung. Durch die Erstellung eines Modells, das sich der Verallgemeinerung bewusst ist, passt es nicht zu sehr zu den für das Training verwendeten Daten Sie können allgemeine Fälle bearbeiten.

Der Zweck der Regressionsanalyse besteht darin, ein Modell aus historischen Daten zu trainieren und unbekannte Daten vorherzusagen. Die Basis besteht darin, das Modell so einzustellen, dass Werte unter Verwendung historischer Daten vorhergesagt werden.

Historische Daten erklären jedoch Ereignisse wie Aktienkursschwankungen und Verkaufsschwankungen nicht vollständig. Es gibt eine Reihe von Datenvorhersagen, und selbst wenn die von Ihnen eingegebenen Daten identisch sind, können sich die tatsächlichen Ergebnisse ändern.

Übermäßiges Vertrauen in frühere Daten, wie z. B. Überlernen, führt zu einem Fehler bei der Datenvorhersage Dies kann dazu führen, dass die Vorhersagegenauigkeit abnimmt.

image.png

Regulierung

Bei der linearen Regression wird die Regularisierung als Generalisierungsmethode verwendet. Die Regularisierung bezieht sich auf die Komplexität der Beziehungen zwischen den vom Modell geschätzten Daten für das Modell, das die Regressionsanalyse durchführt. Es ist ein Ansatz, der versucht, die Beziehungen zwischen den vom Modell geschätzten Daten durch Hinzufügen von Strafen zu verallgemeinern.

L1-Regularisierung und L2-Regularisierung werden häufig als Regularisierung verwendet.

L1-Regularisierung

Dies ist eine Methode zur Reduzierung des Koeffizienten. Indem der Koeffizient für "Daten, die Vorhersagen nicht leicht beeinflussen" nahe Null gebracht wird Es ist eine Technik, mit der Sie ein spärliches Modell erhalten können. Dies ist nützlich, wenn Sie eine Regressionsanalyse von Daten durchführen, die viele zusätzliche Informationen als Daten enthalten. Es kann auch als Feature-Reduktionsmethode verwendet werden.

L2-Regularisierung

Es ist sozusagen die obere Grenzwerteinstellung des Koeffizienten. Es ist eine Methode zum Begrenzen der Größe des Koeffizienten, damit er nicht zu groß wird, und wird verwendet, um das Überlernen zu unterdrücken. Es wird gesagt, dass es einfach ist, ein glattes Modell zu erhalten (leicht zu verallgemeinern), da der Koeffizient, der als Ergebnis des Lernens erhalten wird, nicht unnatürlich ansteigt. Es gibt eine Funktion.

image.png

Die L1-Regularisierung und die L2-Regularisierung können wie in der Abbildung gezeigt vorgestellt werden. Der grün dargestellte Teil ist die Bedingung für die Regularisierung, und die blaue Konturlinie ist die Verlustfunktion, wenn keine Regularisierung durchgeführt wird.

Ohne Regularisierung konvergieren die Koeffizienten w1w1 und w2w2 gegen die Positionen der blauen Kreise. Wenn jedoch eine Regularisierung durchgeführt wird, ist es notwendig, sich dem grünen Teil als Bedingung zu nähern, also dem Koeffizienten w1w1 und w2w2 konvergieren jetzt genau zum richtigen Punkt (orangefarbener Punkt).

Wie oben erläutert, konvergiert die Figur unter Verwendung der L1-Regularisierung zum Punkt w1 = 0 w1 = 0. Bei Verwendung der L2-Regularisierung sind sowohl w1w1 als auch w2w2 kleiner als die blauen Punkte.

Lasso kehrt zurück

Die Lasso-Regression ist ein Regressionsmodell, das geeignete Parameter für die lineare Regression festlegt, während die L1-Regularisierung durchgeführt wird.

Beim maschinellen Lernen kann es für Menschen schwierig sein, die Beziehung zwischen den für die Vorhersage verwendeten Daten zu erkennen. Bei der L1-Regularisierung, wenn eine Regressionsanalyse von Daten durchgeführt wird, die viele zusätzliche Informationen als Daten enthalten Ich bestätigte, dass es nützlich sein würde. Wenn daher die Anzahl der Parameter (Anzahl der Spalten) größer ist als die Anzahl der Datensätze (Anzahl der Zeilen), Es ist besser, die Lasso-Regression zu verwenden.

# scikit-linear lernen_Lasso im Modellmodul()Ist das Modell der Lasso-Regression.

from sklearn.linear_model import Lasso
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=100, n_informative=60, n_targets=1, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

model = Lasso()
model.fit(train_X, train_y)
print(model.score(test_X, test_y))
#Ausgabeergebnis
0.967921092594
Der linearen Regression
model =LinearRegression()Zu
model = Lasso()Wechseln Sie einfach zu und Sie können mit Lasso-Regression analysieren.

Ridge kehrt zurück

Die Ridge-Regression ist ein Regressionsmodell, das geeignete Parameter für die lineare Regression festlegt, während die L2-Regularisierung durchgeführt wird.

Die Ridge-Regression hat die Eigenschaft, dass es einfacher ist, ein glatteres Modell zu erhalten (zu verallgemeinern) als ein einfaches lineares Regressionsmodell.

Im linear_model-Modul von scikit-learn

Ridge()Ist das Modell der Gratregression.

Die Implementierungsmethode ist genau die gleiche wie das einfache lineare Regressionsmodell und die Lasso-Regression. Ersetzen Sie einfach den Modellnamen.

from sklearn.linear_model import Ridge
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=50, n_informative=50, n_targets=1, noise=100.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

model = Ridge()
model.fit(train_X, train_y)
print(model.score(test_X, test_y))
#Ausgabeergebnis
0.90786283239

ElasticNet-Regression

Die ElasticNet-Regression ist ein Modell, das die Lasso-Regression und die Ridge-Regression kombiniert, um einen Regularisierungsterm zu erstellen.

Als Verdienst Der Punkt, an dem Informationen nach Daten sortiert werden, die viele zusätzliche Informationen enthalten, die von der Lasso-Regression verarbeitet werden Weil es eine Kombination von Punkten ist, die es einfach macht, das glatte Modell zu erhalten (zu verallgemeinern), das in der Gratregression behandelt wird. Dies ist die beste Methode, wenn Sie ein Modell erstellen möchten, das die Vorzüge beider Modelle in Einklang bringt.

from sklearn.linear_model import ElasticNet

model = ElasticNet()
#Außerdem Scikit-lerne ElasticNet()Zu l1_Sie können ein Argument namens ratio angeben.

model = ElasticNet(l1_ratio=0.3)

#Mit den obigen Einstellungen können Sie das Verhältnis von L1-Regularisierung und L2-Regularisierung festlegen.
#In den obigen Fällen wird gezeigt, dass die L1-Regularisierung zu 30% und die L2-Regularisierung zu 70% wirksam ist.
#(Wenn nicht angegeben, wird es im ElasticNet-Regressionsmodell von genau der Hälfte und der Hälfte angegeben.)

Zusammenfassung der Regression


from sklearn.linear_model import Ridge
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.linear_model import ElasticNet

#Daten generieren
X, y = make_regression(n_samples=100, n_features=50, n_informative=50, n_targets=1, noise=100.0, random_state=42)
train_X, test_X, train_y, test_y = train_test_split(X, y, random_state=42)

#① Lineare Regression
model = LinearRegression()
model.fit(train_X,train_y)


# test_X, test_Geben Sie den Entscheidungskoeffizienten für y aus
print("Lineare Regression:{}".format(model.score(test_X, test_y)))


#② Kehre zu Lasso zurück(L1-Regularisierung)
model = Lasso().fit(train_X,train_y)

# test_X, test_Geben Sie den Entscheidungskoeffizienten für y aus
print("Lasso kehrt zurück:{}".format(model.score(test_X, test_y)))

#③ Ridge Rückkehr(L2-Regularisierung)
model = Ridge()
model.fit(train_X,train_y)

# test_X, test_Geben Sie den Entscheidungskoeffizienten für y aus
print("Ridge kehrt zurück:{}".format(model.score(test_X, test_y)))

#④ Elastische Nettorendite(Regularisierung von L1 und L2)

model = ElasticNet()
#Außerdem Scikit-lerne ElasticNet()Zu l1_Sie können ein Argument namens ratio angeben.

model = ElasticNet(l1_ratio=0.3)
#Es zeigt, dass die L1-Regularisierung zu 30% und die L2-Regularisierung zu 70% wirksam ist.

Recommended Posts

Python: Anwendung des überwachten Lernens (Rückkehr)
Python: Überwachtes Lernen (Rückkehr)
Lernen mit einem Lehrer (Rückkehr) 1 Grundlagen
Anwendung von Python 3 vars
Python: Überwachtes Lernen (Klassifizierung)
Grundlagen des Lernens mit einem Lehrer Teil 1 - Einfache Regression - (Hinweis)
Grundlagen des Lernens mit einem Lehrer Teil 3 - Multiple Regression (Implementierung) - (Anmerkungen) -
Maschinelles Lernen: Überwacht - Lineare Regression
Python: Überwachtes Lernen: Hyperparameter Teil 1
Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Python: Überwachtes Lernen: Hyperparameter Teil 2
Lernen mit dem Lehrer (Rückkehr) 2 Advanced Edition
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Python lernen
[Lernnotiz] Grundlagen des Unterrichts mit Python
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Notizen vom Anfang von Python 1 lernen
Python: Anwendung der Bilderkennung mit CNN
[Python] Webanwendungsdesign für maschinelles Lernen
Notizen vom Anfang von Python 2 lernen
[Python] Lernnotiz 1
Python-Lernnotizen
Python-Lernausgabe
Python-Lernseite
Python-Grundlagen ①
Grundlagen von Python ①
Python-Lerntag 4
Kopie von Python
Python Deep Learning
Python-Lernen (Ergänzung)
Betreutes Lernen (Klassifizierung)
Deep Learning × Python
Python-Lernnotizen
Einführung von Python
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
Die Geschichte, dass die Lernkosten von Python niedrig sind
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
"Lineare Regression" und "Probabilistische Version der linearen Regression" in Python "Bayes lineare Regression"
[Python] Operation der Aufzählung
Liste der Python-Module
Python lernen mit ChemTHEATER 03
Mayungos Python-Lernhinweis: Liste der Geschichten und Links
Python-Modul (Python-Lernnotiz ④)
Erweitertes Lernen 1 Python-Installation
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Python lernen mit ChemTHEATER 05-1
Python: Deep Learning-Praxis
Python ~ Grammatikgeschwindigkeit lernen ~
Vereinheitlichung der Python-Umgebung
Kopie der Python-Einstellungen
Maschinelles Lernen: Betreut --AdaBoost
Tool MALSS (Anwendung), das maschinelles Lernen in Python unterstützt
Logistische Regression beim maschinellen Lernen
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Grundlagen der Python-Scraping-Grundlagen