前言
本篇的交叉验证法(Cross-Validation)和下篇的自助法(bootstrap)都是重采样方法(resampling methods)。重采样方法指重复地从训练集中选取数据进行拟合,以得到拟合模型的更多信息。交叉验证法可以用于评估测试误差或者选取合适的灵活度(flexibility),自助法多用于评估参数估计的准确性。本篇讲的是交叉验证法,包括校验集方法(The Validation Set Approach),留一法(Leave-One-Out Cross-Validation),k折交叉验证(k-Fold Cross-Validation)
校验集方法
交叉验证法指的是将观测数据随机地分成训练集(training set)和校验集(validation set)两部分。训练集用于拟合模型,校验集用于测试拟合模型的效果好坏。
校验集方法的优点是概念简单,容易实施。缺点主要有两点:
- 由于划分的随机性,校验集上得到的测试误差估计,可能会有很高的差异
- 只有一部分数据用于训练,可能高估测试误差。
留一法
留一法同样将观测数据分为训练集和校验集两部分,但是有两点不同:一个是只有一个数据用于校验集,其余数据用于训练集。还有一个不同是,假如有 n n n 个观测数据,留一法重复进行了 n n n 次校验集方法的操作,每次的校验集均不相同,可以得到 n n n 个 M S E MSE MSE。
用留一法得到的对测试 M S E MSE MSE 的估计可以用下式表示:
C V ( n ) = 1 n ∑ i = 1 n M S E i CV_{(n)}=\frac{1}{n}\sum_{i=1}^nMSE_i CV(n)=n1i=1∑nMSEi
留一法的优点是
- 采用平均,得到的偏差很小
- 没有不确定性,总是得到一个固定的数值
留一法的缺点是
- 在 n n n 很大的情况下,计算量大
- 在偏差方差权衡中,可能有较高的方差
k折交叉验证
k折交叉验证将观测数据随机地分成大小差不多的 k k k 组,首先将第一组作为校验集,其余 k − 1 k-1 k−1 组作为训练集,得到一个 M S E 1 MSE_1 MSE1;然后将第二组作为校验集,其余 k − 1 k-1 k−1 组作为训练集,得到一个 M S E 2 MSE_2 MSE2;重复操作,得到一组 M S E 1 , M S E 2 , ⋯ , M S E k MSE_1,MSE_2,\cdots,MSE_k MSE1,MSE2,⋯,MSEk。
用k折交叉验证得到的对测试 M S E MSE MSE 的估计可以用下式表示:
C V ( n ) = 1 k ∑ i = 1 k M S E i CV_{(n)}=\frac{1}{k}\sum_{i=1}^kMSE_i CV(n)=k1i=1∑kMSEi
可以看到,留一法是 k = n k=n k=n 的特殊情况。实际问题中, k k k通常选取为 5 5 5或者 10 10 10 。
k折交叉验证的优点是
- 便于计算
- 在偏差方差权衡中,方差较小