[MachineLearning]模型评估与模型选择
Posted TT在长大
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[MachineLearning]模型评估与模型选择相关的知识,希望对你有一定的参考价值。
机器学习的目的是使学到的模型不仅能对已知数据而且还要对位置数据都有很好的预测能力,这种模型适用于新样本的能力,称为 泛化能力(generalization)。
而模型评估与模型选择就是为了让模型具有更强的泛化能力。
1. 经验误差与过拟合
先来介绍一些基本概念。一般我们会把分类错误的的样本数占样本总数的比例称为错误率(error rate)。若m个样本中有a个样本分类错误,则错误率E = a/m;对应的 1 - a/m 称为精度(accuracy)。
通常,把学习器的实际预测输出与样本的真实输出之间的差异称为误差(error)。
学习器在训练集上的误差叫训练误差(training error)或经验误差(empirical error).
学习器在新样本上的误差叫泛化误差(generalization).
显然我们更希望得到泛化误差小的学习器,为了达到这个目标会从训练样本中尽可能的学出样本的规律。然而当机器学习把训练样本自身的部分特点当成了所有样本的一般特性,这样反而会让模型的泛化能力下降,这种现象在机器学习中被叫做 过拟合(overfitting)。
与过拟合相对应的是欠拟合(underfitting)。这是说对训练样本的一般性质尚未学好。
有多种因素可能导致过拟合,其中最常见的情况是由于学习能力过于强大, 以至于把训练样本所包含的不太一般的特性都学到了,而欠拟合则通常是由于学习能力低下而造成的。 欠拟合比较容易克服。
过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一 些针对过拟合的措施;然而必须认识到,过拟合是无法彻底避免的,所能做的只是 “缓解“,或者说减小其风险。
2. 评估方法
我们可通过实验测试来对学习器的泛化误差进行评估并进而做出选择,为此要使用一个测试集(testing set)来测试学习器对新样本的判别能力,然后以测试集上的测试误差(testing error)作为泛化误差的近似。
如果我们只有一个包含m个样例的训练集D,我们即要训练又要测试,我们可以通过对D进行适当的处理,从中产生出训练集S和测试集T。
下面列举出了常见的做法:
2.1留出法(hold-out)
直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集S, 另一个作为测试集T,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
在划分数据集时,通常采用分层采样(stratified sampling)。
若数据集D中存在500个正例和500个反例,则含有70%样本的训练集S应包含350个正例和350个反例,同理,还有30%样本的测试集T应包含150个正例和150个反例。
单次使用留出法得到的估计结果往往不够稳定可靠。因此,使用留出法时,我们要采用若干次随机划分、重复进行实验评估后取均值作为留出法的评估结果。
常见的做法为将 2/3 ~ 4/5 的样本用于训练,剩余样本用于测试。
2.2交叉验证法(cross validation)
将数据集D直接划分为k个大小和相似的互斥子集,每一次,用(k-1)个集合的并集作为数据集S,余下那个作为测试集T。这样,我们可以进行k次训练测试,最终返回的是,这k个测试结果的均值。
“交叉验证法”通常也被称作“k折交叉验证”。
k 最常用的取值是 10, 此时称为 10 折交叉验证,其他常用的 K 值 有5、 20等。
与留出法相似,将数据集D划分为K个子集同样存在多种划分方式. 为减小因样本划分不同而引入的差别,k折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。
假定数据集D中包含m个样本,若令k=m,则得到了交叉验证法的一个特例留一法(Leave-One-Out,简称 LOO).显然,留一法不受随机样本划分方式的影响。不受随机样本划分方式的影响,评估结果往往比较准确。若数据集大,则计算量无法承受,由NFL定理,纵然这样的巨大计算量,也未必能保证它比其他方法更准确。
2.2.3自助法(bootstrapping)
数据集D中包含m个样本,对其进行采样产生数据集D':每次随机从D中挑选一个样本,将其拷贝放入D',然后将该样本放回初始数据集D。该过程重复m次,我们可得到包含m个样本的数据集D',称为自助采样的结果。
样本在m次采样中始终没有被采样的结果的概率为(1-1/m)^m,取极限得到为1/e约等于0.386。
即通过自助采样,初始数据集D中约有36.8%的样本未出现在采样数据集D' 中.我们可将D' 用作训练集,D\\D'用作测试集,这样, 实际评估的模型与期望评估的模型都使用m个训练样本,而我们仍有数据总量约1/3的、 没在训练集中出现的样本用千测试这样的测试结果。
自助法更适用于数据集较小、难以有效划分训练集、测试集时候使用,并且由于它能产生不同的训练集。它改变了初始数据集的分布。因此,在初始数据量足够时,这种方法使用较少。
以上是关于[MachineLearning]模型评估与模型选择的主要内容,如果未能解决你的问题,请参考以下文章