【机器学习-西瓜书】第2章-模型评估

2.1 经验误差与过拟合

  • 精度(accuracy): 1-错误率

\left ( 1- \tfrac{a}{m}\right )\times 100%  (假设m个样本中有a个样本分类错误)

  • 误差 (error): 学习器的预测输出与真是输出之间的差异
    • 经验误差 (empirical error):在训练集上的误差
    • 泛化误差 (generalization error):在新样本上的误差
  • 欠拟合和过拟合

【机器学习-西瓜书】第2章-模型评估_第1张图片

  • underfitting:对训练样本的一般性质尚未学好
    • 欠拟合通常是由于学习能力低下造成的;
    • 比较容易解决:在决策树中扩展分支;在神经网络中增加训练轮数
  • overfitting: 学习过于细节,将训练样本自身的某些特点当作 所有潜在样本均具备的一般性质,导致泛化能力弱。
    • 机器学习面临的关键障碍

现实任务中,当进行 模型选择时,理想的解决方案是 对候选模型的泛化误差进行评估,然后选择泛化误差最小的模型。

然而,正如上面所讨论的,我们无法直接获得泛化误差,且训练误差又由于存在过拟合现象,因而不适合作为标准。

 2.2 评估方法

通常,通过实验测试对学习器的泛化误差进行评估,并依此选择模型。以模型在测试集上的测试误差作为泛化误差的近似。假设测试样本是从样本真是分布中独立同分布采样而得,且测试集和训练集互斥。以下介绍几种常见的 产生训练集S和测试集T的方法:

1)留出法 (hold-out)

  • 直接将数据集D划分为两个互斥的集合,划分时 尽可能把持数据分布的一致性,避免因数据划分过程引入的额外偏差而对最终的结果产生影响。
  • 保留类别比例的采样方式 称为“分层采样 (stratified sampling)”
  • 由于对初始数据集有着不同的划分方法,将导致不同的训练/测试集,此时模型评估的结果也会有差别, 因此单次使用留出法得到的估计结果往往不够稳定。因此一般采用 若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

2)交叉验证法 (cross validation) == (k-fold cross validation)

  • 先将数据集D划分为k各大小相似的互斥子集D=D_{1}\bigcup D_{2}\bigcup \cdots \bigcup D_{k},每个子集D_{i} 都尽可能保持数据分布的一致性,即从D中分层采样得到。
  • 每次使用k-1个子集的并集作为训练集,余下的那个子集作为测试集
  • 得到k组训练/测试集,可进行k词训练和测试,最终返回这k个测试结果的均值。

 当使用不同的划分重复p次,最终的评估结果将是这p次k折交叉验证结果的均值

交叉验证法的一个特例:留一法 (leave-one-out),即数据集D中包含m个样本,且k=m。

优点:绝大多数情况下,留一法的评估结果往往被认为比较准确。

然而其缺点是:当数据集较大时,训练m个模型的计算开销难以忍受。

3)自助法 (bootstrapping) :以自助采样 (bootstrap sampling)为基础

给定包含m个样本的数据集D,对其采样后得到数据集D': 每次随机从D中挑选一个样本,将其拷贝放入D'中,然后将样本放回 (该样本下次采样时仍可得到);以上采样过程重复执行m次,得到包含m个样本的数据集D'。

D中有一部分样本会在D'中多次出现,而并一部分样本不出现。样本在m次采样中中始终不被采到的概率,在取极限后得到

\lim_{m \mapsto \infty }\left ( 1-\frac{1}{m} \right )^{m} \mapsto \frac{1}{e}\approx 0.368

这表示初始数据集中 约有36.8% 的样本未出现在采样数据集D'中,使用D'作为训练集,使用D\D'作为测试集。

优点:在数据集小,难以有效划分训练/测试集时很有用;也适用于集成学习等方法。

4) 最终模型

将训练数据划分为 训练集和验证集,基于验证集上的性能进行模型选择和调参,然后选定最终的模型,在测试集上进行测试。

2.3 性能度量:衡量模型泛化能力的标准,反映了任务需求

以下是 分类任务中常用的性能度量:

