定义
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(Θ) 最小的那个 Θ .
选出 Θ 后,这个算法就在取定的 Θ 下面进行整体的训练。
整体的性能是依赖测试数据在选择的参数上的性能。