在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方的和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方求和,称为PRESS(predicted Error Sum of Squares)。
K-fold cross-validation
K-fold cross-validation
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
如下图:
K折验证的一种特殊形式 —— 留一验证正如名称所建议, 留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。
这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于和K-fold 交叉验证是一样的,其中K为原本样本个数。
在某些情况下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。
K折验证法选取超参数 k
为了选取最优的超参数k,在构造KNN分类器时,我们可以使用上文提及的10折交叉验证法,
这个算法流程如下图。
值得一提的是,k的迭代步长如何确定。
在上面的分析中:
K的选取一般来源于经验,一般选取一个较小的大于1的奇数,一般在 ( 1 , n ) (1,\sqrt n) (1,n )。
- n较小时,n取 ( 1 , 10 ) (1,10) (1,10)中的奇数;
- n较大时,n取 ( 1 , n / 2 ) (1,\sqrt n/2) (1,n /2)中的奇数;
并且考虑到,k的值对预测结果的敏感程度,所以在k较小的时候,步数尽可能小;在 k取值较大的时候,步数可以适量增大。
假定样本容量为 n n n, n n n的量级大概在 1 0 6 10^6 106自由,
所以 k k k不超过 n / 2 \sqrt n/2 n /2,也就是500。
所以,k的步长可以这样设计,
从3开始,为了保证k的取值是偶数,
-
1~10内,步长为2;
-
10~30内,步长为4;
-
30~60,步长为6