保护私人版权,尊重他人版权。转载请注明出处并附带页面链接
前言
在项目实践中,我们不能单凭直觉选择算法模型并使用。需要有一些评价依据,且这些评价依据可以根据需求灵活调整。既可以说服自己,也可以说服他人。
本文,将总结回顾一下 ML 领域训练、测试与验证过程中涉及的几个基本概念。然后,总结笔者最近一段时间,在『推荐系统』和『机器学习』的学校过程中,遇到的几种评价方式——其中,有一些方式在国内 机器学习或推荐系统教材中并不多见,是笔者在查阅文献过程中无意中发现的,值得类似笔者的新人同学多加留意。本节提及的许多方法、图像,可能并不来源于计算机或理论数学的研究,有的甚至来自于医学领域$^{[4-6]}$。但无论如何,各种模型的测评问题,大多回归到一致性检验问题。
说在最后的话:公式部分若有不适可直接略过,不影响整体理解。期待宝贵的建议和意见。
正文
基础知识
样本集、训练集、测试集与验证集
训练集(traning set) 和 测试集(testing set)是由 样本集 划分得到的。不同的划分方式,可能影响评价结果的可靠性。因此,有不同的划分方式,总结起来包括:留出法、交叉验证法和自助采样法(bootstrap sampling)。
具体采样方式不影响后文理解,因此这里详细不展开,有兴趣的同学可以通过文末参考文献查阅[1. 25-28]。
在模型选择和调参过程中,可以对训练集进一步划分得到新的训练集和验证集(validation set) 。注意,验证集用于反复验证调参,测试集用于评价模型性能(比如用于评价不同算法模型间的泛化能力——泛化误差)。
混淆矩阵
机器学习解决的是分类问题,假设 现在有一个二分类问题,将一个模型的分类结果与样本集比较,可以得到一个混淆矩阵,如下图。
经典图来啦!

翻译一下~
TP (True Positve)
真实值为真,模型判断结果为真
FP (False Positve)
真实值为假,模型判断结果为真
TN (True Negative)
真实值为假,模型判断结果为假
FN (False Negative)
真实值为真,模型判断结果为假

常见
P-R 曲线
P-R 曲线即 Precision (准确率) - Recall (召回率) 曲线,如下图$^{[3]}$。
其中,准确率 ( Precision,也称查准率 ),体现判断结果为真的数据中,正确判断的量。
若从前文所述的混淆矩阵出发,则其计算方法如下。
$$
P = \frac{TP}{TP + FP}
$$
而召回率 ( Recall,也称查全率 ),体现真实值为真的数据中,判定结果为真的量。
若从前文所述的混淆矩阵出发,则其计算方法如下。
$$
R = \frac{TP}{TP + FN}
$$
在实践中,我们无法保证 P 值趋向于 1 的同时,R 值也趋于 1。因此,我们常常需要绘制 P-R 曲线观察当前模型在不同 R 值下,P 值是多少,并比较模型之间的P-R曲线,来判定优劣。

比较 P-R 曲线有两种常见方法:
面积
比较曲线下的面积,越大,则可能越好。
注意:若整个定义域范围内,B曲线完全『包住』C曲线,即:$\forall Recall_c = Recall_b , \exists Precision_c <= Precision_b$,则可以断言 B 优于 C。
BEP (平衡点)
从坐标系零点出发,画一条 45° 的射线,该射线一定会穿过每条曲线,其交点称为平衡点。则,我们可以观察,BEP越靠外的,可能越好。
$F_\beta$ 与 $F_1$
需要注意,P-R 曲线通常是不均匀的,有的模型,其 P-R 曲线虽然在 R 值较高时,表现不加,但在 R 值小时,其 P 值远高于其他模型。此时,该模型对于注重 P 值的业务场景可能是更好的方法(比如,推荐系统中,希望预测结果中符合用户需求的数量尽可能多,而不符合需求的数量尽可能少)。
在实际应用中,以面积作为比较可能无法体现 P 与 R 之间的侧重点。以 BEP 作为比较又可能不够客观,此时我们可以使用 $F_\beta$ (调和均值) 作为评价依据。$\beta = 1$ 时,则变为 $F_1$ 度量;$\beta < 1$ 时,P 值权重大,$\beta > 1$ 时,R 权重大。$\beta$ 可以依赖直觉人为指定,也可以通过多次调参验证计算。
$$
F_\beta = \frac{(1 + \beta^2) \times P \times R}{ (\beta^2 \times P) + R}
$$
$$
F_1 = \frac{2 \times P \times R}{ P + R}
$$
在重复验证中,可能得到多个混淆矩阵,此时我们可以更进一步的计算 F 值
- 各混淆矩阵的P值、R值、F值平均,分别的到 macro-P、macro-R、macro-F
- 各混淆矩阵对应元素平均,再计算P值、R值、F值,分别得到 micro-P、micro-R、micro-F
ROC 与 AUC
ROC ( Receiver Operating Characteristic, 受试者工作特征 ) 曲线$^{[8]}$,由两个维度组成:真正例率(True Positive Rate, TPR) 和假正例率(False Positive Rate, FPR)。顾名思义,$TPR$ 等于 $Recall$。
$$
TPR = \frac{TP}{TP + FN}
$$
$$
FPR = \frac{FP}{TN + FP}
$$
一个示意图如下$^{[8]}$,图 (a) 是分类器 A 和 B 的的 ROC 曲线,图 (b) 是两者曲线面积的变化过程。通过 $TPR$ 和 FPR 的计算方式(定义)结合 图(b) 的观察结果,我们可以直观感受到 B 总体优于 A。但在 $FPR > 0.6$ 时,分类器 B 的 ROC 曲线面积显然小于分类器 A,也即: $FPR > 0.6$ 时,分类器 A 优于分类器 B。此后,我们就可以从实际业务出发,考虑选择哪个分类器了。
新人注意!!!这里不同的 FPR 下,得到不同的 TPR。是通过变化 阈值 Cut-off 后,依据分类机的分类结果计算得到的(后文有介绍)。

