我目前正在构建一个模型来预测源自 2018 年第一季度的贷款的早期抵押贷款拖欠(在 2 年内拖欠 60 天以上)。我最终会超时训练(在 2015 年第 4 季度开始的贷款),但现在我只是在进行及时训练(2018 年第 1 季度的训练和测试)——即使这样我也觉得很有挑战性。该数据集包含约 400k 的观察结果,其中约 99% 为非违法行为,约 1% 为违法行为。到目前为止,我的想法是使用精确度、召回率和 作为性能指标。
我正在使用 Python。我尝试过的事情:
- 模型:逻辑回归和随机森林。
- 模型选择:使用 GridSearchCV 调整超参数 评分(在优化对数损失、ROC-AUC、Cohen's Kappa 时,结果没有显着差异)。
- 处理不平衡的数据:我尝试了各种比率的随机欠采样,并确定了 ~0.2 的比率。我还尝试弄乱类权重参数。
不幸的是,我的验证和测试 分数只有 0.1 左右,(精度和召回率通常都接近 0.1)。这似乎很差,因为您可以解决许多问题0.9+ 的分数。同时我听说没有“好” 范围,即它是任务相关的。实际上,与类频率成比例预测的虚拟分类器只能实现精确度、召回率和 0.01。
我试图找到关于这类任务的“好”分数的参考资料,但我似乎找不到太多。其他人经常报告 ROC-AUC 或 Brier 分数,但我认为这些很难从业务附加值的角度来解释。一些报道但是由于数据泄漏或报告对欠采样数据的测试性能而看到过于乐观的结果。最后,我看到有些人通过预期业务成本而不是报告来衡量混淆矩阵结果,这似乎是一条更好的路线。
我的问题是:(1)是 0.1 的分数总是不好?,(2)优化是否有意义 还是我应该使用另一个指标?,(3)如果 是合适的,0.1 的分数很差,我该如何提高我的表现?