西瓜书第二章-----模型评估与选择(一)
晨失 人气:02.1经验误差与过拟合
1.几个概念:
(1)错误率(errorate):分类错误的样本数量占总样本数量的比例,例如m个样本中有a个样本分类错误,则erroerate为:E=a/m
(2)精度(accuracy):公式:A=(1-a/m)*100%
(3)误差(error):实际预测输出与样本真是输出之间的差异
(4)经验误差(training error):在训练集中的误差
(5)泛化误差(empirical error):在测试集(新样本)中的误差
2.过拟合与欠拟合
概述:我们想要泛化误差较小的学习器,但是新样本是未知的,只能选择经验误差较小的学习器,就产生了过拟合与欠拟合的问题。
(1)过拟合:也叫做“过配”,由于样本模型的学习能力过于强大,讲训练集中不一般的特征也进行了学习。也就是说在训练集中准确率过高,甚至100%,但是也就导致在测试集中误差过大。
(2)欠拟合:也叫作“欠配”,由于样本模型的学习能力过于低下,无法对训练集中的一般特征进行很好的学习。
(3)以树叶进行举例:给定许多树叶来机器判定该物体是树叶。过拟合认为树叶一定要是锯齿形,欠拟合认为绿色就是树叶,比如认为一整颗树为树叶。
(4)解决:欠拟合比较容易克服,而过拟合是避免不了的。因为机器学习是解决np难甚至更难的问题,只要相信p!=np,就知道过拟合只能缓解。
3.模型选择
机器学习的模型选择要解决的问题:
(1)如何选择算法;
(2)如何去配置参数。
2.2评估方法
2.2.1 留出法(hold-out)
1.将数据集D划分为训练集S和测试集T,常用划分方法是2/3~4/5的样本用于训练。如果测试集小的时候,评估结果方差会较大。如果训练集太小的时候,偏差会比较大。
2.注意点:
(1)划分时尽量保持数据分布的一致性,例如保留类别采样,即分层采样,D为100,其中正反例个50。70%为训练集,30%为测试集。那么训练集35为正例,35为反例,测试集15为正例,15为反例。如果S,T中样本类别差异过大,则误差估计将会由于训练/测试的类别分布而产生误差。
(2)给定S和T的样本比例后,仍然存在许多种分割方法。例如将正例和反例进行排序。不一样的划分,则会导致最后结果的不一样。所以单词使用留出法得到的结果不够稳定。
解决办法:若干次随机划分,重复实验,取最终结果和的平均值作为估计结果。
2.2.2 交叉验证法(cross validation)
1.将数据集D划分为k个子集,即D=D1UD2U...UDk,其中Di∩Dj=ø。取k-1个子集用作训练,第k个子集用来测试。所以交叉验证法也被称做k折交叉验证。该方法的保真性和稳定性取决于k的取值。训练之后返回的就是k次训练的平均值。
例如10次10折验证相当于100次的留出。
2.特例:取k=m,则m个样本只有一种方式进行划分,叫做留一法(Leave-One-Out【LOO】)。留一法训练了D数据集-1,所以被认为是准确性较高的。当然因为NFL,留一法未必什么时候都比其他的评估方法准确。留一法也有缺陷,例如若数据集很大,则开销也很大。
2.2.3 自助法(bootstrapping)
1.每次从有m个样本的数据集D中随机选取一个样本拷贝到D'中,再放回到D中。这个过程执行m次,这样就是自助采样。
2.其中D’做训练集,D\D'做测试集。
3.每个样本一直不被选中的概率为(1-1/m)^m,取极限得1/e,约等于0.368.也就是说有36.8%的样本不会出现在D‘中,用作测试。这样得到的结果也叫作“包外估计”。
4.自助法适用于数据集小,训练集和测试集不易划分的情况下使用。数据大的话容易产生估计误差。所以当数据足够的时候,留出法和交叉验证法比较常用。
2.2.4 调参与最终模型
1.学习算法不仅要选择合适的算法,还有对参数进行调整,也就是“调参”。
2.常用的方法是选定范围和步长,例如在[0,0.2]中以步长为0.05,实际要评估的候选参数就有5个,最终从这5个候选参数中产生选定值。
3.假定算法有3个参数,每个参数仅仅考虑5个候选值,则总共有5^3=125个模型需要考察。
4.最终模型:在选择完算法和参数调整之后,用数据集D重新训练模型。这个模型在训练中使用了m个样本,这才是我们在最后要提交的模型。
5.把学得模型在实际应用中碰到的数据称作测试数据。模型评估与选择中用于评估测试的数据集称作“验证集”。把训练数据划分为训练集和验证集,用验证集来进行模型选择和调参。
课后对应习题
1.
数据集包含1000个样本,其中500个正例,500个反例,将其划分为包含70%样本的训练集和30%样本的测试集用于留出法评估,试估算共有多少种划分方式。
答:从500个样本中选取150(或者350,结果一样的)个样本:C(500,300)*C(500,300)。
2.
数据集包含100个样本,其中正反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10折交叉验证法和留一法分别对错误率进行评估所得的结果。
答:10折交叉验证法,因为正反例都是50,所以错误率为50%。
留一法要是留出反例,那么会判断为正例,则错误率为100%。
加载全部内容