我正在研究一个分类问题,其中数据集极度不平衡(大约 13000 个“零”和 100 个“一”响应)。
作为第一步,我训练了一个逻辑回归并更改了截止概率,成功地预测了大多数“一”响应,但合理数量的“零”响应被错误地归类为“一”。
所以我想知道,什么是可以正确处理不平衡数据集的好算法?
谢谢,
PS 我正在研究 scikit-learn 或 R 包中可用的算法。
我正在研究一个分类问题,其中数据集极度不平衡(大约 13000 个“零”和 100 个“一”响应)。
作为第一步,我训练了一个逻辑回归并更改了截止概率,成功地预测了大多数“一”响应,但合理数量的“零”响应被错误地归类为“一”。
所以我想知道,什么是可以正确处理不平衡数据集的好算法?
谢谢,
PS 我正在研究 scikit-learn 或 R 包中可用的算法。
我建议使用重新采样技术来平衡训练数据集。它们可以分为四类:对多数类进行欠采样、对少数类进行过采样、组合过采样和欠采样以及创建平衡数据集的集合。
上述方法和更多方法在与 scikit-learn 接口的 Python中的不平衡学习库中实现。我建议尝试一种组合方法,例如 SMOTE + Tomek 链接,以查看平衡数据集上的分类准确性是否有所提高。
有关示例,请参见ipython 笔记本。
我会使用分层抽样方法(例如http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators-with-stratification-based-on-class-labels)抱歉不能给出一个精确的策略或解释这些算法在后台究竟做了什么,但我希望这仍然会有所帮助。