Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Surapprentissage | Choix du Meilleur Modèle
Régression Linéaire Avec Python

bookSurapprentissage

Surapprentissage

Considérez les deux droites de régression ci-dessous. Laquelle est la meilleure ?

Eh bien, les métriques 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, ce qui lui permet d'ajuster parfaitement les données d'entraînement, mais il 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'ajuste 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 surajustement.

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 un autre moyen de déterminer si le modèle est en situation de surajustement ou de sous-ajustement ? Il s'avère que oui.

Séparation entraînement-test

Il est nécessaire d’évaluer la performance du modèle sur des instances non vues. Pour cela, il faut disposer d’instances non vues avec leurs vraies valeurs cibles. Or, seules les données d’entraînement possèdent ces vraies valeurs cibles. La solution consiste à diviser l’ensemble d’entraînement en deux sous-ensembles : un ensemble d’entraînement et un ensemble de test.

Le modèle peut alors être construit à partir de l’ensemble d’entraînement, les métriques calculées sur l’ensemble d’entraînement (instances vues), puis 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 pour l’entraînement. Scikit-learn propose une fonction simple pour effectuer cette séparation aléatoire :

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)
question-icon

En vous basant sur les scores MSE des modèles, déterminez s'ils surajustent ou sous-ajustent l'ensemble d'entraînement (le jeu de données est le même).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

What are some common signs of overfitting and underfitting in a model?

How does the train-test split help prevent overfitting?

Can you explain how to interpret the results after splitting the data into training and test sets?

Awesome!

Completion rate improved to 5.26

bookSurapprentissage

Glissez pour afficher le menu

Surapprentissage

Considérez les deux droites de régression ci-dessous. Laquelle est la meilleure ?

Eh bien, les métriques 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, ce qui lui permet d'ajuster parfaitement les données d'entraînement, mais il 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'ajuste 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 surajustement.

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 un autre moyen de déterminer si le modèle est en situation de surajustement ou de sous-ajustement ? Il s'avère que oui.

Séparation entraînement-test

Il est nécessaire d’évaluer la performance du modèle sur des instances non vues. Pour cela, il faut disposer d’instances non vues avec leurs vraies valeurs cibles. Or, seules les données d’entraînement possèdent ces vraies valeurs cibles. La solution consiste à diviser l’ensemble d’entraînement en deux sous-ensembles : un ensemble d’entraînement et un ensemble de test.

Le modèle peut alors être construit à partir de l’ensemble d’entraînement, les métriques calculées sur l’ensemble d’entraînement (instances vues), puis 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 pour l’entraînement. Scikit-learn propose une fonction simple pour effectuer cette séparation aléatoire :

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)
question-icon

En vous basant sur les scores MSE des modèles, déterminez s'ils surajustent ou sous-ajustent l'ensemble d'entraînement (le jeu de données est le même).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 2
some-alt