您的位置:首页 > 其它

交叉验证(cross-validation)

2015-03-21 16:51 405 查看

定义

cross-validation,即交叉验证。它常常用来进行模型选择。所谓的n-fold交叉验证,就是将训练数据等分为n份,每次训练的时候,只使用n-1份,余下的数据来对训练得到的参数进行评估。一般交叉验证都是为了选出一些自由参数的值(free parameters),例如penalty的惩罚因子就属于自由参数。

形式化n-fold cross-validation

我们用Θ来表示一组自由参数的向量。对于一个固定的值Θ,交叉验证的过程如下:

1. 首先,随机将一个大小为m的 给定样本集S划分为n个子样本集,或成为n-fold。第i个样本集可以表示为((xi1,yi1),…,(ximi,yi,mi)) 大小为mi.

2. 得到n-fold之后,对于任意的i∈[1,n], 从中取出第i-fold,其余的用来进行训练,得到hypothesis hi. hi在ith-fold上面进行测试。如下图:



3. 参数Θ的值是通过计算hypothesis hi的平均错误得到的,这个平均错误被称为交叉验证误差(cross-validation error).可以用下式来进行表示:

R^CV(Θ)=1n∑ni=11mi∑mij=1L(hi(xij),yi,j)

n的选择

如果n的取值较小,模型会出现smaller variance, large bias. 即模型欠拟合。

如果n的取值较大,模型会出现large variance, small bias.即模型过拟合。

一般的机器学习中,n的取值为5或10.

交叉验证在机器学习训练中的作用

一般的机器学习问题,总是先将所用的数据分成两部分,即训练数据和测试数据。训练数据用来进行交叉验证,得到最优的参数。对应到上面就是,改变Θ的值,利用交叉验证来选择Θ的值。

怎么选择最佳的Θ呢?通常是取使得R^CV(Θ)最小的那个Θ.

选出Θ后,这个算法就在取定的Θ下面进行整体的训练。

整体的性能是依赖测试数据在选择的参数上的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习