(1)经验误差与过拟合
错误率error rate:分类错误的样本数占样本总数的比例a。
精度accuracy:分类正确的样本数占样本总数的比例1-a。
误差error:|实际预测输出-样本真实输出|
训练误差training error或经验误差empirical error:学习器在训练集上的误差
泛化误差generalization error:在新样本上的误差
学习的理想情况:从训练样本中尽可能学出适用于所有潜在样本的“普通规律”
过拟合(overfitting):学习器把训练样本学的“太好”,很可能导致已将训练样本自身一些特点当作了潜在样本的共性,如些导致泛化性能下降。由于学习能力太强导致。
欠拟合underfitting:对训练样本的一般性质未学好。通常由于学习能力低下导致。
欠拟合比较容易解决,过拟合则不太好解决,过拟合是机器学习面临的关键障碍,但过拟合是无法彻底避免的。
现实学习任务中,选择学习算法及确定参数配置即是“模型选择”(model selection)问题。
(2)模型评估
由于无法获取所有样本上的泛化误差,因此一般只能以测试集上的“测试误差”(testing error)作为泛化误差的近似。
测试集应尽可能与训练集互斥,即测试样本未在训练中使用过。
针对m个样本的数据集D={(x1,y1),(x2,y2),…,(xm,ym)},如何划分出训练集S和测试集T?
①留出法hold-out,将数据集直接划分成训练集S和测试集T,为保持划分出的数据集的数据分布的一致性,在分类任务中要保持样本类别比例相似,这种保留类别比例的采样方式一般称为“分层采样”(stratified sampling),例如D共含500个正例,500个反例,分层采样30%作为测试样本,则S应包含350个正例,350个反例,T应包含150个正例,150个反例。
留出法有很多种划分S和T的方法,单次使用留出法,一般要采用若干次随机划分,重复实验评估后取平均值作为评估结果。S太大则训练出的模型更接近D,评估结果具有较好保真性(fidelity),但测试集T太小,评估结果不够稳定准确,反之评估结果的保真性又得不到保证,因此没有完美解决方案,常见做法约2/3~4/5的样本用于训练,剩余用于测试。
②交叉验证法,D=D1∪D2∪…∪Dk,Di∩Dj=?(i≠j),Di均是分层采样,各子集互斥,每次用k-1个子集的并集作为训练集,余下那个子集作为测试集,可获得k组训练/测试集,可进行k次训练和测试,最终返回k个测试结果均值。交叉验证评估结果稳定性及保真性很大程度上取决于k的取值,通过称为k折交叉验证(k-fold cross validation),中通常取10,或5、20。k组训练/测试集存在许多种划分方式,k折交叉验证通常随机使用不同划分重复p次,最终评估结果是这p次k折交叉验证结果的均值。
留一法(Leave-One-Out,简称LOO),假定包含m个样本,令k=m,则得到交叉验证法的特例留一法。留一法的评估结果往往被认为较准确,但数据集较大时,计算开销难以忍受。
③自助法bootstrapping,因留出法有交叉验证法均要留一部分样本用于测试,因此评估模型用的训练集比D小,必然引入一些因训练样本规模不同导致的估计偏差(留一法受此影响最小,但计算复杂度太高了)。自助法是个较好的解决方法,它以自助采样法(bootstrap sampling)为基础,即对于容量为m的样本集D,采用有放回的采样方式,从中采取m个样本形成数据集D’,显然其中可能存在重复样本,经推算初始数据集D约有36.8%的样本未出现在D’中,于是将D’作为训练集,而D\D’作为测试集。
自助法适用于数据集较小、难以有效划分训练/测试集时很有用。由于自助法产生的数据集改变了 初始数据集的分布,会引入估计偏差,因此,在初始数据量足够时,留出法和交叉验证法更常用。
④调参与最终模型,参数调节或调参(parameter tuning),由于算法的很多参数是在实数范围内取值的,对每种参数都训练出模型是不可行的,现实常用做法,对每个参数选定一个范围和变化步长。即使如此,很多学习算法有大量参数要设定,将导致极大的调参工作程量,参数调得好不好往往对最终模型性能有关键性影响。
测试集,学得模型在实际使用中遇到的数据称为测试数据;
验证集(validation set),模型评估与选择中,用于评估测试的数据集。
用测试集上的判别效果来估计模型在实际使用时的泛化能力,把训练数据划分为训练集和验证集,基于验证集的性能进行模型选择和调参。
原文:https://www.cnblogs.com/Sweepingmonk/p/11037261.html