《机器学习》第二章 模型评估与选择

经验误差与过拟合

错误率(error rate):$E=\frac{a}{m}$

精度(accuracy):$1-\frac{a}{m}$

误差(error):学习器的实际预测输出与样本的真实输出之间的差异

训练误差(training error)/经验误差(empirical error):学习器在训练集上的误差

泛化误差(generalization):学习器在新样本上的误差

过拟合(overfitting):学习器把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降

欠拟合(underfitting):对训练样本的一些性质尚未学好

模型选择(model selection)

评估方法

测试集(testing set)

测试误差(testing error)

通过对数据集D进行适当的处理,从中产生出训练集S和测试集T

留出法

“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,一个作为训练集S,另一个作为测试集T。

训练/测试集的 划分要尽可能保持数据分布的一致性,可采取分层采样。使用留出法时,一般采用若干次随机划分、重复进行实验评估后取平均值作为流出法的评估结果。常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。

交叉验证法

“交叉验证法”(cross validation)先将数据集D随机p次划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到。然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,共进行k-1组测试。称为“p次k折交叉验证”。

留一法(Leave-One-Out),令k=数据集中的样本数。

自助法

“自助法”(bootstrapping),以自助采样法(bootstrap sampling)为基础,给定包含m个样本的数据集D,对它进行采样得到数据集D’:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,就得到了包含m个样本的数据集D’。样本在m次采样中始终不被采到的概率是$${\lim_{m \to +\infty}}(1-\frac{1}{m})^m \mapsto \frac{1}{e}\approx 0.368$$

将D’作为训练集,D\D’作为测试集。这样的测试结果,亦称“包外估计”(out-of-bag estimate)

调参与最终模型

“调参”(parameter tuning),一般对每个参数设置一个范围和变化步长,产生几个候选值,从几个候选值中产生选定值。

在模型选择完成后,学习算法和参数设置已选定,此时应该用数据集D重新训练模型。

性能度量

性能度量(performance measure):衡量模型泛化能力的评价标准

设样例集$D = { ( x_1, y_1), (x_2, y_2), … , (x_m, y_m) }$

回归任务常用“均方误差”(mean squared error)

$$E(f; D) = \frac{1}{m}\sum_{i=1}^{m}(f(x_i) - y_i )^2$$

更一般的形式为$$E(f; D) = \int_{x \sim D}(f(x) - y)^2 p(x) dx$$

错误率与精度

错误率$$E(f; D) = \frac{1}{m}\sum_{i=1}^{m} \mathbb I (f(x_i) \neq y_i )$$

更一般的形式为$$E(f; D) = \int_{x \sim D} \mathbb I (f(x) \neq y) p(x) dx$$

精度$$E(f; D) = \frac{1}{m}\sum_{i=1}^{m} \mathbb I (f(x_i) = y_i )$$

更一般的形式为$$E(f; D) = \int_{x \sim D} \mathbb I (f(x) = y) p(x) dx$$

查准率、查全率与F1

TP:真正例;FN:假反例;FP:假正例;TN:真反例

“查准率”(precision)$P=\frac{TP}{TP+FP}$

“查全率”(recall) $R=\frac{TP}{TP+FN}$

P-R图直观地展示出学习器在样本总体上的查全率、查准率,一般比较P-R曲线下面积的大小,但不太容易估算,所以人们设计了一些综合考虑查准率、查全率的性能度量。

$“平衡点”(Break-Even Point, 简称BEP):$“查准率”等于“查全率”时的取值.

$F1:$查全率和查准率的调和平均值.

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

$F_\beta:$查全率和查准率的加权调和平均值.

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

在n个二分类混淆矩阵上综合考察查准率和查全率

第一种方法是在各混淆矩阵上分别计算出查准率和查全率,再计算平均值,称为“宏查准率(macro-P)”“宏查全率(macro-R)”“宏F1(macro-F1)”.

第二种方法是将各混淆矩阵的对应元素进行平均,得到TP、FP、TN、FN的平均值,再基于这些平均值计算出“微查准率(micro-P)”“微查全率(micro-R)”“微F1(micro-F1)”.

ROC与AUC

“ROC曲线”(Receiver Operating Characteristic)

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值(threshold)进行比较,大于阈值则分为正类,否则为反类。根据这个实值或概率预测结果,我们可将测试样本进行排序,“最可能”是正例的排在最前面,“最不可能”是正例的排在最后面。而在不同的应用任务中,我们可根据任务需求来采用不同的“截断点”(cut point)。而排序的质量好坏,体现了综合考虑学习器在不同任务下“期望泛化性能”的好坏,ROC曲线则是从这个角度出发研究学习器泛化性能的工具。

根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,以“真正例率”(True Positive Rate,简称TPR)作为纵轴,“假正例率”(False Positive Rate,简称FPR)作为横轴,得到“ROC曲线”。

“AUC”(Area Under ROC Curve)

ROC曲线下的面积

$$AUC = \frac{1}{2} \sum_{i=1}^{m-1} (x_i+1 - x_i) \times (y_i + y_i+1)$$

$$AUC = 1 - l_{rank} $$

代价敏感错误率与代价曲线

不同类型的错误造成的后果不同,可为错误赋予“非均等代价”(unequal cost),设定“代价矩阵”(cost matrix)。注意,一般情况下重要的是cost01和cost10的比值。

“代价敏感”(cost-sensitive)错误率为

$$E(f; D; cost) = \frac{1}{m} \sum_{x_i \in D^+} \mathbb I (f(x_i) \neq y_i ) \times cost_{01} + \frac{1}{m} \sum_{x_i \in D^-} \mathbb I (f(x_i) \neq y_i ) \times cost_{10}$$

此时采取“代价曲线”(cost curve)而非ROC曲线反映学习器的总体期望代价。

横轴为取值为[0, 1] 的正例概率代价

$$P(+)cost = \frac{p \times cost_{01}}{p \times cost_{01} + (1 - p) \times cost_{10}}$$

纵轴为取值为[0, 1] 的归一化代价

$$cost_{norm} = \frac{FNR \times p \times cost_{01} + FPR \times (1 - p) \times cost_{10}}{p \times cost_{01} + (1 - p) \times cost_{10}}$$

比较检验

基于假设检验,我们可推断出,若在测试集上观测到学习器A比B好,则A的泛化性能是否在统计意义上优于B,以及这个结论的把握有多大。

假设检验

$ 泛化错误率\epsilon $

$ 测试错误率\widehat{ \epsilon } $

“二项检验”(binomial test)$ P( \widehat{ \epsilon }; \epsilon ) = \begin{pmatrix} m \ \widehat{ \epsilon } \times m \end{pmatrix} \epsilon^{ \widehat{ \epsilon} \times m} ( 1 - \epsilon)^{m - \widehat{ \epsilon} \times m} $

“t检验”(t-test)$ \tau_t = \frac{ \sqrt{k}( \mu - \epsilon_0 ) }{ \sigma } \sim t( k - 1) $

交叉验证T检验

k折交叉验证“成对t检验”(paired t-tests)

基本思想:若两个学习器的性能相同,则它们使用相同的训练/测试集得到的测试错误率应相同

先对两个学习器A和B每对测试错误率求差值,再根据差值做t检验

$$ \tau_t = \left| \frac{ \sqrt{k} \mu}{ \sigma } \right| \sim t(n - 1) $$

MCNEMAR 检验

FRIEDMAN 检验 与 NEMENYI 后续检验

偏差与方差