不平衡数据集的相反类型的预测

人工智能 机器学习 随机森林
2021-11-12 10:15:49

我有一个大数据集(28354359 行),其中包含一些血液值作为特征(11 个特征)和标签或结果变量,用于告知患者是否患有由肿瘤引起的病毒。

我的数据集的问题是,我的数据集中 2% 的患者感染了病毒,而 98% 的患者没有感染病毒。

我必须使用随机森林算法。虽然我的随机森林模型的准确度得分高达 92%,但问题是,超过 90% 的感染病毒的患者被预测为没有病毒。

我想要相反的效果,我希望我的随机森林可能更频繁地预测患者感染病毒(即使患者没有病毒(理想情况下我不想要这种副作用,而是这个而不是对面的))。

这背后的想法是,执行额外的测试(通过回声)不会伤害没有病毒的患者,但不对患者进行测试会给患者带来可怕的结果。

有人建议我如何为这项任务调整我的随机森林模型吗?

我自己尝试了 SMOTE 转换和其他采样技术,但也许你们有其他建议。

我也尝试过应用截止功能。

2个回答

随机森林是分类树的集合。如果超过 50% 的这些树预测 A 类(而不是 B 类),则随机森林将预测 A 类。

您可以做的是降低将其归类为 A 类所需的百分比(在您的情况下,患者感染了病毒)。这样,如果只有 20%(或 10%,或 5%,...)的决策树实际上预测 A 类,您就可以告诉随机森林预测 A 类。

我不知道您在随机森林算法中使用什么代码,但在大多数情况下,您应该能够询问随机森林对每个类的确定性百分比。

处理不平衡数据需要考虑两个主要事项:

  1. 训练期间:对大多数类别(健康患者)进行欠采样,以使模型不会偏向于预测健康

  2. 评估期间:使用合适的指标来尝试评估您的模型并尝试在微调随机森林时进行优化。对于不平衡的数据,您通常使用 F1 分数,但由于高召回率(更频繁地预测生病)在这里很重要,所以 F2 分数(或其他 F-beta 分数,其中 beta>1)更适合https://en.wikipedia.org/维基/F1_score

您还可以查看例如https://www.kdnuggets.com/2017/06/7-techniques-handle-imbalanced-data.html以了解有关如何处理一般不平衡数据的更多信息