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. 清华大学出版社.