Multicolinéarité (facteur d'inflation de la variance). Variables à supprimer avant de faire un modèle

datascience.stackexchange https://datascience.stackexchange.com/questions/54280

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.

enter image description here

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:

enter image description here

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

Licencié sous: CC-BY-SA avec attribution
scroll top