学习笔记 | 机器学习-周志华 | 5

第二章 模型评估与选择

2.1 经验误差与过拟合

  1. "错误率" (error rate) ,即如果在 m 个样本中有 α 个样本分类错误,则错误率 E= α/m;
  2. 1 一 α/m 称为**“精度” (accuracy)** ,即"精度 =1 - 错误率"
  3. 更一般地,把学习器的实际预测输出与样本的真实输出之间的差异称为"误差" (error),学习器在训练集上的误差称为"训练误差" (training error)或"经验误差" (empirical error) ,在新样本上的误差称为"泛化误差" (generalization error).
  4. 在训练集上表现很好的学习器,例如甚至对所有训练样本都分类正确,即分类错误率为零,分类精度为 100%,但这样的学习器在多数情况下都不好.
  5. 当学习器把训练样本学得"太好"了的时候,很可能巳经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降这种现象在机器学习中称为"过拟合" (overfitting). 与"过拟合"相对的是"欠拟合" (underfitting) ,这是指对训练样本的一般性质尚未学好.
  6. NP问题是指存在多项式算法能够解决的非决定性问题,而其中NP完全问题又是最有可能不是P问题的问题类型。所有的NP问题都可以用多项式时间划归到他们中的一个。所以显然NP完全的问题具有如下性质:它可以在多项式时间内求解,当且仅当所有的其他的NP-完全问题也可以在多项式时间内求解。
  7. NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。
  8. P问题是具有多项式算法的判定问题。这里的P代表Polynomial。P问题就是可以有一个确定型图灵机在多项式时间内解决的问题。即目前那些存在O(n), O(nk), O(nlogn)等多项式时间复杂度解法的问题。比如排序问题、最小生成树、单源最短路径。直观的讲,我们将P问题视为可以较快解决的问题。
  9. 只要相信 "p ≠ NP " ,过拟合就不可避免。
  10. 模型选择" (model selection) 问题。

2.2 评估方法

  1. 使用一个 “测试集 " (testing set)来测试学习器对新样本的判别 能力,然后以测试集的"测试误差” (testing error)作为泛化误差的近似。
  2. 测试集应该尽可能与训练集互斥, 即测试样本尽量不在训练集中出现、未在训练过程中使用过.

2.2.1 留出法

“留出法” (hold-out)直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 5,另一个作为测试集 T, 即 D=S ∪ T , S ∩ T= Ø.在 S 上训练出模型后,用 T 来评估其测试误差,作为对泛化误差的估计.

  1. 训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似.
  2. 如果从采样 (sampling) 的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为"分层采样" (stratified sampling). 例如通过对 D 进行分层采样而获得含 70% 样本的训练集 S 和含30% 样本的测试集 T , 若 D 包含 500 个正例、 500 个反例,则分层采样得到的S 应包含 350 个正例、 350 个反例,而 T 则包含 150 个正例和 150 个反例;若S、 T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差.
  3. 即使在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集 D 进行分割.单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果.
  4. 留出法存在的问题:若令训练集 S 包含绝大多数样本7 则训练出的模型可能更接近于用 D 训练出的模型, 但由于 T 比较小,评估结果可能不够稳定准确;若令测试集 T 多包含一些样本, 则训练集 S 与 D 差别更大了,被评估的模型与用 D 训练出 的模型相比可能有较大差别,从而降低了评估结果的保真性(fidelity) 。

2.2.2 交叉验证法

“交叉验证法” (cross validation)先将数据集 D 划分为 k 个大小相似的互斥子集, 即 D = D1 ∪ D2∪… ∪ D k, Di ∩ Dj = ø (i≠ j ) . 每个子集 Di 都尽可能保持数据分布的一致性,即从 D 中 通过分层采样得到.
每次用k-1 个子集的并集作为训练集,余下 的那个子集作为测试集;这样就可获得 k组训练/测试集,从而可进行 k 次训练和测试,最终返回的是这 k 个测试结果的均值。显然,交叉验证法评估结果的稳定性和保真性在很大程度上取决于 k的取值,为强调这一点,通常把交叉验证法称为 " k 折交叉验证" (k-fold cross validation). k 最常用 的取值是 10,此时称为 1 0 折交叉验 证 ; 其他常用 的 k 值有 5、 20 等.

  1. 将数据集 D 划分 为 k 个子集同样存在多种划分方式.为减小因样本划分不同而引入的差别 , k 折交叉验证通常要随机使用不同的划分重复 p 次。最终的评估结果是这 p 次 k 折交叉验证结果的均值,例如常见的有 "10 次 10 折交叉验证 "。
  2. 假定数据集 D 中包含 m 个样本 3 若令 k=m , 则得到了交叉验证法的一个特例:留一法 (Leave-One-Out,简称 LOO) . 显然 , 留一法不受随机样本划分方式的影响,因为 m 个样本只有唯一的方式划分为 m 个子集一一每个子集包含一个样本;留一法使用的训练集与初始数据集相比只少了一个样本,这就使得在绝大多数情况下,留一法中被实际评估的模型与期望评估的用 D 训练出的模型很相似.因此,留一法的评估结果往往被认为比较准确.然而,留一法也有其缺陷:在数据集比较大时,训练 m 个模型的计算开销可能是难以忍受的(例如数据集包含 1 百万个样本,则需训练 1 百万个模型),而这还是在未考虑算法调参的情况下.另外,留一法的估计结果也未必永远比其他评估方法准确;"没有免费的午餐"定理对实验评估方法同样适用.

