在许多训练数据集中,类别分布是不平衡的,即一种类别非常频繁(例如95%),而另一种类别很少见(例如5%)。在这种应用中,将所有测试案例分配给多数类别的简单分类器可以获得非常高的准确性。然而,尽管少数类别通常比多数类别更重要,简单分类器却无法预测任何少数类别的案例。
那么,有没有办法仅通过修改训练数据集来提高对少数类别的准确性?还是我们也需要修改分类算法呢?
回答:
这是不平衡分类的问题。以下是处理不平衡数据集的方法。
1.欠采样2.过采样3.合成数据生成4.成本敏感学习
1.欠采样
这种方法针对多数类别进行操作。它通过减少多数类别的观察数量来使数据集平衡。当数据集很大时,这种方法最适合使用,减少训练样本的数量有助于改善运行时间和存储问题。欠采样方法分为两种类型:随机和信息性欠采样。
- 过采样
这种方法针对少数类别进行操作。它通过复制少数类别的观察来平衡数据。也称为上采样。类似于欠采样,这种方法也可以分为两种类型:随机过采样和信息性过采样。
- 合成数据生成
简单来说,这种方法不是复制并添加少数类别的观察,而是通过生成人工数据来克服不平衡问题。这也是一种过采样技术。
关于合成数据生成,合成少数类过采样技术(SMOTE)是一种强大且广泛使用的方法。SMOTE算法根据少数样本的特征空间(而不是数据空间)相似性创建人工数据。我们也可以说,它生成一组随机的少数类别观察,以将分类器的学习偏差转向少数类别。
- 成本敏感学习(CSL)这也是处理不平衡数据的分类问题中常用的一种方法。这是一种有趣的方法。简单来说,这种方法评估与错误分类观察相关的成本。
它不创建平衡的数据分布。相反,它通过使用成本矩阵来突出不平衡学习问题,这些矩阵描述了特定情境下错误分类的成本。近期研究表明,成本敏感学习在许多情况下都优于采样方法。因此,这种方法为采样方法提供了一个可能的替代方案。
要在R中构建这些,请参考链接 https://www.analyticsvidhya.com/blog/2016/03/practical-guide-deal-imbalanced-classification-problems/