我正在研究一个类大小非常不平衡的 2 类分类问题(95% 对 5%)。整体数据大小为 500k+,我进行了 70%-30% 的训练测试拆分。到目前为止,我已经尝试了以下模型(全部sklearn
):
- 逻辑回归:训练 AUC ~0.5,测试 AUC ~0.5
- 梯度提升:训练 AUC ~0.74,测试 AUC ~0.69
- 随机森林:训练 AUC 0.9999999,测试 AUC ~0.80
我看到了随机森林的完美 AUC,但在测试集上只有 ~0.8。#1 和 #2 中的数字对我来说看起来很正常,但我真的很害怕随机森林训练集上的“完美”AUC。
这是我应该预料到的还是在正常范围内?为什么这发生在随机森林而不是其他分类器?对此有什么合理的解释或猜测吗?
更新:我对随机森林模型进行了 10 倍 cv 和参数网格搜索,结果如下:
- 随机森林(原始):训练 AUC 0.9999999,测试 AUC ~0.80
- 随机森林(10 倍 cv):平均测试 AUC ~0.80
- 随机森林(网格搜索最大深度 12):训练 AUC ~0.73 测试 AUC ~0.70
我可以看到,通过网格搜索的最佳参数设置,训练和测试 AUC 不再那么不同,对我来说看起来很正常。然而,这个 0.71 的测试 AUC 比原始随机森林的测试 AUC (~0.80) 差得多。
如果是过拟合的问题,正则化后,测试的AUC应该会增加,但是现在和我相反,我很困惑。
我在这里有什么遗漏吗?为什么会这样?如果我要在这两种模型之间进行选择,我会选择具有更高测试 AUC 的模型,即“可能”过度拟合的随机森林,这有意义吗?