2.2.3 自助法

“自助法” (bootstrapping)直接以自助采样法 (bootstrap sampling)为基础 [Efron and Tibshirani, 1993]. 给定包含 m 个样
本的数据集 D ,我们对它进行采样产生数据集 D’: 每次随机从 D 中挑选一个样本 将其拷贝放入 D’ 然后再将该样本放回初始数据集 D 中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行 m 次后,我们就得到了包含 m个样本的数据集 D’, 这就是自助采样的结果.显然 ,D 中有一部分样本会在 D’中多次出现,而另一部分样本不出现.可以做一个简单的估计,样本在 m 次采样中始终不被采到的概率是 (1 - 1/m)的m次方,取极限得到在这里插入图片描述
即通过自助采样,初始数据集 D 中约有 36.8% 的样本未出现在采样数据集 D’中.于是我们可将 D’ 用作训练集 , D\D’(\表示集合减法) 用作测试集;这样,实际评估的模型与期望评估的模型都使用 m 个训练样本,而我们仍有数据总量约 1/3 的、没在训练集中出现的样本用于测试.这样的测试结果,亦称**“包外估计”** (out-of-bag estimate).

  1. 自助法在数据集较小、难以有效划分训练/测试集时很有用;
  2. 此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处
  3. 然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差.因此,在初始数据量足够时,留出法和交叉验证法更常用一些.

2.2.4 调参与最终模型

  1. 大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别.因此,在进行模型评估与选择时,除了要对适用学习算法进行选择,还需对算法参数进行设定,这就是通常所说的"参数调节"或简称"调参" (parameter tuning)。
  2. 实中常用的做法是对每个参数选定一个范围和变化步长,例如在 [0 , 0.2] 范围内以 0.05 为步长,则实际要评估的候选参数值有 5 个,最终是从这 5 个候选值中产生选定值.显然,这样选定的参数值往往不是"最佳"值,但这是在计算开销和性能估计之间进行折中的结果,通过这个折中,学习过程才变得可行.事实上,即便在进行这样的折中后,调参往往仍很困难.可以简单估算一下:假定算法有 3 个参数,每个参数仅考虑 5 个候选值,这样对每一组训练/测试集就有 53 = 125 个模型需考察;很多强大的学习算法有大量参数需设定,这将导致极大的调参工程量,以至于在不少应用任务中好不好往往对最终模型性能有关键性影响.,例如大型"深度学习" 参数调得模型甚至有上百亿个参数.
  3. 我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为"验证集" (validation set).
  4. 在研究对比不同算法的泛化性能时,我们用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参.

2.3 性能度量

  1. 衡量模型泛化能力的评价标准是性能度量(performance measure)。
  2. 性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的"好坏"是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求.
    在这里插入图片描述
    2.3.1 错误率与精度
    在这里插入图片描述
    在这里插入图片描述

2.3.2 查准率、查全率与F1

查准率(precision) (准确率)与 查全率(recall) (找回率)
可将样例根据其真实类别与学习器预测类别的组合划分为真正例 (true positive)、假正例 (false positive)、真反倒 (true negative) 、假反例 (false negative) 四种情形,令 TP、 FP、 TN、 FN 分别表示其对应的样例数,则显然有TP+FP+TN+FN=样例总数.分类结果的"泪淆矩阵" (cofusion matrix) 如表 2.1 所示
在这里插入图片描述

查准率P与查全率R分别定义为
P=TP/TP+FP, R=TP/TP+FN.

猜你喜欢

转载自blog.csdn.net/zko1021/article/details/84846501