Python 我的ROC曲线的一个区域位于随机线下方,如何修改混淆矩阵?

Python 我的ROC曲线的一个区域位于随机线下方,如何修改混淆矩阵?,python,machine-learning,scikit-learn,deep-learning,roc,Python,Machine Learning,Scikit Learn,Deep Learning,Roc,在下面的roc曲线中,当阈值较低时,roc_曲线低于随机线,为什么会发生这种情况? 混乱矩阵如下所示, 我的问题是,为了得到随机线上的roc_曲线,混淆矩阵中的以下哪一个元素(TP、FP、TN、FN)应该增加或减少 预备赛 对模型对象调用predict_proba,为数据的每一行返回事件的预测概率=1。 ROC 绘制ROC时,相应的方法按照事件=1的预测概率按降序对数据进行排序。ROC精确地告诉您通过模型预测可以实现TPR和FPR的组合 这种形状的ROC所说的是: 由您的模型生成的事件=1的预

在下面的roc曲线中,当阈值较低时,roc_曲线低于随机线,为什么会发生这种情况? 混乱矩阵如下所示, 我的问题是,为了得到随机线上的roc_曲线,混淆矩阵中的以下哪一个元素(TP、FP、TN、FN)应该增加或减少


预备赛

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

ROC

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

这种形状的ROC所说的是:

  • 由您的模型生成的事件=1的预测概率与事件=1的真实概率相匹配比随机分配(用“随机线”表示)更符合约85%的数据。准确地说,这85%是事件=1的预测概率最高的85%行。
  • 由您的模型生成的事件=1的预测概率与事件=1的真实概率相匹配比随机分配(用“随机线”表示)更差,约占您数据的15%。准确地说,这15%是15%的行,具有最低的事件预测概率
  • 我从你的图表中取了85%和15%的值:这是我对ROC穿过对角线的点(“随机线”)的眼球估计值,应该仅作为说明。

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

    混淆矩阵

    混淆矩阵的结果与模型生成的事件=1的预测概率相同。单个混淆矩阵与指定单个行预测=1或预测=0的特定预测概率阈值相关。单个混淆矩阵由ROC处的单个点表示,因此您无法通过操纵混淆矩阵元素来实际操纵ROC形状。你应该用另一种方式来推理:ROC形状不知何故告诉你你的模型可以实现什么样的混淆矩阵


    希望这有帮助:-)

    谢谢你的回答,实际上我使用的是嵌入而不是一个热编码,通过检查训练与验证的损失图,没有过度拟合。顺便说一下,我使用一个数据集进行训练和验证,另一个数据集在上面测试模型(如roc所示)。关于我提供的信息,你能提供我更多的见解吗@Juan关于混淆矩阵,如果您要解决此问题,您将如何改变模型的性能以不获得该曲线(例如,对neg或viceversa处罚等级pos)@MostafaAlishahi您能否为列车数据提供单独的ROC曲线,为验证数据提供单独的ROC曲线,为测试数据提供单独的ROC曲线?实际上,您可以做的是利用模型使用的特征:尝试排除某些特征,例如,从识别开始:1)与目标变量具有非单调关系的特征,并排除此类特征;2)最相关的特征对,并排除其中一对。
                Predicted
                Neg   Pos
    
    Actual Neg  1656  860
    Actual Pos  145  331