本文共 2016 字,大约阅读时间需要 6 分钟。
如果把训练样本自身的一些特点当做了所有潜在样本都具有的特质,就会导致泛化性能下降,这称之为过拟合,与之相对的,称为欠拟合,这是指一般性质尚未学好。
把不太一般的特性都学到了,就过拟合了,一般的特性没学到就欠拟合了。
比如模型认为绿色并且带锯齿才是树叶,那么遇到不带锯齿的树叶就会被认为不是树叶,这是过拟合。
如果认为所有绿色的都是树叶,那么遇到绿色的大树也会被认为是树叶,这就是欠拟合。我们能做的是把经验误差最小化,但是我们想要的却是让泛化误差最小化。
由于我们不能评估泛化误差,所以我们使用“测试集”来测试学习器对新样本的判别能力,以测试集上的“测试误差”作为“泛化误差”的近似。
测试样本尽量不在训练集中出现、未在训练过程中使用过,这样才能把测试误差近似为泛化误差,否则测试误差就近似于经验误差了。
评估方法,评估测试误差,怎么评估?比如训练1000次,每10次训练进行一次测试,总共100次测试的误差均值(准确率)就是这个模型的测试误差(准确率),模型的测试误差均值越小(准确率越高),泛化能力越好。
留出法:将样本集的2/3~4/5的样本用于测试,剩余的用于测试,两个集合尽量互斥,且正反例的比例均匀。
留一法:只保留一个样本用作测试,但是数据量大时,需要训练太多模型。
交叉验证法:比如划分为10个(k个) 大小相似的互斥子集,每次用其中的9个作为训练集,剩余1个作为测试集,那么可以有10种(k种) 取法(即:10个(k个)训练/测试集),这种方法称之为10(k)折交叉验证。
n次k折验证:对样本集重新划分10个(k个)互斥子集10次(n次),分别进行10(k)折交叉验证,就叫做10(n)次10(k)折验证。
自助法:每次从样本集D(m个样本)中取一个样本,取出后再放回去,取m次得出采样数据集D‘,那么始终没被取到的概率是(1-1/m)m,m无穷大时,(1-1/m)m=1/e约等于0.386,即通过自助采样,初始样本集D中约有36.8%没出现在采样数据集D‘中,那么D‘就作为训练样本集,D/D‘作为测试集,约占数据总量的1/3。
数据量小很难划分训练测试集时,自助法很有用。
数据量充足时,留出法和交叉验证更常用一些。调参:调参和算法选择没什么区别,都是把对应最好模型的参数作为结果,通常会选定实数范围,和步长,最终在这选定的候选值中产生选定值。
不同的任务需求,在评估模型的性能时,使用不同的性能度量会导致不同的评判结果。
回归任务,最常用的性能度量是“均方误差”。
分类任务,使用的性能度量有错误率或者精度等。
分类任务,还有更多的性能度量:
比如有些分类任务需求,希望查准率(Precision) 高,有些则希望查全率(Recall) 高,而查准率和查全率是一对矛盾的度量,我们又可能希望权衡查准率和查全率,这就有了平衡点(BEP:查准率等于查全率时的取值) 这个度量,更好用些的F1度量= 2PR/P+R,加上一个权重w,Fw= (1+w2)PR/(w2P)+R;当w>1时,分母的P被放大,F1会偏小,因而想要F1更大就需要R(查全率)更大些。当w<1时,则更看中P(查准率)。当w=1时就是标准的F1了。 分别求出所有P和R,这些P和R平均值叫宏查准率(macro-P) 、宏查全率(macro-R),由它们求出的叫宏F1(macro-F1)。 先求出所有TP、FP、TN、FN的平均值,进而求出的P和R分别叫微查准率(micro-P)、微查全率(micro-R),由它们求出的叫微F1(micro-F1)。ROC曲线和AUC面积:有些学习器(比如神经网络)是为测试样本产生一个实值或概率预测值,然后将这个预测值与一个分类阈(yu:第四声)值进行比较,大于阈值为正类,小于为反类。
ROC曲线的横轴是假正例率,纵轴是真正例率,AUC面积越大,性能越好。 真正例率:预测对的正例数量/所有正例的真实数量=TP/TP+FN 假正例率:预测错的正例数量/所有反例的真实数量=FP/TN+FP代价敏感错误率与代价曲线:在非均等代价下,ROC曲线不能直接反映出学习器的期望总体代价,而“代价曲线”则可达到目的。赋予不同类别预测错误的代价值(costij),代价值越大,损失越大。
假设检验:对单个学习器的泛化错误率进行某种判断(测试结果应当符合正态分布)。
交叉验证t检验:对不同学习器的性能进行比较 McNemar检验:对二分类的不同学习器的性能进行比较 Freidman检验和Nemenyi后续检验:在一组数据集对多个算法进行性能比较偏差-方差分解:是解释泛化性能的一种重要工具
转载地址:http://yibgi.baihongyu.com/