评估方法
我们通过实验测试来对学习器的泛化误差进行评估并进而做出选择。
因此,需要“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”(testing error)作为泛化误差的近似。通常假设测试样本也是从样本真实分布中独立同分布采样而得,但需注意的是,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。
周老师举了很生动的例子:老师出了10道习题供同学们练习,考试时老师又用同样的这10道题作为试题,这个考试成绩能否有效反映出同学们学得好不好呢?
如果,只有一个包含m个样例的数据集,既要训练,又要测试,怎样才能做到呢?
答案是:通过对D进行适当的处理,从中产生出训练集S和测试集T。先介绍留出法。
留出法
“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即,。在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。
以二分类任务为例,假定D包含1000个样本,将其划分为S包含 700 个样本,T包含 300 个样本,用S进行训练后,如果模型在T上有 90 个在样本分类错误,那么其错误率为
( 90 / 300 ) x 100% = 30%,相应的,精度为 1 - 30% = 70% 。
分层采样
训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似,如果从采样的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为“分层采样”。
例如通过对D进行分层采样而获得含 70% 样本的训练集S和含 30% 样本的测试集T,若D包含 500 个正例、500个反例,则分层采样得到的S应包含 350 个正例、350 个反例,而T则包含 150 个正例和 150 个反例;若S、T 中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差。
随机划分取平均值
即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集 D进行分割,并产生不一样的结果,例如,D样本中的前350个正例,与后350个正例……这些不同的划分将导致不同的训练/测试集,相应的,模型评估的结果也会有差别。
因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。
窘境
若训练集S包含绝大多数样本,则训练出的模型可能更接近于用 D 训练出的模型,但由于T比较小,评估结果可能不够稳定准确;
若令测试集T多包含一些样本,则训练集S与D差别更大了,被评估的模型与用 D 训练出的模型相比可能有较大差别,从而降低了评估结果的保真性,这个问题没有完美的解决方案。
常见做法是将大约 2/3~4/5 的样本用于训练,剩余样本用于测试。
书籍参考:《机械学习》 周志华 清华大学出版社 2016年版
视频参考:周志华老师亲讲-西瓜书全网最详尽讲解-1080p高清原版《机器学习初步》 B站
标签:采样,训练,样本,机械学习,留出,测试,009,日志,评估 From: https://blog.csdn.net/AI_freshfish/article/details/140279063