当一种热编码会创建太多特征时,对标称分类数据使用标签编码是否可以接受?

数据挖掘 随机森林 支持向量机 编码 一热编码 分类编码
2022-03-01 12:52:38

我正在做一个简短的数据科学项目来比较不同分类方法的准确性。这些小组决定使用并比较随机森林、朴素贝叶斯和 SVM。

我们使用的数据集有四个分类特征。每一个都有大量的唯一值。

  • FaureA 中有 17370 个唯一值的 16537 个唯一组合。
  • FeaureB 中有 13852 个唯一值的 13860 个唯一组合。
  • FeaureC 中有 29 个唯一值的 3295 个唯一组合。
  • FeaureD 中有 29 个唯一值的 1518 个唯一组合。

从我读过的内容来看,RF 和 NB 算法应该可以很好地处理标签编码,但 SVM 需要一种热编码。但是,这会使特征数量增加约 35K。性能成本似乎很重要。理想情况下,我们将对所有三种算法使用相同的编码。降低性能并尝试使用 PCA 之类的方法来减少功能会更好吗?

2个回答

这些是您可以尝试减少数据集维数的一些事情:-

1.) 首先要做的是特征工程。尝试将 2 个或多个特征组合成 1 个,而不会失去对该变量的意义。例如,如果您有一个二手车价格预测数据集,并且您有month_of_registrationyear_of_registration作为其中的两个特征。您可以将它们组合成age变量,然后删除月份和年份变量。这是降维最有效、最无创的方法。

2.) 第二件事是特征选择。这可以包括 4 种技术中的任何一种,filter based如果您想使用它,此步骤还包括 PCA。wrapper basedembeddedhybrid

3.) 即使在执行了上述步骤之后,您也会获得大量的特征,您可以从特征中删除一些不太常见的类别。例如,如果在一项功能中您有 2 个类别,其中 1 个类别仅出现 1-2% 的时间。您可以删除该类别以降低维度。

RF 和 XGBoost 等基于树的模型可以处理您上面建议的任何一种方法创建的特征空间。此外,您可以尝试进行特征选择(使用那些统计测试)以消除 0 方差特征,然后将过滤后的数据集提供给您的模型。