(西瓜书)《机器学习-周志华》-学习笔记:(2-0)第二章 模型评估与选择
作者:互联网
(西瓜书)《机器学习-周志华》-学习笔记:(2-0)第二章 模型评估与选择
文章目录
概括
主要总结到了 2.3 新能度量之前。
内容有:
- 误差等术语,欠拟合与过拟合的概念。
- 三个从数据集中划分训练集与验证集的方法:留出法、交叉验证法(包括留一法)、自助法。
2.1经验误差与过拟合
一些名词术语
错误率(error rate): 分类错误的样本数占总样本数的比例。 m 个样本中有 a 个样本分类错误,则错误率 E = a / m E = a/m E=a/m。
精度(accuracy): 1 − a / m 1 - a/m 1−a/m,即 精 度 = 1 − 错 误 率 精度 = 1 - 错误率 精度=1−错误率
误差(error):学习器的实际预测输出与样本的真实输出之间的差异。
训练误差(training error)或 经验误差(empirical error):学习器在训练集上的误差。
泛化误差(generalization error):学习器在新样本上的误差。
(这里的学习器的概念实际上就是模型的概念)
我们希望得到的学习器是可以对新的样本进行正确估计的学习器,即泛化误差最小的学习器,而我们也需要让泛化误差尽可能的小。
过拟合与欠拟合
学习器把训练样本学得“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降.这种现象在机器学习中称为“过拟合”( overfitting).与“过拟合”相对的是“欠拟合”( underfitting),这是指对训练样本的一般性质尚未学好.
过拟合是机器学习面临的关键障碍,各类学习算法都必带有一些针对过拟合的措施。
但过拟合也是无法避免的,我们所能做的只是”缓解“,或者说减小其风险,
若学习器对新样本不能正确的评估,可能是存在过拟合或者是欠拟合的问题。
- 若学习器的训练误差很小,但泛化误差很大,即是过拟合的情况。
- 若学习器的训练误差、泛化误差都很大,即是欠拟合的情况。
口语化来形容即过拟合是指训练的太狠导致产生错误的认知,欠拟合是指训练的不够还未成型正确的认知。(很不严谨,仅作参考,若我的这段叙述对你的所认识的有出入,以你的为准)
我们希望得到是泛化误差尽可能小的模型,但我们无法得知新样本,无法直接获得泛化误差,而训练误差又因为可能存在过拟合的现象不适合作为标准,因此需要对模型进行评估选择。
2.2评估方法
以测试误差作为泛化误差的近似
原文中:
通常,我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择.为此,需使用一个**“测试集”( testing set)**来测试学习器对新样本的判别能力,**然后以测试集上的“测试误差”( (testing error)作为泛化误差的近似.**通常我们假设测试样本也是从样本真实分布中独立同分布采样而得.但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
很重要,提出了测试集的概念。 注: 书中后面有补充到,这里的测试集,实际上应该为验证集(Validation set),为防止混淆,后面的叙述中遵循书中的测试集的说法。训练集、验证集、测试集
测试集(testing set):用来测试学习器对新样本的判别能力,将测试误差作为泛化误差的近似。
书中对于测试集的比喻很形象:
我们中学阶段的学习可以看作一个学习过程,我们的训练集可以看作我们平时写的作业、练习册、模拟卷,而最后的期末考试即测试集。
这里测试集期末考生的目的即是求我们对于这门课的掌握程度。 若最后的期末考试出的题都是从我们平时的作业、练习册、模拟卷中出的话,那么最后大家的分数可能都会很高,由此得出的结论是大家对于这门课的掌握的都很好。所以一般老师出期末考试的题目都会出大家没做过的题, 以此希望得出学生们的真实水平。
而一般我们得到的是包含 m 个数据的数据集 D,一般需要我们对其进行处理、划分、提前等等,以此从中得出训练集S 和 测试集 T。 书中下面介绍了几种常见的做法。
2.2.1 留出法
直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。
注意书中分层采样(stratified sampling的概念,目的是保留类别比例。这个较重要,应以此为前提进行划分。
对于测试集的划分将导致不同的训练集与测试集,导致模型的评估也会产生差别。故单次或者单独的使用留出法得到的估计结果往往是不可靠不稳定的。
一般在使用留出法时,要采用若干次的随机划分,进行重复的划分、训练、评估。最后的结果应该是若干次留出法结果的平均。
留出法常用的做法是将大约 66% ~ 80%的样本用于训练,剩下的用作验证。
2.2.2 交叉验证法
书中给出的 图2.2 , 我认为已经很形象的形容了交叉验证法。
“交叉验证法”(cross validation) 先将数据集D划分为 k 个大小相似的互斥子集,每个子集 D i D_i Di需要尽可能保持数据分布的一致性,即从D中通过分层采样得到。每次用 k − 1 k-1 k−1 个子集的并集作为训练集,余下的作为测试集。从而进行k此训练和测试,最终返回的是这k个测试结果的均值。
k k k最常用的取值有 5 、 10 、20 等。
与留出法类似, k k k 折交叉验证法通常要随机使用不同的划分方式重复 p p p 次,最终的评估结果是 p p p 此 k k k 折交叉验证的结果的均值。例如常见的“10次10折交叉验证”。
留一法 : 交叉验证法的特殊情况
假定数据集 D D D 中包含 m m m 个样本, 若令 k = m k = m k=m ,则得到了交叉验证法的一个特例: 留一法(Leave-One-Out)。
留一法不受随机样本划分方式的影响,因为 m m m 个样本只有唯一的方式划分为 m m m 个子集,即每个子集只包含一个样本。
留一法的评估结果往往呗认为是比较准确,缺陷是:训练集比较大时,训练m个模型的计算开销可能是非常大的。
2.2.3 自助法
注意书中的自助采样法, 是对有 m m m 个样本的数据集 D D D 随机采样 m m m 次且放回。
- 能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。(还不明白)
- 在数据集较小的时候十分有用。
数据集小的时候,采用留出法和交叉验证法,数据集难以划分。
在初始数据量足够时。留出法和交叉验证法更常用一些。
标签:周志华,误差,泛化,训练,样本,学习,测试,拟合,第二章 来源: https://blog.csdn.net/qq_40454401/article/details/120836676