Identifier les problèmes de biais et de variance

Machine learning avec des modèles arborescents en Python

Elie Kawerk

Data Scientist

Estimation de l'erreur de généralisation

  • Comment évaluer l'erreur de généralisation d'un modèle ?

  • Ne peut pas être effectué directement, car :

    • $f$ est inconnu,

    • généralement, un seul ensemble de données,

    • le bruit est imprévisible.

Machine learning avec des modèles arborescents en Python

Estimation de l'erreur de généralisation

Solution :

  • diviser les données en ensembles d'entraînement et de test,
  • ajuster $\hat{f}$ à l'ensemble d'entraînement,
  • évaluer l'erreur de $\hat{f}$ sur l'ensemble de test non vu.
  • erreur de généralisation de $\hat{f} \approx$ erreur de l'ensemble de test de $\hat{f}$.
Machine learning avec des modèles arborescents en Python

Amélioration de l'évaluation des modèles grâce à la validation croisée

  • Il est recommandé de ne pas manipuler l'ensemble de test tant que nous ne sommes pas certains des performances de $\hat{f}$.

  • Évaluation de $\hat{f}$ sur l'ensemble d'entraînement : estimation biaisée, $\hat{f}$ a déjà examiné tous les points d'entraînement.

  • Solution $\rightarrow$ Validation croisée (CV) :

    • K-Fold CV,

    • Hold-Out CV.

Machine learning avec des modèles arborescents en Python

K-Fold CV

KFoldCV

Machine learning avec des modèles arborescents en Python

K-Fold CV

CVerror

Machine learning avec des modèles arborescents en Python

Identifier les problèmes de variance

  • Si $\hat{f}$ e présente une variance élevée :

    Erreur CV de $\hat{f}$ > erreur de l'ensemble d'entraînement de $\hat{f}$.

  • $\hat{f}$ est considéré comme un ajustement excessif de l'ensemble d'entraînement. Pour remédier au surajustement :
    • réduire la complexité du modèle,
    • par exemple : réduire la profondeur maximale, augmenter le nombre minimal d'échantillons par feuille, …
    • collecter davantage de données, …
Machine learning avec des modèles arborescents en Python

Identifier les problèmes de biais

  • si $\hat{f}$ présente un biais élevé :

    erreur CV de $\hat{f} \approx$ erreur de l'ensemble d'entraînement de $\hat{f} >>$ erreur souhaitée.

  • $\hat{f}$ est considéré comme sous-ajusté par rapport à l'ensemble d'entraînement. Pour remédier au sous-ajustement :

    • augmenter la complexité du modèle
    • par exemple : augmenter la profondeur maximale, réduire le nombre minimal d'échantillons par feuille, …
    • recueillir des caractéristiques plus pertinentes
Machine learning avec des modèles arborescents en Python

CV K-Fold dans sklearn sur l'ensemble de données Auto

from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error as MSE
from sklearn.model_selection import cross_val_score

# Set seed for reproducibility SEED = 123 # Split data into 70% train and 30% test X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.3, random_state=SEED)
# Instantiate decision tree regressor and assign it to 'dt' dt = DecisionTreeRegressor(max_depth=4, min_samples_leaf=0.14, random_state=SEED)
Machine learning avec des modèles arborescents en Python

CV K-Fold dans sklearn sur l'ensemble de données Auto

# Evaluate the list of MSE ontained by 10-fold CV 
# Set n_jobs to -1 in order to exploit all CPU cores in computation
MSE_CV = - cross_val_score(dt, X_train, y_train, cv= 10, 
                           scoring='neg_mean_squared_error',
                           n_jobs = -1)

# Fit 'dt' to the training set dt.fit(X_train, y_train) # Predict the labels of training set y_predict_train = dt.predict(X_train) # Predict the labels of test set y_predict_test = dt.predict(X_test)
Machine learning avec des modèles arborescents en Python
# CV MSE  
print('CV MSE: {:.2f}'.format(MSE_CV.mean()))
CV MSE: 20.51
# Training set MSE
print('Train MSE: {:.2f}'.format(MSE(y_train, y_predict_train)))
Train MSE: 15.30
# Test set MSE
print('Test MSE: {:.2f}'.format(MSE(y_test, y_predict_test)))
Test MSE: 20.92
Machine learning avec des modèles arborescents en Python

Passons à la pratique !

Machine learning avec des modèles arborescents en Python

Preparing Video For Download...