首页 > 解决方案 > 我的 ROC 曲线的某个区域在随机线下方,如何修改混淆矩阵?

问题描述

在下面的 roc 曲线中,当阈值较低时,roc_curve 低于随机线,为什么会发生这种情况?混淆矩阵看起来像这样,我的问题是混淆矩阵中的以下哪些元素(TP,FP,TN,FN)应该增加或减少,以便在随机线上获得 roc_curve?

ROC曲线

            Predicted
            Neg   Pos

Actual Neg  1656  860
Actual Pos  145  331

标签: pythonmachine-learningscikit-learndeep-learningroc

解决方案


预赛

predict_proba,在您的模型对象上调用,为您的数据的每一行返回event=1 的预测概率

绘制 ROC 时,相应的方法会根据 event=1 的预测概率按降序对数据进行排序。ROC 准确地告诉您可以通过模型预测实现哪些 TPR 和 FPR 组合。

中华民国的这个形状说的是:

  1. 对于大约 85% 的数据,由您的模型生成的 event=1 的预测概率比随机分配(由“随机线”表示)更好地匹配event=1 的真实概率。准确地说,这 85% 是 85% 的行,事件的预测概率最高= 1。
  2. 对于大约 15% 的数据,由您的模型生成的事件 = 1 的预测概率与事件 = 1 的真实概率相匹配,随机分配(由“随机线”表示)更差。准确地说,这 15% 是 15% 的行,事件的预测概率最低= 1。

我从您的图表中获取了 85% 和 15% 的值:这是我对 ROC 穿过对角线(“随机线”)的点的眼球估计,应仅视为说明性的。

这种现象的一个可能原因:这可能是与单热编码分类特征相关的过度拟合的结果,其类别对于数据集的各种子群体“表现”不同。您可能希望在拟合模型之前尝试排除一些变量,并寻找 ROC 形状的改进。

混淆矩阵

混淆矩阵由您的模型生成的相同预测的 event=1 概率产生。单一混淆矩阵与特定的预测概率阈值相关,用于分配预测 = 1 或预测 = 0 的单行。单个混淆矩阵由 ROC 处的一个点表示,因此您实际上无法通过操纵混淆矩阵元素来操纵 ROC 形状。您应该反过来推理:ROC 形状以某种方式告诉您模型可以实现哪些混淆矩阵。

希望这可以帮助 :-)


推荐阅读