Cross-validation称为交叉验证;Bootstrap称为自助法。其实这两种方法都是重采样的思想,可以以此来估计我们模型的MSE。
1、CV交叉验证
k折交叉验证,就是将样本均分为k块,首先拿第一块作为test,剩下的作为train训练模型,得到test的MSE;接着拿第二块作为test,剩下的作为train;... ;以此类推,直到最后一块作为test,前面的作为train。
这样我们就可以得到k个MSE,最终取平均就能得到这个模型的MSE的估计值。
remark:注意做交叉验证的k次过程中的模型其实是一样的,比如说都是一元线性模型,进行一次k折交叉验证后,最终得到的就是这个一元线性模型的MSE的估计值。然后更换模型比如为三元线性模型,也能得到这个三元线性模型的MSE估计值。 目的就在于比较这两个模型的MSE的大小,哪个小选哪个。所以使用CV交叉验证不是为了估计某个模型的参数,而是为了选择是哪一种模型的MSE最小!(这是很重要的一点,我之前就没想通。现在才明白!)
2、Bootstrap
这个很好理解,假设我们最初有n个样本X1,...,Xn,Bootstrap就是从这n个样本中进行有放回的抽取n个,得到我们新的样本,用这个新的样本来训练模型,计算MSE。这个过程可以进行很多次,最后所有的MSE取平均也能得到我们模型的MSE估计值。
3、超参数的选取
我们这两种方法呢,就可以用于模型超参数的选取,比如一个模型是,这里是模型参数,但是一个超参数,我们该怎样选取呢?
就可以使用CV交叉验证或者Bootstrap,选取不同的,来进行一次交叉验证或bootstrap,得到这个下模型的MSE,最终选取MSE最小的来作为我们这个模型的超参数。