我需要您的帮助来提高我的模型性能。正如大多数欺诈检测所发生的情况一样,我有一个不平衡的数据集 (0.1/0.9)。我想优化目标 1 和 0 的召回率,因为在一种情况下,我想避免欺诈检测,另一方面,我想限制将非欺诈客户定位为欺诈的成本,因为 5% 的不正确客户分类会使我的收入每次减少 3,000 欧元(而针对正确的欺诈行为将使我为每个检测到的客户节省 1,000 欧元的损失)。
我的第一个问题是:根据这个问题,您会考虑哪些指标?我更注重回忆,但我会阅读你的意见。
第二个问题:如何提高模型性能?
到目前为止,我在不降低阈值的情况下得到的最好结果是:
准确度:0.89 混淆矩阵: [[3153 279] [145297]]
分类报告: 精确召回率 f1-score 支持
0 0.96 0.92 0.94 3432
1 0.52 0.67 0.58 442
accuracy 0.89 3874
如果我降低阈值以增加目标 1 的召回率:
准确度:0.61 混淆矩阵: [[1959 1473] [ 42 400]]
分类报告: 精确召回率 f1-score 支持
0 0.98 0.57 0.72 3432
1 0.21 0.90 0.35 442
accuracy 0.61 3874
我尝试了几种模型: 线性回归、XGBoost、随机森林和 SVM
此外,甚至是过采样/去采样技术(仅在训练集上) 随机过采样、随机欠采样、SMOTE
您还有其他建议吗?
LogisticRegression
比 LinearRegression
更适合这个分类问题,所以如果你还没有尝试的话,值得一试。
ROC 指标总结了召回率和误报率。理想的 ROC 指标为 1.0 对应于实现完美召回且没有误报的场景。
sklearn
有一些 ROC 指标 的加权变体。这提供了一种在模型训练后对模型进行评分的方法。
请注意,您不能使用此类指标直接优化中的模型
sklearn
- 您需要切换到 PyTorch 或类似工具并使用自定义损失函数。