La mise à jour s'est arrêtée pendant un moment et le blog était en train de mourir, mais j'ai pensé à nouveau que je devais écrire ce que je faisais, ce que je recherchais et ce que je pensais, alors je vais l'écrire dur. Tsukkomi etc. sont les bienvenus, mais soyez gentils avec nous.
L'abréviation est GLM (modèle de ligne généralisée), qui est un modèle qui étend la régression linéaire afin qu'il puisse gérer des distributions autres que la distribution normale.
Le lasso est une technique de normalisation pour estimer des modèles linéaires généralisés. Pour une explication détaillée, le lien ci-dessous est exact.
Lasso et Elastic Net pour les modèles linéaires généralisés
Lasso et Ridge ont tous deux la caractéristique qu'une solution clairsemée peut être obtenue en ayant une «pénalité» qui contraint la taille du coefficient estimé.
J'ai écrit un peu sur ce domaine avant, mais comme il s'agit d'un estimateur de réduction dans Lasso, on suppose qu'il y a des variables qui ne sont pas utilisées. L'estimateur Lasso a moins d'erreur que l'estimateur le plus probable habituel et donne généralement de meilleures estimations et prédictions que la méthode des moindres carrés.
La régression de crête est également une méthode pour effectuer une pénalité et empêcher l'apprentissage, et elle est efficace lorsque vous souhaitez éviter une colinéarité multiple car il existe une forte corrélation entre plusieurs variables explicatives.
Dans Lasso, l'implémentation par scikit-learn est la suivante.
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
C'est là que vous souhaitez créer un modèle simple en supprimant la complexité et en insérant quelques variables explicatives sélectionnées.
Si le terme de régularisation λ est 0, il correspond à la méthode des moindres carrés. Si λ est petit, la pénalité est lâche et compliquée, et si elle est grande, la pénalité est sévère et le modèle est simple.
Pour déterminer le terme de régularisation, Cross test Il existe une soi-disant validation croisée.
sklearn implémente Lasso et Ridge sous sklearn.linear_model.
Alors
import sklearn.linear_model as lm
Après tout, vous pouvez l'appeler comme lm.Lasso.
Lasso http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso
Il existe certains paramètres lors de la création d'une occurrence de Lasso.
C'est vraiment la même chose, alors veuillez consulter la page officielle à partir du lien ci-dessus. Je viens de tracer ce qui suit
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
L'ajustement (apprentissage) avec la méthode fit et la prédiction avec la méthode prédire sont comme d'habitude.
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)
Et pour scikit-learn, le test croisé Lasso LassoCV et la régression Lasso LassoRegression, également [RidgeCV](http://scikit-learn.org/ stable / modules / generated / sklearn.linear_model.RidgeCV.html # sklearn.linear_model.RidgeCV) et [RidgeRegression](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeClassifier.html#sklassifier.html .linear_model.RidgeClassifier) En outre, il existe différentes implémentations de Modèle linéaire, alors jetez un œil ici. Cependant, nous ajusterons les paramètres pour trouver le modèle approprié.
Cette fois, c'est fini.
Recommended Posts