1)错误率和精度

  • 错误率:分类错误的样本数 占 样本总数的比例
  • 精度:分类正确的样本数 占 样本总数的比例

2)查准率Precision、查全率Recall、F1-score

信息检索中

  • Precision:检索出的信息中,有多少比例是用户感兴趣的
  • Recall: 用户感兴趣的信息中,有多少被正确的检索出来了

 混淆矩阵 (confusion matrix):

【机器学习-西瓜书】第2章-模型评估_第2张图片

 P-R曲线

【机器学习-西瓜书】第2章-模型评估_第3张图片

 F1-score: 基于Precision 和 Recall的调和平均 (harmonic mean):

【机器学习-西瓜书】第2章-模型评估_第4张图片

 当存在多个二分类混淆矩阵时,

  • 宏F1 (macro-F1): 先在 各混淆矩阵上分别计算出查准率和查全率,即\left ( P_{1}, R_{1} \right ),\left ( P_{2}, R_{2}\right ),\cdots ,\left ( P_{n}, R_{n} \right ), 再计算平均值,分别得到macro-P, macro-R以及相应的宏F1,如下图:

【机器学习-西瓜书】第2章-模型评估_第5张图片

  •  微F1 (micro-F1): 先将各混淆矩阵的对应元素进行平均,得到TP, FP, TN, FN的平均值,即-\overline{TP}, \overline{FP}, \overline{TN}, \overline{FN}, 再基于这些平均值计算出 micro-P,micro-R 和 micro-F1:【机器学习-西瓜书】第2章-模型评估_第6张图片

【机器学习-西瓜书】第2章-模型评估_第7张图片

 3)ROC和AUC

ROC (Receiver Operating Characteristic): 受试者工作特征,根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,即将FPR (False Positive Rate) 和 TPR (True Positive Rate)分别作为 横轴和纵轴,汇出ROC曲线图。

TPR = \frac{TP}{TP+FN} \\ FPR=\frac{FP}{TN+FP}

【机器学习-西瓜书】第2章-模型评估_第8张图片

 AUC (area under ROC curve): 用于判断学习器的ROC曲线所表示出的性能。它考虑样本预测的排序质量,给定m+个正例和m-个反例,可定义排序loss如下:

【机器学习-西瓜书】第2章-模型评估_第9张图片

 因此,有

AUC = 1 - l_{rank}

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

to be completed

2.4 比较检验

此部分理论性太强,暂不作笔记

1)假设检验

2)交叉验证t检验

3)McNemar 检验

4)Friedman检验 与 Nemenyi 后续检验

2.5 偏差与方差

偏差-方差分解 (bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。

  • 方差:度量了 使用样本数相同的不同训练集产生的差异,即刻画了数据扰动所造成的影响
  • 偏差表示:度量了 学习算法的期望输出与真实标记之间的偏离程度,即刻画了学习算法本省的拟合能力
  • 噪声:表达了在当前任务上,任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

\bar{f}(x) = E_{D}\left [ f(x; D) \right ] 为学习算法的期望预测,这里 f\left ( x;D \right )为训练集D上学得模型f 在x上的预测输出。

var\left ( x \right ) = E_{D}\left [( f\left ( x;D \right ) - \bar{f}\left ( x \right )\right)^{2} ]\\ \epsilon ^{2} = E_{D}[(y_{D} - y)^{2}]\\ bias^{2}(x)= \left ( \bar{f}(x)-y \right )^{2}

通过对算法的期望泛化误差进行分解,有

E\left ( f;D \right ) = bias^{2}\left ( x \right ) + var\left ( x \right ) +\epsilon ^{2}

这说明:学习算法的泛化性能 是由学习算法的能力 (bias)、数据的充分性 (var) 以及学习任务本身的难度 (noise)共同决定的。

  • 当训练不足时,学习器的拟合能力不够强,此时,偏差bias主导了泛化错误率;
  • 随着训练程度的加深,学习器的拟合能力逐渐增强,学习器可以学到训练数据发生的扰动,此时,方差var主导了泛化错误率。

你可能感兴趣的:(机器学习)