使用方差膨胀因子自动删除高度相关的特征?

数据挖掘 机器学习 逻辑回归 相关性
2022-02-24 21:23:05

我希望能够自动删除高度相关的特征。我正在使用一组 20-30 个特征执行分类问题,其中一些可能是相关的。

多个特征也可以同时关联,我担心这可能会给我的 Logit 模型重要性和特征系数带来问题。删除这些功能后,我计划将这个减少的功能集也用于 Xgboost 模型。

另一方面,多重共线性更难检测,因为当模型中包含三个或更多高度相关的变量时,它就会出现。参考这里

以这种方式删除相关变量是否正确?:

X=data[feature_set]
vif = pd.DataFrame()
vif['vif_factor'] = [variance_inflation_factor(X.values,i) for i in range(X.shape[1])]
vif['features'] = X.columns

vif.sort_values('vif_factor',axis=0,inplace=True, ascending=False)

features_to_remove = vif.loc[vif['vif_factor'] > 10,'features'].values
features_to_remove = list(features_to_remove)
print(features_to_remove)

输出:

vif_factor |  feature

21         |   age
9.7        |   income
7          |   gender ....and so on 

因此,在这种情况下,年龄将作为模型中的一个特征被删除。

1个回答

我可能会过度简化这一点,但 Pandas 允许基于阈值删除相关特征。例如相关性 >0.95

在此处输入图像描述

https://chrisalbon.com/machine_learning/feature_selection/drop_highly_correlated_features/