周志华《机器学习》第 2 章 模型评估与选择

来源:互联网 发布:淘宝化妆品过敏退货 编辑:程序博客网 时间:2024/05/20 11:27

本文是 周志华《机器学习》系列文章 之一,主要介绍机器学习模型评估的方法和适用的情形。

第 2 章 模型评估与选择

2.1 经验误差与过拟合

通常把分类错误的样本数占样本总数的比例称为“误差率”(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m;相应的1-a/m称为“精度”(accuracy),即“精度=1-错误率”。

学习器的实际预测输出与样本的真实输出之间的差异称为“误差”(error),学习器在训练集上的误差称为“训练误差”(training error)或“经验误差”(empirical error),在新样本上的误差称为“泛化误差”(generalization error)。

当学习器把训练样本学得“太好”的时候,很可能把训练样本自身的一些特点当作了所有潜在样本都具有的一般特性,这样就会导致泛化性能下降,这种现象在机器学习中称为“过拟合”(overfitting),与“过拟合”相对应的是“欠拟合”(underfitting),这是指对训练样本的一般性质尚未学好。

2.2 评估方法

测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

2.2.1 留出法

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

如果从采样(sampling)的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”(stratified sampling)。

单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值做为留出法的评估结果。

常见做法是将大约2/3~4/5的样本用于训练,剩余样本用于测试。

2.2.2 交叉验证法

“交叉验证法”(cross validation)先将数据集 D 划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从 D 中通过分层采样得到。然后每次用 1 个子集作为测试集,剩余的作为训练集,这样就可以得到 k 组训练/测试集,从而可以进行 k 次训练和测试,最终返回的是这 k 个测试结果的取值。通常把交叉验证法称为“k折交叉验证”(k-fold cross validation),k 最常用的取值是10,此时称为10折交叉验证。

2.2.3 自助法

“自助法”(bootstrapping)是直接以自助采样发(bootstrap sampling)为基础,基本原理为随机从有 m 个样本的数据集中随机挑选一个样本拷贝到新的数据集,然后把这个样本再放回去,重复这个过程 m 次后,就可以得到一个有 m 个样本的新数据集,使用这个新的数据集进行做为训练集。

自助法在数据集较小、难以有效划分训练/测试集时很有用,在初始数据量足够时,留出法和交叉验证法更常用一些。

自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。

2.2.4 调参与最终模型

大多数学习算法都有些参数(parameter)需要设定,参数配置不同,学得模型的性能往往有显著差别。

现实中常用的做法是对每个参数选定一个范围和变化步长,例如在[0,0.2]范围内以0.05为步长,则实际要评估的候选参数值有5个,最终是从这5个候选值中产生选定值。

在模型选择完成后,学习算法和参数配置已选定,此时应该用数据集D重新训练模型,这个模型训练过程中使用了所有 m 个样本,这才是我们最终提交给用户的模型。

我们通常把学得模型在实际使用中遇到的数据称为测试数据,为了加以区分,模型评估与选择中用于评估测试的数据集常称为“验证集”(validation set)。

2.3 性能度量

性能度量(performance measure)是用于衡量模型泛化能力的评价标准。性能度量反映了任务需求,在对比不同模型的能力时,使用不同的新能度量往往会导致不同的评判结果,这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。

2.3.1 错误率与精度

错误率和精度是分类任务中常用的两种性能度量,即适用于二分类任务,也适用于多分类任务。

错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例。

2.3.2 查准率、查全率与 F1

“查准率”(precision)与“查全率”(recall)是更适合信息检索等应用场景的性能度量。

P-R 图可以直观地显示出学习器在样本总体上的查全率、查准率,在进行比较时,若一个学习器的 P-R 曲线被另一个学习器的曲线完全“包住”,则可断言后者的性能优于前者。

“平衡点”(Break-Even Poin,简称BEP)是“查准率=查全率”时的取值。

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

为权衡不同类型错误所造成的不同损失,可为错误赋予“非均等代价”(unequal cost)。

2.4 比较检验

统计假设检验(hypothesis test)为我们进行学习器性能比较提供了重要依据。“二项检验”(binomial test)和“t 检验”(t-test)是关于单个学习器泛化性能的假设进行检验,而在现实任务中,更多时候需要对不同学习器的性能进行比较,此时可以使用交叉验证 t 检验、McNemar检验、Friedman检验与Nemenyi后续检验等方法。

2.5 偏差与方差

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

泛化误差可分解为偏差、方差与噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的预期泛化误差的下界,即刻画了学习问题本身的难度。

偏差-方差分解说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务为了取得好的泛化性能,则需使用偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。

资源

周志华《机器学习》系列文章:http://blog.csdn.net/u012318074/article/category/6899087

周志华《机器学习》XMind思维导图笔记:http://pan.baidu.com/s/1eS5S95S 密码:oef0

0 0
原创粉丝点击