Multicollinearità (fattore di inflazione della varianza). Variabili da rimuovere prima di fare un modello
-
02-11-2019 - |
Domanda
Sto facendo un esercizio di un modulo del sistema di apprendimento automatico in Python che prende un set di dati di auto (cilindri, anno, consumo ....) e chiede un modello, essendo la variabile per prevedere il consumo di benzina. Dato che ha tre variabili categoriche, ho generato i manichini.
Nell'esercizio ho bisogno di eliminare le variabili con la multicollinearità, quindi ho usato il metodo mostrato sulle note del mio corso:
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
Quindi se lancio il metodo calcola un coefficiente per ciascuna variabile:
Nel mio corso si dice che si dice:
- $ Vif> 5 $ è un valore elevato.
- $ Vif> 10 $ è un valore molto alto
Cosa dovrei fare? Ho bisogno di rimuovere le variabili che hanno a $ Vif> 10 $ Prima di eseguire il modello?
Il problema che vedo, per i miei cilindri variabili categorici, è solo cilindri_5 ha un VIF sotto i 10, quindi dovrei rimuovere gli altri e lasciare ciclinders_5?
Nessuna soluzione corretta