K-折交叉验证算法

当给定数据集D对于简单的训练/测试或训练/验证分割而言太小难以产生泛化误差的准确性时(因为在小的测试集上L可能具有过高的方差),K-折交叉验证算法可以用于估计学习算法A的泛化误差。数据集D包含的元素是抽象的样本z(i)(对于第i个样本),在监督学习的情况代表(输入,目标)对z(i)=(x(i),y(i)),或者无监督学习的情况下仅用于输入z(i)=x(i)。该算法返回D中每个示例的误差向量e,其均值是估计的泛化误差。单个样本上的误差可用于计算平均值周围的置信区间。虽然这些置信区间在使用交叉验证之后不能很好地证明,但是通常的做法是只有当算法A误差的置信区间低于并且不与算法B的置信区间相交时,我们才声明算法A比算法B更好。


/*************************************************************************************************************************************************************************************/

Define KFoldxv(D,A,L,k);

Require:D为给定数据集,其中元素为z(i)

Require:A为学习算法,可视为一个函数(使用数据集作为输入,输出一个学好的函数)

Require:L为损失函数,可视为来自学好的函数f,将样本z(i)∈D映射到R中标量的函数

Require:k为折数

将D分为k个互斥子集Di,它们的并集为D(互斥:A∩B为空)

for i from 1 to k do

fi=A(D\Di)      (差集,元素包含于D但不包含于Di)

for z(i) in Dido

ej=L(fi,z(j))

end for

end for

Return e

/*************************************************************************************************************************************************************************************/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值