模型评估与选择概述

本文总结讨论了模型(主要针对二分类问题)评估与选择常用方法

Hold-out Method

留出法直接将数据集 D 分为两个互斥的集合,其中一个作为训练集(Training Set) S,另一个作为测试集(Testing Set) T。在 S 上训练模型后,用 T 来评估其预测误差,作为对泛化误差的估计

  • 训练集和测试集的划分要尽量保持数据分布的一致性,比如采用分层采样
  • 单次使用留出法得到的结果往往不够稳定可靠,一般采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,同时可以得到估计结果的标准差
  • 常用的做法是将大约 2/3~4/5 的样本用于训练,剩余样本用于测试

Cross Validation

交叉验证法先将数据集划分为 k 个大小相似的互斥子集,每个子集尽可能保持数据分布的一致性。然后,每次用 k-1 个子集进行训练,余下的那个子集作为测试集,从而可以进行 k 次训练和测试,最终返回这 k 个测试结果的均值

  • 交叉验证结果的稳定性很大程度上取决于 k 的取值,k 通常取值 10、5、20
  • k 折交叉验证通常要随机使用不同的划分重复 p 次,最终评价结果是这 p 次 k 折交叉验证结果的均值,例如“10次10折交叉验证”
  • 假定数据集 D 中有 m 个样本,若 k=m,则得到交叉验证的一个特例:“留一法”,留一法不受样本随机划分的影响,但是计算开销较大。

Parameter Tuning

机器学习中通常涉及两类参数:

  • 算法的参数(“超参数”):数目常在 10 以内,通常由人工设定多个参数候选值后产生模型
  • 模型的参数:数目可能很多,例如深度学习模型甚至有上百亿个参数,一般通过学习来产生多个候选模型(例如神经网络在不同轮数停止训练)

Grid Search:对每个参数选定一个范围和变化步长,所有参数的组合数目即为所需训练的模型数,这是在计算开销和性能估计之间进行折中的结果。

我们通常把学得模型在实际使用中遇到的数据称为 Testing Set,而模型评估与选择中用于评估测试的数据集通常被称为 Validation Set。例如,用测试集上的判别效果来估计模型在实际使用时的泛化性能,而把训练集数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参


Precision / Recall / F1

以二分类问题为例,可以将样例根据其真实类别与分类算法预测类别的组合划分为:

  • TP: true positive
  • FP: false positive
  • TN: true negative
  • FN: false negetive

Confusion Matrix

分类结果的“混淆矩阵”(Confusion Matrix)如下:

Precision & Recall

根据混淆矩阵定义 Accuracy, Precision, Recall 如下:

$$Accuracy=\frac{TP+TN}{TP+FP+TN+FN}$$
$$Precision=\frac{TP}{TP+FP}$$
$$Recall=\frac{TP}{TP+FN}$$

P-R Curve

查准率(Precision,也叫“准确率”)和查全率(Recall,也叫“召回率”)是一对矛盾的度量,通常在一些简单的任务中,才可能同时使查准率和查全率都很高。

在很多情形下,我们可以根据预测结果对样例进行排序,排在最前面的是有可能是正例的样本,排在最后的是最不可能是正例的样本,按此顺序逐个把样本作为正例进行预测,则每次均可计算出一对 Precision 和 Recall,分别以 Precision 和 Recall 为纵轴和横轴,就可以得到“P-R 曲线”

  • 如果一个学习器的 P-R 曲线被另一个学习器的 P-R 曲线完全包住(比如 C 被 B 完全包住),则可以判定后者的性能优于前者
  • 如果两个学习器的 P-R 曲线发生交叉(比如 A 与 B 发生交叉),则难以断言二者孰优孰劣,只能在具体的情况下进行比较
  • 然而在很多情况下,如果仍然希望将学习器 A 和 B 比个高低,这是一个比较合理的判据是 P-R 曲线下面积的大小 (AUC-PR),但这个面积不太容易估算,所以就需要一个综合 Precision 和 Recall 的指标

F1 Score

平衡点(Break-Even Point)是 Precision = Recall 时的取值,但 BEP 还是过于简化了些,更常用的是 F1 度量

$$F1=\frac{2 \times Precision \times Recall}{Precision+Recall}=\frac{2 \times TP}{样例总数+TP-TN}$$

在不同的应用中,对 Precision 和 Recall 的重视程度可能有所不同。例如在商品推荐中,为了尽可能减少对用户的打扰,Precision 更重要;而在逃犯检索系统中,为了尽可能不漏掉逃犯,Recall 更重要

