山东大学数据结构课程设计 —— KNN分类器应用于手写数字识别

在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方的和。这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。把每个样本的预报误差平方求和,称为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 ​)。

  1. n较小时,n取 ( 1 , 10 ) (1,10) (1,10)中的奇数;
  1. 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. 1~10内,步长为2;

  2. 10~30内,步长为4;

  3. 30~60,步长为6

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值