来源:原始 Jupyter Notebook。内容已转换为网页阅读格式;下载原文件。
和回归模型一样,这一节介绍一些常用的方法来评估分类模型的好坏。
错误率和精度
错误率指分类错误的样本数占样本总数的比例:
精度和错误率相反,指的是分类正确的样本数占样本总数的比例:
查准率和查全率
对于二分类问题,可以将样本的真实类别和模型的识别结果组成四种情形:
- True Positive
- 真正类(TP),样本的真实类别是正类,并且模型识别的结果也是正类。
- False Negative
- 假负类(FN),样本的真实类别是正类,但是模型将其识别成为负类。
- False Positive
- 假正类(FP),样本的真实类别是负类,但是模型将其识别成为正类。
- True Negative
- 真负类(TN),样本的真实类别是负类,并且模型将其识别成为负类。
将这四种情形写成矩阵形式如下:
| 真实情况 | 预测结果 | |
|---|---|---|
| 正例 | 反例 | |
| 正例 | TP(真正例) | FN(假反例) |
| 反例 | FP(假正例) | TN(真反例) |
这个矩阵被称为 混淆矩阵(confusion matrix)。
查准率(precision)也叫做 准确率,定义如下:
查全率(recall)也叫做 召回率,定义如下:
查准率和查全率是一对矛盾的度量,一般情况下,查准率高时,查全率会偏低,查全率高时,查准率会偏低。以查准率为纵轴,查全率为横轴,可以画出查准率-查全率曲线,简称为 P-R曲线:

如果一个学习器的 P-R 曲线把另一个学习器的 P-R 曲线包住,则可以断言第一个学习器要好,比如上图中 A 和 B 的性能要大于 C。
如果两个学习器的 P-R 曲线发生了交叉,如上图中 A 和 B,这时两个学习器的性能就不好比较了,通常有几种不同的方法:
- 比较 P-R 曲线下面积的大小,但这个面积不太容易估算
- 比较 BEP 大小,BEP 是 平衡点(Break-Even Point)的简称,它是 查准率 = 查全率 时的取值,比如上图中 A 的 BEP = 0.8,B 的 BEP = 0.72,所以 A 优于 B
- 比较 大小,根据 还可以推广到一般形式 ,可以根据实际情况调整查准率和查全率的相对重要性
定义如下:
是基于查准率和查全率的 调和平均(harmonic mean)定义出来的:
定义如下:
是基于查准率和查全率的 加权调和平均 定义出来的:
和算术平均()和几何平均()相比,调和平均更重视较小值。
ROC 与 AUC
从混淆矩阵中还可以定义出 真正例率(True Positive Rate,简称 TPR)和 假正例率(False Positive Rate,简称 FPR):
将 TPR 作为纵轴,FPR 作为横轴,可以画出 ROC 曲线(ROC 全称为 Receiver Operating Characteristic,受试者工作特征):

通过 ROC 也可以判断两个学习器的性能优劣,如果一个学习器的 ROC 包住另一个学习器的 ROC,则认为第一个学习器要好。如果两个学习器的 ROC 发生交叉,则可以通过比较 ROC 曲线下的面积,这个面积有一个专门的名称叫 AUC(Area Under ROC Curve)。