Scikit Learn - Régression Ridge

La régression de crête ou régularisation de Tikhonov est la technique de régularisation qui effectue la régularisation L2. Il modifie la fonction de perte en ajoutant la pénalité (quantité de retrait) équivalente au carré de la grandeur 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} ^ nW_i ^ 2 = loss _ {-} function + \ alpha \ displaystyle \ sum \ limits_ {i = 1} ^ nW_i ^ 2 $$
  • sklearn.linear_model.Ridge est le module utilisé pour résoudre un modèle de régression où la fonction de perte est la fonction des moindres carrés linéaires et la régularisation est L2.

Paramètres

Le tableau suivant comprend les paramètres utilisés par Ridge module -

Sr. Non Paramètre et description
1

alpha - {float, en forme de tableau}, forme (n_targets)

Alpha est le paramètre de réglage qui décide à quel point nous voulons pénaliser le modèle.

2

fit_intercept - Booléen

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 - float, facultatif, par défaut = 1e-4

Il représente la précision de la solution.

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

solver - str, {'auto', 'svd', 'cholesky', 'lsqr', 'sparse_cg', 'sag', 'saga'} '

Ce paramètre représente le solveur à utiliser dans les routines de calcul. Voici les propriétés des options sous ce paramètre

  • auto - Il laisse choisir le solveur automatiquement en fonction du type de données.

  • svd - Afin de calculer les coefficients Ridge, ce paramètre utilise une décomposition en valeurs singulières de X.

  • cholesky - Ce paramètre utilise la norme scipy.linalg.solve() fonction pour obtenir une solution de forme fermée.

  • lsqr - Il est le plus rapide et utilise la routine des moindres carrés régularisée dédiée scipy.sparse.linalg.lsqr.

  • sag - Il utilise un processus itératif et une descente de gradient moyen stochastique.

  • saga - Il utilise également un processus itératif et une descente de gradient moyen stochastique améliorée.

8

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 -

  • int - Dans ce cas, random_state est la graine utilisée par le générateur de nombres aléatoires.

  • RandomState instance - Dans ce cas, random_state est le générateur de nombres aléatoires.

  • None - Dans ce cas, le générateur de nombres aléatoires est l'instance RandonState utilisée par np.random.

Les attributs

Le tableau suivant comprend les attributs utilisés par Ridge 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_ - tableau ou Aucun, forme (n_targets)

Disponible uniquement pour les solveurs 'sag' et 'lsqr', renvoie le nombre réel d'itérations pour chaque cible.

Exemple d'implémentation

Le script Python suivant fournit un exemple simple d'implémentation de Ridge Regression. Nous utilisons 15 échantillons et 10 fonctionnalités. La valeur de alpha est de 0,5 dans notre cas. Il existe deux méthodes à savoirfit() et score() utilisé pour ajuster ce modèle et calculer le score respectivement.

from sklearn.linear_model import Ridge
import numpy as np
n_samples, n_features = 15, 10
rng = np.random.RandomState(0)
y = rng.randn(n_samples)
X = rng.randn(n_samples, n_features)
rdg = Ridge(alpha = 0.5)
rdg.fit(X, y)
rdg.score(X,y)

Production

0.76294987

La sortie montre que le modèle de régression de crête ci-dessus a donné un score d'environ 76%. Pour plus de précision, nous pouvons augmenter le nombre d'échantillons et de fonctionnalités.

Exemple

Pour l'exemple ci-dessus, nous pouvons obtenir le vecteur de poids à l'aide du script python suivant -

rdg.coef_

Production

array([ 0.32720254, -0.34503436, -0.2913278 , 0.2693125 , -0.22832508,
   -0.8635094 , -0.17079403, -0.36288055, -0.17241081, -0.43136046])

Exemple

De même, nous pouvons obtenir la valeur de l'interception à l'aide du script python suivant -

rdg.intercept_

Production

0.527486