Multicolinéarité (facteur d'inflation de la variance). Variables à supprimer avant de faire un modèle
-
02-11-2019 - |
Question
Je fais un exercice d'un module de système d'apprentissage automatique à Python qui prend un ensemble de données de voitures (cylindres, année, consommation ....) et demande un modèle, étant la variable pour prédire la consommation d'essence. Comme il a trois variables catégorielles, j'ai généré les mannequins.
Dans l'exercice, j'ai besoin d'éliminer les variables avec multicolinéarité, j'ai donc utilisé la méthode montrée sur mes notes de cours:
from sklearn.linear_model import LinearRegression
def calculateVIF(data):
features = list(data.columns)
num_features = len(features)
model = LinearRegression()
result = pd.DataFrame(index = ['VIF'], columns = features)
result = result.fillna(0)
for ite in range(num_features):
x_features = features[:]
y_featue = features[ite]
x_features.remove(y_featue)
x = data[x_features]
y = data[y_featue]
model.fit(data[x_features], data[y_featue])
result[y_featue] = 1/(1 - model.score(data[x_features], data[y_featue]))
return result
Ensuite, si je lance la méthode, il calcule un coefficient pour chaque variable:
Dans mes notes de cours, il est dit:
- $ Vif> 5 $ est une valeur élevée.
- $ Vif> 10 $ est une valeur très élevée
Que devrais-je faire? J'ai besoin de supprimer les variables qui ont un $ Vif> 10 $ Avant d'exécuter le modèle?
Le problème que je vois, pour mes cylindres variables catégoriques, est que Cylinders_5 a un VIF moins de 10 ans, alors devrais-je enlever les autres et quitter CycLinders_5?
Pas de solution correcte