以推荐系统为例,如果我现在要结合 ML/DL 做一个智能题目推荐 ,推荐的目的是尽可能让学生接触到所有他需要的题目,则,显然,这时候我们希望需要的题目尽可能被推送(召回率)的同时,推送的错误内容尽可能少,则通过 ROC 图像,我们可以估计,选择分类器 B,且调整阈值控制 FPR 在 0.2,是相对合适的方案。
Kappa系数
Kappa系数 ( Kappa-Statistics, Cohen’s Kappa, 科恩 Kappa 系数 ) ,最早出现于 1960 年$^{[3]}$。由于其可基于混淆矩阵计算分类精度,因而在推荐系统一类的论文中也常见,其本质是计算偶然一致的概率。
Kappa 系数包含 $p_0$ 和 $p_e$。其中, $p_0$ 是分类/评分与真实值一致的比例 (the proportion of units in which the judges agreed$^{[3]}$),等价 ML 中常见的另一指标——准确率 (Accuracy)。$p_e$ 是偶然一致的的占比 (the proportion of units for which agreement is expected by chance$^{[3]}$),基本方法是计算各分类真实数量与分类器实际数量的乘积之比。
公式定义如下。
$$
设 i 为行标, j为列标, n为分类数量, x_{ij}表示混淆矩阵中的像元\
p_o = Accuracy = \frac{\sum_{i = 1}^{n}x_{ii}}{\sum_{i = 1}^{n}\sum_{j = 1}^{n}x_{ij}} \
p_e = \frac{\sum( 类型i的分类总数 \times 类型i的实际总数 )}{1 - 样本总数^2} = \frac{\sum_{i=1}^{n}x_{i+}x_{+i}}{1 - (\sum_{i = 1}^{n}\sum_{j = 1}^{n}x_{ij})^2} \
K = \frac{p_o - p_e}{1 - p_e}
$$
若以前文二分类混淆矩阵计算,则对应的 $p_o$ 、 $p_e$ 和 Kappa 系数。
$$
p_o = \frac{TP + TN}{TP + FP + TN + FN} \
p_e = \frac{(TP + FN) \times (TP + FP) + (FP + TN)\times( FN + TN)}{(TP + FP + TN + FN)^2}
$$
关于 K 值多少较好,百科和网上能搜到的资料普遍按照五个级别来区分:[0.0, 0.20] 极低的一致性(slight)、[0.21, 0.40] 一般的一致性(fair)、[0.41, 0.60] 中等的一致性(moderate)、[0.61, 0.80] 高度的一致性(substantial)和 [0.81, 1]几乎完全一致(almost perfect)。但原始论文并没有给出这样分类的解释,笔者暂时没有找到相关论文对此论证,因此,该分级建议仅作参考,在实际应用中,用于对比多个算法模型的 Kappa 系数衡量分类精度,依然是可行的。
其他
这里是面向英文菜鸡(没错,就是笔者)的一点儿扩展延伸。
关于 Cut-off
有些英文不好的新人菜鸟在看外文文献时,偶尔会看到 F1、Precision、 Kappa系数或其他指标与 Cut-off 组合得到的曲线,可能会有点懵逼,如下图$^{[2]}$。


