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 :
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.
Défi
MoyenUn 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.
- Ajustez un modèle
LinearRegressionet un modèleRidgeavec cette valeur dealpha. - Affichez la somme des poids de chaque modèle : la somme de leurs poids sans signe, arrondie.
- 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: ridgeEssayez 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
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é
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam7Surapprentissage
Sous-apprentissage et surapprentissageCourbes d’apprentissageRégularisationEnsembles de validationRécapitulatif : régler un arbre2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêtEntraînez-vous par vous-même : Compilateur Python en ligne