将数据拆分为训练数据和验证数据,可以减小过拟合的可能性。但这样就必须拆分出和训练集数据分布几乎一致的验证数据。
通过分层采样对数据集D划分出样本集S和测试集T,D=S \cup T,S \cap T=\varnothing。例如,对D进行分层采样而获得70%样本的训练集S和含30%样本的训练集T,若D包含500个正例、500个反例,则分层抽样得到的S应该包含350个正例和350个反例,T包含150个正例和150个反例。
若有多种区分正例反例的划分方法,应当重复上述操作,进行多次划分、训练,最终实验评估结果取多次划分训练结果的平均。通常训练集和验证集的比例是2/3~4/5
分层抽样的具体程序是:把总体各单位分成两个或两个以上的相互独立的完全的组(如男性和女性),从两个或两个以上的组中进行简单随机抽样,样本相互独立。总体各单位按主要标志加以分组,分组的标志与关心的总体特征相关。例如,正在进行有关啤酒品牌知名度方面的调查,初步判别,在啤酒方面男性的知识与和女性的不同,那么性别应是划分层次的适当标准。
现将数据集D划分为k个大小相似的互斥子集,即D=D_1 \cup D_2 \cup D_3 \ldots \cup D_k, D_i \cap D_j= \varnothing (i \neq j)每个子集都尽可能保持数据分布一致,同上即可对每个子集D_i进行分层抽样。看后用k-1个子集做训练集,余下的那一个做测试集。
从而进行k次训练、验证,最终返回测试结果的平均值。而k值取值很影响最终的结果。