内部验证

严格的建模流程,需要将数据划分成训练集和测试集,测试集不参与训练模型的参数(包括超参数)的过程。对于不需要选择超参数的模型(如广义线性模型或树模型的变量已确定时),直接使用训练集进行训练即可得到较为可靠的参数。但对于需要确定超参数的情况(比如SVM模型、广义线性模型或树模型需要筛选变量时),必须进一步将训练集划分成一部分验证集,以确定超参数。此时,内部验证是十分重要的环节。另外,当样本量不够大而缺少测试集时(样本量较小时,强行划分测试集可能会造成测试偏移),也需要采用内部验证的策略。

内部验证主要有两大类方法:交叉验证法自助采样法

交叉验证(Cross Validation)最常见的方法是10-折交叉验证和留一法。从随机性来看,单纯的交叉验证也可能存在随机种子的偏移(可以找到一些数据划分方式,使得交叉验证的平均结果较好或较差)。因此严谨的做法是进行多次交叉验证,如10次10-折交叉验证(笔者喜欢用100次10-折交叉验证,也就是总共验证1000次)。交叉验证的具体做法本文不详述,这里讨论下选择的折数k对交叉验证结果的潜在影响。当样本量较小时(如少于50时),折数k应当尽量大一点(建议10甚至20),否则因为折数不够而导致训练样本量不够,从而导致模型欠拟合;样本量稍微大点的时候(如超过200时),折数k对验证结果的影响相对较小。折数k的选择,是方差和偏差的权衡。有一篇文章有点意思,可以看看:「交叉验证」到底如何选择K值?

自助采样(Bootstraping)相对于交叉验证而言更为灵活。从随机性来看,较多的自助采样不容易造成随机种子设置的偏移(最常见的是1000次Bootstraping)。更值得一提的是,自助采样法在样本量较小时,比交叉验证多一丢丢的优势:自助采样保留了训练数据的样本量,使得模型降低欠拟合的风险。但同时,也会引入一定的偏差(改变了样本的分布情况,被重复采用的样本的分布密度增大)。

两种方法各有优劣,虽然网上有人建议样本量实在太小时才使用自助采样,笔者认为不必太纠结哪种更好,可以都试试。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章