Courbes d’apprentissage
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 33 sur 58.
Plus de données rendraient-elles votre modèle meilleur ? Une courbe d’apprentissage le montre : la précision sur l’ensemble de test à mesure que l’ensemble d’entraînement s’agrandit. Ici, un arbre profond sur des données à deux lunes :
L’arbre mémorise chaque jeu d’entraînement, et pourtant chaque ligne supplémentaire lui apprend quelque chose de réel. Les modèles flexibles tirent le meilleur parti des données.
Entraîne le modèle sur les premières n lignes d’entraînement, puis évalue-le à chaque fois sur les mêmes lignes de test :
sizes = [25, 50, 100, 200, 400, 800]
test_scores = []
for n in sizes:
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train[:n], y_train[:n])
test_scores.append(tree.score(X_test, y_test))
ax.plot(sizes, test_scores, marker="o")Vous grimpez encore au bord droit ? Plus de données aideront.
Défi
MoyenDavantage d’enregistrements aideraient-ils à distinguer deux espèces de chouettes ? Le code de départ répartit 600 cris et prépare les deux modèles ainsi que le graphique.
- Pour chaque
ndanssizes, entraîne les deux modèles sur lesnpremières lignes d’entraînement ; conserve leurs précisions sur l’ensemble de test. - Affiche le gain de chaque modèle, c’est-à-dire le dernier score moins le premier, avec 3 décimales.
- Trace les deux courbes en fonction de
sizes, avecmarker="o", étiquetéeslogisticettree, et ajoute une légende.
Des chouettes d’un autre bois affichent :
Logistic gains 0.053 from more data
Tree gains 0.160 from more dataet dessinent ce graphique. Coddy décrit ensuite le tien.
Essayez vous-même
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# Ne modifiez pas les lignes ci-dessous : 600 cris de chouettes, hauteur (Hz) et durée (s)
rng = np.random.default_rng(23)
pitch = np.round(rng.uniform(300, 900, 600))
length = np.round(rng.uniform(0.2, 2.0, 600), 2)
# L’espèce 1, la chouette hulotte, émet des cris plus longs compte tenu de leur hauteur ; quelques notes de terrain sont erronées
longer = length > 0.5 + 6.4 * ((pitch - 600) / 600) ** 2
wrong_note = rng.random(600) < 0.05
species = np.where(longer != wrong_note, 1, 0)
X = np.column_stack([pitch, length])
X_train, X_test, y_train, y_test = train_test_split(X, species, test_size=0.25, random_state=0)
sizes = [25, 50, 100, 200, 400]
logistic = LogisticRegression(max_iter=1000)
tree = DecisionTreeClassifier(random_state=0)
fig, ax = plt.subplots()
ax.set_title("Owl Calls: Learning Curves")
ax.set_xlabel("Training rows")
ax.set_ylabel("Test accuracy")
# É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