如何平衡我的数据集?

机器算法验证 机器学习 数据挖掘 数据集 大车 模型
2022-03-29 05:18:02

我有 90% 的负例和 10% 的正例(13,000 个观察值,90 个变量)。我的模型显示未命中分类错误为 0.1,但我的混淆矩阵显示 TP 的数量非常少。有没有办法对我的正例进行过度采样或平衡我的数据集,以获得平衡的数据集。

2个回答

您可以通过简单地复制少数类示例来对它们进行过采样,或者您可以使用SMOTE算法( R 中的DMwR包,函数 SMOTE),该算法生成合成少数类示例,同时对多数类进行下采样。由于您有相当多的案例,因此下采样不应导致过多的概念丢失,但是当然,您仍然会丢失一些信息,这并不理想。

请注意,正如分析师已经提到的那样,1300 个少数案例是相对稀有的,但不是绝对稀有的。也就是说,如果少数类由强概念表示,那么您的分类器应该能够挑选出来(有关绝对和相对稀有性的详细讨论,请参阅本文)。因此,也许您的预测器一开始就不太擅长区分类别,或者您可能有一些概念重叠,这使得学习变得困难。

另外,您使用的是哪种学习算法?例如,Stochastic Gradient Tree Boosting 与 Random Forests 相比,对相对类别不平衡的敏感度要低一些(因为重点逐渐放在了错误分类的案例上)。对于随机森林,已经开发了两种策略来应对类不平衡,它们涉及重采样和加权。Boosting 也引入了一些在精神上类似的方法(例如)。

编辑:添加参考(以防将来链接失效):

Chawla,Nitesh V.,等人。“SMOTE:合成少数过采样技术。” 人工智能研究杂志(2002):321-357。

韦斯,通用汽车 (2004)。稀有采矿:一个统一的框架。ACM SIGKDD 探索通讯,6(1),7-19。

Chen、Chao、Andy Liaw 和 Leo Breiman。“使用随机森林学习不平衡数据。” 加州大学伯克利分校(2004 年)。

孙艳民,等。“用于不平衡数据分类的成本敏感提升。” 模式识别 40.12 (2007): 3358-3378。

你没有告诉我们你的分类方法和你的数据集特征。如果您使用任何其他需要很长时间来训练和调整的方法,我建议您使用成本敏感型学习。过采样增加了训练的负担而没有增加太多的回报,这很简单。另一方面,到目前为止,欠采样并没有给我留下深刻印象。您还可以研究矢量量化。尝试一系列策略并找到适合您的数据的方法......