2.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个样本,这才是我们在最后要提交的模型。