留出法

评估方式

机器学习面临的问题通常是NP难甚至更难,而有效的学习算法必然是在多项式时间内

运行完成.若可彻底避免过拟合,则通过经验误差最小化就能获最优解,这就意味着我们构造性地证明了 “P=NP”;因此,只要相信”P不等于NP” ,过拟合就不可避免.

输出法

“留出法”(hold-out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集5,另一个作为测试集T,即D = SUT, snT = 0.在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计.
以二分类任务为例.假定D包含1000个样本,将其划分为S包含700个样本,T包含300个样本.用S进行训练后.如果模型在T上有90个样本分类错误,那么其错误率为(90/300) x 100% = 30%,相应的,精度为1 — 30% = 70%.
需注意的是,训练/测试集的划分要尽可能保持数据分布的一致性,避免因数据划分过程引入额外的偏差而对最终结果产生影响,例如在分类任务中至少要保持样本的类别比例相似.如果从采样(S皿pung)的角度来看待数据集的划分过程,则保留类别比例的采样方式通常称为”分层采样”(stratified sampling). 例如通过对D进行分层采样而获得含70%样本的训练集S和含30%样本的测试集T,若D包含500个正例、500个反例,则分层采样得到的s应包含350个正例、350个反例,而T则包含150个正例和150个反例;若5’, T中样本类别比例差别很大,则误差估计将由于训练/测试数据分布的差异而产生偏差.
另一个需注意的问题是,即便在给定训练/测试集的样本比例后,仍存在多种划分方式对初始数据集D进行分割.例如在上面的例子中,可以把P中的样本排序,然后把前350个正例放到训练集中,也可以把最后350个正例放到训练集中,……这些不同的划分将导致不同的训练/测试集,相应的,模型评估的结果也会有差别.因此,单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果.例如进行100次随机划分,每次产生一个训练/测试集用于实验评估,100次后就得到100个结果,而留出法返回的则是这100个结果的平均.