Contenu du cours
Régression Linéaire Avec Python
Régression Linéaire Avec Python
Surapprentissage
Surapprentissage
Considérez les deux droites de régression ci-dessous. Laquelle est la meilleure ?
Eh bien, les métriques nous indiquent que la seconde est meilleure. Nous allons donc l'utiliser pour prédire de nouvelles valeurs ! Nous avons besoin des prédictions pour X_new = [0.2,0.5,2.7]
. Mais lorsque nous avons obtenu les vraies valeurs cibles pour les X_new
que nous venions de prédire, il s'est avéré que le premier modèle avait une bien meilleure prédiction.
Cela s'explique par le fait que le second modèle surapprend l'ensemble d'entraînement. Le surapprentissage se produit lorsque le modèle construit est trop complexe, de sorte qu'il s'ajuste parfaitement aux données d'entraînement, mais ne prédit pas aussi bien les instances non vues.
Sous-ajustement
Il existe également un autre concept, le sous-ajustement. Cela se produit lorsque le modèle construit est trop simple et ne s'adapte même pas correctement aux données d'entraînement. Dans ces cas, les prédictions pour les instances non vues sont également incorrectes.
Il est donc possible d'essayer de déterminer visuellement si le modèle est en situation de sous-ajustement ou de sur-ajustement.
Nous savons déjà qu'il n'est pas possible de visualiser la régression linéaire multiple avec de nombreuses variables. Existe-t-il une autre méthode pour déterminer si le modèle est en situation de sur-ajustement ou de sous-ajustement ? Il s'avère que oui.
Séparation entraînement-test
Nous souhaitons évaluer les performances du modèle sur des instances non vues. Pour cela, nous avons besoin d'instances non vues avec les vraies valeurs cibles. Or, nous ne disposons des vraies valeurs cibles que dans l'ensemble d'entraînement. La solution consiste à diviser l'ensemble d'entraînement en deux ensembles : un ensemble d'entraînement et un ensemble de test.
Nous pouvons maintenant construire le modèle à l'aide de l'ensemble d'entraînement, calculer les métriques sur l'ensemble d'entraînement (instances vues), puis calculer les métriques sur l'ensemble de test (instances non vues).
Il est essentiel de diviser l'ensemble d'entraînement de manière aléatoire. En général, il est recommandé d'utiliser environ 20 à 30 % de l'ensemble d'entraînement pour l'ensemble de test, et de conserver les 70 à 80 % restants comme ensemble d'entraînement. Scikit-learn propose une fonction simple pour effectuer une séparation aléatoire de l'ensemble :
Par exemple, pour diviser l'ensemble d'entraînement en 70 % entraînement/30 % test, vous pouvez utiliser le code suivant :
from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
Merci pour vos commentaires !