这里的 Cut-off 实际上就是阈值、截止值。很多时候,我们是无法直接判断真假的。例如:如何判断『我爱跑步』 与 『我爱运动』是否相似?如果以对应位差异作为相似度,则这里相似度为 2(完全一致为 0,完全不一致为 1)。如果我们定义 Cut-off 为 1,则这两个字符串被判定为 不相似。如果我们定义 Cut-off 为 2,则这两个字符串被判定为 相似。这时我们知道了,不同的 Cut-off 值下,同一模型可能表现出不同的判定结果,因此,就有了各种评价指标与 Cut-off 结合得到的曲线。
更多一致性检验方法
上面提及的方法,以及各个系数与 Cut-off 结合得到的曲线,已经足够应对大多数情况。这里再抛一些砖,作为了解。
Fleiss kappa (弗莱斯 Kappa 系数)$^{[5]}$
Kappa 系数的泛化,当存在多个评分器时适用。关于评分器,原文为 raters,个人理解为多个分类器,相应得到的是多维的混淆矩阵。科恩 Kappa 只能对比两个 raters 的一致性(在本文中,即对比真实分类与分类结果,得到的是二维的混淆矩阵)
Weighted Kappa(加权 Kappa 系数)
Kappa 系数的加权版本,我们可以通过线性加权、幂加权等方法,调整不同分类结果对一致性检验结果的影响。
ICC组内相关系数检验用于分析多次数据的一致性情况
功能上与Kappa系数基本一致。ICC分析定量或定类数据均可,但是Kappa一致性系数通常要求数据是定类数据$^{[7]}$
Kendall (秩相关系数)
与 Kappa 系数的主要区别在于:Kendall 会关注分类的有向性(分类等级)$^{[6]}$。值区间为 [-1, 1],可用于描述正相关、负相关
Pearson (皮尔森相关系数)
判断两个序列的线性相关度,计算值落在 [-1, 1] 之间,0 为不相关,越趋近 -1 或 1,越相关(一致性越强)
Spearman (斯皮尔曼系数)
计算值落在 [-1, 1] 之间,一般定义为等级量的 皮尔森相关系数(这部分我理解不深刻,个人暂且认为有向性版本的皮尔森相关系数)
其实再延生思考一下,推荐系统的协同过滤原理就是寻找用户与用户、物品与物品或用户与物品之间的关联性,这些方法某些时候都可以考虑作为相似度度量。但实际应用前需要比较差异,结合数据特征选取。
总结
本文主要介绍了机器学习中,几种常见的模型评价方式,包括:P-R曲线、ROC曲线、AUC曲线、F1 和 Kappa系数。还引申介绍了不同度量与 Cut-off 结合展现模型性能的方式。
不同的评价指标从不同的维度描述模型性能,同时,不同的业务需求对不同的指标具有不同的要求,因此,选择什么评价方式作为依据,是要看业务需求的,不能一概而论。例如:在推荐系统中,我们希望预测结果中,目标用户感兴趣的内容尽可能多,不感兴趣的内容尽可能少,这时,对 模型的 Precision 可能比 Recall 值更重要,相应的,我们就可以将 ROC曲线、Precision 与 Cut-off 曲线、 Kappa-Statistic 与 Cut-off 曲线作为主要评价依据(其他评价依据可以按需计算)。
参考
- 周志华. 机器学习[M]. 清华大学出版社, 2016.
- Brocken E , Hartveld A , Koning E D , et al. Bing-CF-IDF+: A Semantics-Driven News Recommender System[M]// Advanced Information Systems Engineering. Springer, Cham, 2019.
- Precision-Recall. https://scikit-learn.org/stable/auto_examples/model_selection/plot_precision_recall.html
- Cohen, J. A Coefficient of Agreement for Nominal Scales[J]. Educational & Psychological Measurement, 1960.
- Fleiss, Joseph L . Measuring nominal scale agreement among many raters.[J]. Psychological Bulletin, 1971.
- Kappa statistics and Kendall’s coefficients. https://support.minitab.com/en-us/minitab/18/help-and-how-to/quality-and-process-improvement/measurement-system-analysis/supporting-topics/attribute-agreement-analysis/kappa-statistics-and-kendall-s-coefficients/#a-comparison-of-fleiss-s-kappa-and-cohen-s-kappa
- 检验一致性,你用哪种方法?https://zhuanlan.zhihu.com/p/77782584
- Fawcett T . An introduction to ROC analysis[J]. Pattern Recognition Letters, 2005.