我应该使用一种热编码的特征选择吗?

Should I use feature selection with one hot encoding?

我有一个难题,我正在使用一种热编码,我需要进行特征选择(对于分类和数字特征),我有一些不是很重要的特征,但我不想使用一些算法来做到这一点,而不是手动。我的问题有两个 -

如果您有许多特征,并且其中许多可能与模型无关,特征选择将使您能够丢弃它们并将数据集限制为最相关的特征。

以下是在这些情况下需要考虑的几个关键方面:

  • 维数灾难

当您处理大型数据集时,这通常是至关重要的一步。例如,盲目 one-hot 编码所有分类特征可能会导致大量数据帧,甚至可能无法存储到内存中,更不用说用于 ML 模型了。在这种情况下,您可能需要减少要编码的特征数量或研究其他分类编码器,例如贝叶斯编码器(请参阅答案的最后一部分)。

  • 特征重要性

不进行特征选择的一个消极方面,非常有说服力 here,可能是我们有许多高度相关的特征,并且在分析特征重要性时 你得到的重要性这些可能并不表示它们的实际相关性

回答你问题的第二部分,如果你拥有的特征可能是相关的并且你已经完成了一些特征工程,那么你可以对它们进行编码,如果你最终得到很多特征那么 您可以执行特征选择并减少结果数据集的维数。有许多特征选择技术。您可以在 Feature selection.

中找到 scikit-learn 中可用的列表

根据一些评论...

  • 我应该使用 LabelEncoder 吗?

首先,由于您在评论中提到使用 LabelEncoder,请记住此编码器仅适用于标签,不适用于功能!请参阅 LabelEncoder 了解分类特征? .

  • 高基数特征怎么办?

对于分类特征,如果它们具有高基数,你最好研究一下贝叶斯编码器。请参阅此相关问题:How to encode a categorical feature with high cardinality?