Validation croisée

Apprentissage supervisé avec scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Pourquoi la validation croisée ?

  • La performance dépend de la façon de diviser les données

  • Ne reflète pas la capacité du modèle à généraliser à des données inédites

  • Solution : la validation croisée !

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

en-têtes du tableau : division 1, bloc 1, bloc 2, bloc 3, bloc 4 et bloc 5

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

division 1 réservée comme ensemble de test

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

blocs 2 à 5 utilisés comme données d'entraînement

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

calculer la mesure sur ces blocs

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

bloc 2 comme données de test

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

blocs 1, 3, 4 et 5 comme données d'entraînement

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

recalculer la mesure

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

répéter avec le troisième bloc

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

répéter avec le quatrième bloc

Apprentissage supervisé avec scikit-learn

Notions de base de la validation croisée

répéter avec le cinquième bloc

Apprentissage supervisé avec scikit-learn

Validation croisée et performance du modèle

  • 5 blocs = validation croisée à 5 volets

  • 10 blocs = validation croisée à 10 volets

  • k blocs = validation croisée à k volets

  • Plus de volets = plus coûteux en calcul

Apprentissage supervisé avec scikit-learn

Validation croisée avec scikit-learn

from sklearn.model_selection import cross_val_score, KFold

kf = KFold(n_splits=6, shuffle=True, random_state=42)
reg = LinearRegression()
cv_results = cross_val_score(reg, X, y, cv=kf)
Apprentissage supervisé avec scikit-learn

Évaluer la performance en validation croisée

print(cv_results)
[0.70262578, 0.7659624, 0.75188205, 0.76914482, 0.72551151, 0.73608277]
print(np.mean(cv_results), np.std(cv_results))
0.7418682216666667 0.023330243960652888
print(np.quantile(cv_results, [0.025, 0.975]))
array([0.7054865, 0.76874702])
Apprentissage supervisé avec scikit-learn

Passons à la pratique !

Apprentissage supervisé avec scikit-learn

Preparing Video For Download...