准确率为什么常常“骗人”
训练一个分类模型后,最直觉的指标是准确率(Accuracy):预测对的样本占比。但当样本极度不平衡时,它会严重误导。比如 1000 个样本里只有 10 个是“患病”,模型只要一律预测“健康”,准确率就高达 99%,却一个病人都找不出来。
混淆矩阵:一切指标的起点
要看清模型到底错在哪,先看混淆矩阵:真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)四个格子,几乎所有分类指标都由它们的组合定义。
- 精确率(Precision)= TP / (TP + FP):预测为“正”的里面,有多少是真的正。关注“别冤枉好人”时用它。
- 召回率(Recall)= TP / (TP + FN):真正的正例里,有多少被找了出来。关注“别漏掉坏人”时用它。
- F1 = 2·P·R / (P + R):精确率与召回率的调和平均,用来在两者之间取平衡。
精确率与召回率的取舍
两者往往此消彼长。把判定为正的门槛调低,召回率上升但精确率下降;门槛调高则相反。选哪个为主,取决于业务:垃圾邮件过滤宁可放行、不可错杀(偏精确率);疾病筛查宁可不漏、可以多复查(偏召回率)。
ROC 与 AUC:换个角度看排序能力
ROC 曲线把不同阈值下的真正例率(TPR)与假正例率(FPR)画在一起,曲线下的面积就是 AUC。AUC 衡量的是模型把正样本排在负样本前面的整体能力,与阈值无关;在类别极不平衡时,PR 曲线(精确率-召回率曲线)往往比 ROC 更能反映真实表现。
小结
没有放之四海皆准的“好指标”。先想清楚业务最怕哪种错误——是误报还是漏报,再据此选择指标,并在阈值上做取舍,评估才不会停留在漂亮的数字上。
【参考来源】综合整理自公开发布的机器学习教材与行业技术资料。
机器学习