Das Update hörte für eine Weile auf und der Blog starb, aber ich dachte wieder, dass ich aufschreiben musste, was ich tat, was ich recherchierte und was ich dachte, also werde ich es hart schreiben. Tsukkomi etc. sind willkommen, aber bitte seien Sie nett zu uns.
Die Abkürzung ist GLM (Generalized Liner Model), ein Modell, das die lineare Regression erweitert, sodass andere Verteilungen als die Normalverteilung verarbeitet werden können.
Lasso ist eine Normalisierungstechnik zur Schätzung verallgemeinerter linearer Modelle. Für eine detaillierte Erklärung ist der unten stehende Link korrekt.
Lasso und Elastic Net für verallgemeinerte lineare Modelle
Sowohl Lasso als auch Ridge haben die Eigenschaft, dass eine spärliche Lösung erhalten werden kann, indem eine "Strafe" vorliegt, die die Größe des geschätzten Koeffizienten einschränkt.
Ich habe [zuvor] ein wenig über diesen Bereich geschrieben (http://qiita.com/ynakayama/items/9c5867b6947aa41e9229), aber da es sich um einen Reduktionsschätzer in Lasso handelt, wird davon ausgegangen, dass es Variablen gibt, die nicht verwendet werden. Der Lasso-Schätzer weist weniger Fehler auf als der übliche wahrscheinlichste Schätzer und liefert im Allgemeinen bessere Schätzungen und Vorhersagen als die Methode der kleinsten Quadrate.
Die Ridge-Regression ist auch eine Methode, um eine Strafe zu verhängen und die Lernbarkeit zu verhindern. Sie ist effektiv, wenn Sie die mehrfache Co-Linearität verhindern möchten, da eine starke Korrelation zwischen mehreren erklärenden Variablen besteht.
In Lasso ist die Implementierung durch scikit-learn wie folgt.
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
Hier möchten Sie ein einfaches Modell erstellen, indem Sie die Komplexität entfernen und einige ausgewählte erklärende Variablen eingeben.
Wenn der Regularisierungsterm λ 0 ist, entspricht er der Methode der kleinsten Quadrate. Wenn λ klein ist, ist die Strafe locker und kompliziert, und wenn sie groß ist, ist die Strafe schwerwiegend und das Modell ist einfach.
Als Methode zur Bestimmung des Regularisierungsterms wird Kreuztest verwendet ) Es gibt eine sogenannte Kreuzvalidierung.
sklearn implementiert Lasso und Ridge unter sklearn.linear_model.
Damit
import sklearn.linear_model as lm
Immerhin kann man es wie lm.Lasso nennen.
Lasso http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso
Beim Erstellen einer Lasso-Instanz gibt es einige Parameter.
Es ist wirklich das gleiche, also siehe die offizielle Seite über den obigen Link. Ich habe nur Folgendes verfolgt
from sklearn import linear_model
clf = linear_model.Lasso(alpha=0.1)
clf.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
#=> Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
# normalize=False, positive=False, precompute=False, random_state=None,
# selection='cyclic', tol=0.0001, warm_start=False)
print(clf.coef_)
#=> [ 0.85 0. ]
print(clf.intercept_)
#=> 0.15
Das Anpassen (Lernen) mit der Anpassungsmethode und die Vorhersage mit der Vorhersagemethode sind wie üblich.
Ridge http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge
from sklearn import linear_model
clf = linear_model.Ridge (alpha = .5)
clf.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
#=> Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
#=> normalize=False, solver='auto', tol=0.001)
clf.coef_
#=> array([ 0.34545455, 0.34545455])
clf.intercept_
#=> 0.13636...
from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 10, 5
np.random.seed(0)
y = np.random.randn(n_samples)
X = np.random.randn(n_samples, n_features)
clf = Ridge(alpha=1.0)
clf.fit(X, y)
#=> Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,
# normalize=False, solver='auto', tol=0.001)
Und für Scikit-Learn, Lasso-Kreuztest LassoCV und Lasso-Regression LassoRegression, auch [RidgeCV](http://scikit-learn.org/ Stable / Module / Generated / Sklearn.linear_model.RidgeCV.html # sklearn.linear_model.RidgeCV) und [RidgeRegression](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeClassifier.html#sklearn .linear_model.RidgeClassifier) Außerdem gibt es verschiedene Implementierungen von Lineares Modell. Schauen Sie sich also hier um. Wir werden jedoch die Parameter optimieren, um das geeignete Modell zu finden.
Diese Zeit ist vorbei.
Recommended Posts