Contenu du cours
Régression Linéaire Avec Python
Régression Linéaire Avec Python
Choisir les Caractéristiques
Dans de nombreuses tâches, vous pouvez avoir de nombreuses caractéristiques dont vous ne savez pas si elles sont utiles ou non. Heureusement, vous pouvez entraîner un modèle avec toutes, voir lesquelles ne sont pas impactantes, puis ré-entraîner le modèle uniquement avec celles qui le sont.
Pourquoi supprimer des caractéristiques du modèle ?
Si vous ajoutez une caractéristique au modèle qui n'a pas de relation avec la cible, cela créera du bruit dans le modèle, rendant la prédiction moins précise. Et lorsque vous avez de nombreuses caractéristiques inutiles, le bruit s'accumule, rendant le modèle de plus en plus inefficace.
Comment savoir si les caractéristiques sont bonnes ou mauvaises ?
Comme vous le savez déjà, lors de l'entraînement, la classe OLS calcule également des informations statistiques. Parmi de nombreuses autres choses, elle effectue un test t pour déterminer si chaque caractéristique a un impact significatif sur la cible. Les résultats du test peuvent être trouvés dans le tableau summary()
comme indiqué 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 caractéristique.
En bref, plus la p-valeur est basse, plus la confiance que la caractéristique est impactante est élevée.
En statistique, nous devons définir le seuil de la p-valeur, appelé niveau de signification. Il est généralement fixé à 0,05, et une fois que la p-valeur est supérieure à ce niveau de signification, nous considérons que la caractéristique n'est pas impactante.
Cependant, en pratique, les caractéristiques avec une p-valeur légèrement supérieure à 0,05 améliorent généralement aussi le modèle. Il est donc préférable d'essayer le modèle avec et sans cette caractéristique au lieu de l'enlever instantanément du modèle, sauf si elle a une p-valeur vraiment élevée (>0,4). Dans ce cas, vous pouvez supprimer la caractéristique en toute sécurité.
Remarque
La p-valeur varie de 0 à 1, donc lorsque nous parlons de p-valeur basse, nous entendons moins de 0,05 et une p-valeur élevée signifie généralement supérieure à 0,3-0,5.
Dans notre exemple, nous avons obtenu des valeurs p pour la taille de la mère et une constante de 0,087 et 0,051. Si nous supprimons les caractéristiques avec une valeur p > 0,05, nous obtiendrons le résultat ci-dessous (à gauche).
Même visuellement, nous pouvons dire que le modèle avec constante (à droite) est meilleur, donc il vaut mieux ne pas le supprimer du modèle.
Remarque
Il est habituel d'obtenir des valeurs p relativement élevées (0,05 à 0,2) pour des caractéristiques impactantes lorsque le jeu de données est petit. La valeur p montre la confiance que la caractéristique est impactante, et il est naturel que plus nous avons d'instances, plus il est facile de distinguer les caractéristiques impactantes des mauvaises.
Supposons que vous ayez des données montrant que 9/10 des personnes grandes que vous connaissez mangeaient des pommes quotidiennement. Pouvez-vous être sûr que cela est lié ? Mais que se passerait-il si c'était 9000/10000 ? Cela vous rendrait plus confiant.
Comment supprimer les mauvaises caractéristiques ?
Il vous suffit de supprimer la colonne liée à la caractéristique de X_tilde
. Cela peut être fait en utilisant le code suivant :
Par exemple, pour supprimer les colonnes 'const' et 'Mother', vous utiliseriez :
Et puis créez un nouvel objet OLS en utilisant le X_tilde
mis à jour :
1. Quels sont les caractéristiques que vous devriez CONSERVER ?
2. Choisissez l'énoncé INCORRECT.
Merci pour vos commentaires !