Menu
CoddyTech

Régularisation

Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 34 sur 58.

Un modèle linéaire en surapprentissage s’appuie sur de grands poids pour s’ajuster à chaque ligne bruitée. La régression Ridge pénalise les grands poids, et alpha en fixe le coût.

Voici 20 guitares d’occasion, six caractéristiques mises à l’échelle prédisant le prix :

Six lignes, un poids par caractéristique de guitare, en fonction de alpha de 0.01 à 1000. L’état commence à 116, la marque à 104, l’âge à moins 83 ; toutes tendent vers 0 quand alpha augmente

Il suffit d’un échange par rapport à LinearRegression, dont les poids étaient [-83. 116. 104. 27. 17. 15.] :

from sklearn.linear_model import Ridge

ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))

Cela affiche :

[-14.  18.  16.  10.   5.   8.]

Plus alpha est grand, plus les poids sont petits et moins il y a de surapprentissage. S'il est trop grand, le modèle est en sous-apprentissage.

challenge icon

Défi

Moyen

Un site de vacances prédit le prix par nuit des cottages à partir de 8 caractéristiques, en utilisant seulement 16 cottages. Le programme lit alpha ; le code de départ divise et met les données à l’échelle.

  1. Ajustez un modèle LinearRegression et un modèle Ridge avec cette valeur de alpha.
  2. Affichez la somme des poids de chaque modèle : la somme de leurs poids sans signe, arrondie.
  3. Affichez le R carré de chaque modèle sur le jeu de test (3 décimales), ainsi que le meilleur modèle, comme ci-dessous.

Pour une autre région et 5 :

Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridge

Essayez vous-même

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score

alpha = float(input())

# Ne modifiez pas les lignes ci-dessous : 28 maisons de vacances, 8 caractéristiques et le prix par nuit en euros
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Apprentissage supervisé

Entraînez-vous par vous-même : Compilateur Python en ligne