不平衡数据如何使用随机森林选择重要变量?

数据挖掘 随机森林 逻辑回归 阶级失衡
2022-03-04 17:29:31

我正在尝试使用随机森林从 15K 特征中选择重要变量并将它们拟合到逻辑回归中。我的评估是基于F1分数。数据集 2 类比率约为:99.5:0.5。

这是 15K 特征的来源:最初我有 2000 个特征,在对它们进行模糊处理(仅从分类变量中提取前 100 个类别)之后,它变成了 16K。去除零方差后,它变成了 15K。我不想消除接近零的方差,因为我的班级不平衡率也很小。我之前尝试过去除接近零方差的特征,它显着减少了特征的数量,但是逻辑回归结果也不好。

然而,使用网格搜索后,随机森林的交叉验证 f1 分数仍然很低。(小于 0.01)

此外,我尝试对训练数据进行欠采样以使其达到 1:1,但随机森林的交叉验证 F1 分数仍然很差。:(

所以我在考虑不选择重要的变量,而只是将所有特征都拟合到逻辑回归中。

由于内存问题,我无法将所有 15K 特征直接拟合到逻辑回归中,但如果我从随机森林中选择重要变量,它们不会对看不见的测试数据进行泛化。

关于如何解决问题的任何想法?我知道一种替代方法是使用散列,这样我就可以适应所有 15K 特征。

1个回答

15K 特征是很多特征。我敢打赌,你的 0.01 F1 分数是拥有这么多功能的直接结果。在不了解有关您的数据的更多详细信息的情况下,很难提出更明智的替代方案。我希望它接近 100 个功能,而不是 15,000 个。这些特征是从文本中提取的吗?N-gram?

关于您的特征选择问题,第一步是消除任何没有方差的特征(所有样本都相同),然后可以利用各种统计方法来选择特征以保留那些具有高方差的特征(sklearn为此提供了很好的库:Feature selection)。

也可以为此目的使用 Ranked Guide Iterative Feature Elimination (RGIFE),它使用随机森林:RGIFE - Ranked Guided Iterative Feature Elimination

PS 你的班级比例也很不平衡。一旦你在特征空间中使用了一个更合理的数据集,我会考虑对较大的类进行欠采样,对较小的类进行过采样或两者的组合,并在执行评估时密切关注由此产生的混淆矩阵。