非排序分类器(如单类SVM)能否计算AUC?是否仍可称为AUC?
好问题!我来帮你拆解这两个核心疑问:
1. 仅计算AUC来评估模型性能是否可行?
当然可行,但得先明确这种场景下的计算逻辑和局限性。
AUC的本质是衡量模型的排序区分能力:随机抽取一对正样本和负样本,模型给正样本更高“优先级分数”的概率。当你的单类SVM只能输出0/1二元结果时,相当于所有被预测为正的样本被赋予了相同的“分数1”,负样本则是“分数0”。
这种情况下计算AUC的方式是:
- 统计所有正样本预测为1且负样本预测为0的配对数
- 加上一半的「正/负样本预测结果相同」的配对数(因为这类配对中,模型对正/负的区分是随机的,贡献0.5的权重)
- 除以总配对数(正样本数×负样本数)
举个实际例子:假设10个正样本里8个被预测为1、2个为0;15个负样本里3个为1、12个为0。总配对数是10×15=150,计算下来AUC=(8×12 + 0.5×(8×3+2×12))/150 = 0.8。
这种计算完全能反映模型在当前阈值下的区分能力,但要注意:这是固定单一阈值下的简化版AUC,和基于连续分数的ROC AUC(遍历所有阈值的曲线面积)不是一回事——后者能展现模型在不同阈值下的整体表现,而前者只对应ROC曲线上的一个点。
2. 计算得到的结果是否仍可被称为AUC?
严格意义上,传统的ROC AUC是基于模型输出的连续置信度分数(比如概率、距离值),通过遍历所有可能阈值生成ROC曲线后计算的面积。但当你只有二元输出时,相当于只能得到ROC曲线上的一个点,此时计算的“面积”是这个点对应的简化结果。
在实际的机器学习讨论中,很多人会把这种结果称为AUC,但一定要明确说明它的局限性:它无法体现模型的阈值鲁棒性,只能反映当前阈值下的区分能力。
另外,其实单类SVM并非完全不能输出分数——它可以计算样本到决策超平面的距离,这个距离值完全可以作为排序用的置信度分数,用这个分数来计算标准的ROC AUC会更有价值,因为它能体现模型对不同样本的置信度差异,也符合AUC原本的评估逻辑。
内容的提问来源于stack exchange,提问作者mousa alsulaimi

