交叉验证(cross-validation)

定义

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(Θ)=1nni=11mimij=1L(hi(xij),yi,j)

n的选择

如果n的取值较小,模型会出现smaller variance, large bias. 即模型欠拟合。
如果n的取值较大,模型会出现large variance, small bias.即模型过拟合。
一般的机器学习中,n的取值为5或10.

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

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

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

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

整体的性能是依赖测试数据在选择的参数上的性能。

你可能感兴趣的:(机器学习)