Contenu du cours
Régression Linéaire Avec Python
Régression Linéaire Avec Python
Choix des Variables
Dans de nombreuses tâches, vous pouvez disposer de nombreuses variables dont vous ne savez pas si elles sont utiles ou non. Heureusement, il est possible d'entraîner un modèle avec toutes ces variables, d'observer celles qui n'ont pas d'impact, puis de réentraîner le modèle uniquement avec les variables pertinentes.
Pourquoi supprimer des variables du modèle ?
Si vous ajoutez une variable au modèle qui n'a aucun lien avec la cible, cela introduira du bruit dans le modèle, ce qui dégradera la qualité de la prédiction. Lorsque de nombreuses variables inutiles sont présentes, le bruit s'accumule et la performance du modèle se détériore de plus en plus.
Comment savoir si les variables sont pertinentes ou non ?
Comme vous le savez déjà, lors de l'entraînement, la classe OLS calcule également des informations statistiques. Parmi d'autres analyses, elle effectue un test t pour déterminer si chaque variable a un impact significatif sur la cible. Les résultats de ce test sont disponibles dans le tableau summary()
comme illustré ci-dessous :
import pandas as pd import statsmodels.api as sm file_link='https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Ce qui nous intéresse, c'est la valeur p pour chaque variable.
En résumé, plus la valeur p est faible, plus la confiance dans l'impact de la variable est élevée.
En statistique, il est nécessaire de définir le seuil de la p-value, appelé niveau de signification. Il est généralement fixé à 0,05, et dès que la p-value dépasse ce niveau de signification, la variable est considérée comme non significative.
Cependant, en pratique, les variables avec une p-value légèrement supérieure à 0,05 peuvent également améliorer le modèle. Il est donc préférable de tester le modèle avec et sans cette variable, plutôt que de la supprimer immédiatement, sauf si sa p-value est vraiment élevée (>0,4). Dans ce cas, la variable peut être supprimée sans risque.
La p-value varie de 0 à 1, donc lorsqu'on parle de faible p-value, cela signifie inférieure à 0,05, et une p-value élevée signifie généralement supérieure à 0,3-0,5.
Dans notre exemple, nous avons obtenu des p-values pour la taille de la mère et la constante : 0,087 et 0,051. Si nous supprimons les variables avec une p-value > 0,05, nous obtiendrons le résultat ci-dessous (à gauche).
Même visuellement, on peut constater que le modèle avec la constante (à droite) est meilleur ; il est donc préférable de ne pas la retirer du modèle.
Il est courant d'obtenir des p-values relativement élevées (de 0,05 à 0,2) pour des variables influentes lorsque l'ensemble de données est petit. La p-value indique la confiance que la variable est significative, et il est naturel que plus nous avons d'observations, plus il est facile de distinguer les variables influentes des moins pertinentes. Supposons que vous ayez des données montrant que 9/10 des personnes grandes que vous connaissez mangeaient des pommes tous les jours. Pouvez-vous être certain qu'il y a un lien ? Mais si c'était 9000/10000 ? Cela vous rendrait plus confiant.
Comment supprimer les mauvaises variables ?
Il suffit de supprimer la colonne correspondant à la variable de X_tilde
. Cela peut être réalisé avec le code suivant :
X_tilde = X_tilde.drop(___, axis=1)
Par exemple, pour supprimer les colonnes 'const' et 'Mother', utilisez :
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Ensuite, créer un nouvel objet OLS en utilisant le X_tilde
mis à jour :
regression_model=sm.OLS(y, X_tilde)
1. Lesquelles des variables devez-vous CONSERVER ?
2. Choisissez l'affirmation INCORRECTE.
Merci pour vos commentaires !