Scikit Learn - LASSO
LASSO (Opérateur de retrait et de sélection le moins absolu)
LASSO est la technique de régularisation qui effectue la régularisation L1. Il modifie la fonction de perte en ajoutant la pénalité (quantité de retrait) équivalente à la sommation de la valeur absolue des coefficients.
$$ \ displaystyle \ sum \ limits_ {j = 1} ^ m \ left (Y_ {i} -W_ {0} - \ displaystyle \ sum \ limits_ {i = 1} ^ nW_ {i} X_ {ji} \ right ) ^ {2} + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ n | W_i | = loss _ {-} function + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ n | W_i | $$sklearn.linear_model. Le lasso est un modèle linéaire, avec un terme de régularisation ajouté, utilisé pour estimer les coefficients clairsemés.
Paramètres
Le tableau suivant comprend les paramètres utilisés par Lasso module -
Sr. Non | Paramètre et description |
---|---|
1 | alpha - float, facultatif, par défaut = 1.0 Alpha, la constante qui multiplie le terme L1, est le paramètre de réglage qui décide à quel point nous voulons pénaliser le modèle. La valeur par défaut est 1.0. |
2 | fit_intercept- Booléen, facultatif. Valeur par défaut = True Ce paramètre spécifie qu'une constante (biais ou interception) doit être ajoutée à la fonction de décision. Aucune interception ne sera utilisée dans le calcul, si elle est définie sur false. |
3 | tol - flotteur, en option Ce paramètre représente la tolérance pour l'optimisation. letol la valeur et les mises à jour seraient comparées et si des mises à jour sont trouvées plus petites que tol, l'optimisation vérifie le double écart pour l'optimalité et continue jusqu'à ce qu'il soit inférieur à tol. |
4 | normalize - Booléen, facultatif, par défaut = False Si ce paramètre est défini sur True, le régresseur X sera normalisé avant la régression. La normalisation se fera en soustrayant la moyenne et en la divisant par la norme L2. Sifit_intercept = False, ce paramètre sera ignoré. |
5 | copy_X - Booléen, facultatif, par défaut = True Par défaut, il est vrai, ce qui signifie que X sera copié. Mais s'il est défini sur false, X peut être écrasé. |
6 | max_iter - int, facultatif Comme son nom l'indique, il représente le nombre maximum d'itérations prises pour les solveurs de gradient conjugués. |
sept | precompute - True | False | de type tableau, par défaut = False Avec ce paramètre, nous pouvons décider d'utiliser ou non une matrice de Gram précalculée pour accélérer le calcul. |
8 | warm_start - booléen, facultatif, par défaut = faux Avec ce paramètre défini sur True, nous pouvons réutiliser la solution de l'appel précédent pour l'ajuster comme initialisation. Si nous choisissons default ie false, cela effacera la solution précédente. |
9 | random_state - int, instance RandomState ou None, facultatif, par défaut = aucun Ce paramètre représente la graine du nombre pseudo aléatoire généré qui est utilisé lors du brassage des données. Voici les options -
|
dix | selection - str, par défaut = 'cyclique'
|
Les attributs
Le tableau suivant comprend les attributs utilisés par Lasso module -
Sr. Non | Attributs et description |
---|---|
1 | coef_ - tableau, forme (n_features,) ou (n_target, n_features) Cet attribut fournit les vecteurs de poids. |
2 | Intercept_- flotteur | tableau, forme = (n_targets) Il représente le terme indépendant dans la fonction de décision. |
3 | n_iter_ - forme int ou de type tableau (n_targets) Il donne le nombre d'itérations exécutées par le solveur de descente de coordonnées pour atteindre la tolérance spécifiée. |
Exemple d'implémentation
Le script Python suivant utilise le modèle Lasso qui utilise en outre la descente de coordonnées comme algorithme pour ajuster les coefficients -
from sklearn import linear_model
Lreg = linear_model.Lasso(alpha = 0.5)
Lreg.fit([[0,0], [1, 1], [2, 2]], [0, 1, 2])
Production
Lasso(alpha = 0.5, 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)
Exemple
Maintenant, une fois ajusté, le modèle peut prédire de nouvelles valeurs comme suit -
Lreg.predict([[0,1]])
Production
array([0.75])
Exemple
Pour l'exemple ci-dessus, nous pouvons obtenir le vecteur de poids à l'aide du script python suivant -
Lreg.coef_
Production
array([0.25, 0. ])
Exemple
De même, nous pouvons obtenir la valeur de l'interception à l'aide du script python suivant -
Lreg.intercept_
Production
0.75
Exemple
Nous pouvons obtenir le nombre total d'itérations pour obtenir la tolérance spécifiée à l'aide du script python suivant -
Lreg.n_iter_
Production
2
Nous pouvons modifier les valeurs des paramètres pour obtenir la sortie souhaitée du modèle.