实际上,F1 是基于 Precision 和 Recall 的调和平均(harmonic mean)来定义的

$$\frac{1}{F1}=\frac{1}{2}.(\frac{1}{P}+\frac{1}{R})$$

F1 更一般的形式是加权调和平均,它能让我们表达出对 Precision/Recall 的不同偏好,其中 $\beta>0$ 度量了 Recall 对 Precision 的相对重要性

  • $\beta=1$ 时,退化为标准的 F1
  • $\beta>1$ 时,Recall 有更大影响
  • $\beta<1$ 时,Precision 有更大影响

$$\frac{1}{F_{\beta}}=\frac{1}{1+\beta^2}.(\frac{1}{P}+\frac{\beta^2}{R})$$

$$F_\beta = \frac{(1+\beta^2) \times P \times R}{(\beta^2 \times P)+R}$$

Macro & Micro Measure

很多时候我们有多个二分类混淆矩阵,例如进行多次训练或者在多个数据集上进行训练,此时我们希望计算出全局性能,综合考虑 n 个混淆矩阵上的 Precision 和 Recall

  • 方法 1:先在各混淆矩阵上分别计算 P 和 R,在计算平均值,这样就得到 macro-P、macro-R 和 macro-F1
  • 方法 2:先将各混淆矩阵的对应元素进行平均,再基于这些平均值计算得到 micro-P、micro-R 和 micro-F1

ROC / AUC-ROC

ROC Curve

  • 很多学习器是为测试样本产生一个实质或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值则分为正类,否则为反类。这样分类过程就相当于在概率值排序中以某个截断点(cut point)将样本分为两部分,前一部分作为正例,后一部分作为反例。
  • 在不同的任务中,我们可以根据任务需求的不同采用不同的截断点,若更重视 Precision,则应选择排序靠前的位置进行截断;如果更重视 Recall,则应选择排序靠后的位置进行截断。
  • 因此,排序本身的质量好坏,体现了综合考虑学习器在不同任务下“期望泛化性能”的好坏,ROC 曲线就是从这个角度研究学习器泛化性能的有力工具。

ROC 的全称是 “受试者工作特征”(Reveiver Operating Characteristic)曲线,源自二战中用于敌机检测的雷达信号分析技术

  • 与 P-R 曲线相似,首先,我们根据学习器的预测结果对样例排序
  • 然后,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要的值,分别作为横纵轴,就得到 ROC 曲线
  • ROC 曲线的纵轴是“真正例率”(True Positive Rate, TPR),横轴是“假正例率”(False Positive Rate, FPR)

$$TPR=\frac{TP}{TP+FN}=Sensitivity$$
$$FPR=\frac{FP}{TN+FP}=1-Specificity=1-\frac{TN}{TN+FP}$$

ROC 曲线的对角线对应于 随机猜测 模型,而点 (0,1) 对应于将所有正例排在所有反例之前的 理想模型

现实任务中通常是利用有限个样例来绘制 ROC 图,无法产生光滑的 ROC 曲线,只能绘制出 (b) 中的近似 ROC 曲线

AUC-ROC

  • 进行学习器的比较时,与 P-R 图类似,若一个学习器的曲线被另一个完全包住,则可断定后者优于前者
  • 若两个学习器的曲线发生交叉,则较为合理的判据为 ROC 曲线下的面积,即 AUC-ROC(Area Under ROC Curve)
  • 实际应用中,划分正例和负例的最优阈值为 ROC 曲线上最接近(0,1)的点

Bias-Variance Dilemma

“偏差-方差分解”是解释学习算法泛化性能的一种重要工具,泛化误差可以分解为偏差、方差和噪声之和。

  • 偏差:度量学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力
  • 方差:度量了同样大小的训练集的变动所导致的的学习性能的变化,即刻画了数据扰动所造成的影响
  • 噪声:表达了当前任务中任何学习算法所能达到的期望泛化误差的下限,即刻画了学习问题本身的难度

偏差-方差分解说明,泛化性能是由学习算法本身的能力、数据的充分性以及学习任务本身的难度共同决定的。一般来说,偏差与方差是相互矛盾的。

  • 在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率
  • 随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动逐渐被学习器学到,方差逐渐主导泛化错误率
  • 在训练程度充足后,学习器的拟合能力非常强,训练数据发生轻微扰动都会导致学习器发生显著变化,若训练数据自身、非全局的特性也被学习到,则将发生过拟合

Reference

  • 周志华. (2016). 机器学习 : = Machine learning. 清华大学出版社.