Scikit-learn OneHotEncoder 对特征选择的影响

数据挖掘 Python scikit-学习 特征选择 一热编码
2022-02-09 05:47:45

如果我需要在我的数据集上运行特征选择,使用 OneHotEncoder 会不会有问题?难道它不能决定删除一个编码列吗?我应该如何处理?谢谢你。

2个回答

是的,它有可能发生。这意味着发生的这个事件对目标没有重要性。

想象一个具有很多类别(高基数)的分类特征。也许只有其中一个对目标没有任何影响,所以如果你选择特征,这个特征很可能会被丢弃。所以这是正常的事情,只要确保它在数据集的任何点都不包含任何信息。

我同意@CarlosMougan 对您的问题“我应该如何处理这个问题?”的回答。很可能是“没有问题可以处理”。这实质上是允许您的特征选择方法将类别集中到基线中。

但是,有些人似乎更喜欢将分类的虚拟变量放在一起。我知道尝试做到这一点的三种方法。

  1. 组套索,惩罚试图强制某些变量组要么全部保留,要么全部从模型中删除(呃,系数为零)。
    https://stats.stackexchange.com/q/214325/232706
    https://stats.stackexchange.com/q/209009/232706

  2. 您还可以应用分类友好的单变量分析(例如卡方),或基于模型的特征选择方法,其中模型可以本地处理分类变量(在某些实现中基于树的模型)。

  3. 最后,使用基于模型的选择技术,您可以尝试将虚拟变量的特征重要性汇总为每个原始分类的一个分数。目前尚不清楚它的效果如何。请参阅
    https://stats.stackexchange.com/q/314567/232706
    分类变量的平均重要性增益

另请参阅与您的问题相近的这些问题:
How to implement feature selection for categorical variables(尤其是对于许多类别)?
使用 one-hot-encoded 分类数据进行特征选择
https://stats.stackexchange.com/q/78644/232706
https://stats.stackexchange.com/q/154266/232706