MATLAB中Multiclass Logistic Regression绘制各分类ROC曲线AUC全为1问题求解
多分类逻辑回归ROC曲线错误修复方案
核心问题根因
你生成的ROC曲线完全重合、AUC全为1的问题出在自定义计算的diffscore变量上:
- One-vs-Rest多分类逻辑回归输出的
scores矩阵中,第classNum列本身就是样本属于目标类别的置信度,不需要额外做差值计算 - 你自定义的
diffscore是目标类别得分与其余所有类别最高得分的差值,这个值只能反映模型是否将该样本判定为目标类别(值为正则判定为目标类,为负则判定为其他类),完全丢失了原始置信度的排序信息。只要模型在测试集上预测准确率为100%,所有类别的AUC都会计算为1,且ROC曲线形态完全一致
代码修改方案
不需要保留diffscore的计算逻辑,直接替换生成ROC的代码即可:
classNum=3; % 替换为你要生成ROC曲线的目标类别 % 直接取目标类别的原始得分作为置信度输入perfcurve [xROC,yROC,~,auc] = perfcurve(y_test, scores(:,classNum), classNum);
验证方法
- 输出
scores矩阵的数值,确认每个维度的取值范围在0-1之间,符合sigmoid函数的输出特征 - 打印不同类别的AUC数值,确认不同类别之间存在符合预期的差异
内容的提问来源于stack exchange,提问作者STEMQs
相关产品推荐
相关产品推荐

