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

python - 我的ROC曲线的某个区域在随机线以下,如何修改混淆矩阵?-LMLPHP

            Predicted
            Neg   Pos

Actual Neg  1656  860
Actual Pos  145  331

最佳答案

初赛

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



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

ROC的这种形状表示的是:


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


我从您的图表中获取了85%和15%的值:这是我对ROC穿过对角线(“随机线”)的视线估计,仅应视为示例性的。
发生这种现象的一种可能原因:这可能是由于过度拟合的结果与一键编码的分类特征有关,对于您的数据集的各个子种群,其分类的“行为”有所不同。您可能需要尝试在拟合模型之前排除一些变量,并寻求ROC形状的改进。

混淆矩阵

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

希望这可以帮助 :-)

关于python - 我的ROC曲线的某个区域在随机线以下,如何修改混淆矩阵?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58840221/

10-12 18:27