交叉验证(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(Θ)最小的那个Θ.
选出Θ后,这个算法就在取定的Θ下面进行整体的训练。
整体的性能是依赖测试数据在选择的参数上的性能。
相关文章推荐
- 交叉验证(Cross-Validation)
- k-折交叉验证(k-fold crossValidation)
- Cross-validation 交叉验证与训练集测试集划分
- 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
- k-折交叉验证(k-fold crossValidation)
- 【机器学习】交叉验证和K-折交叉验证cross-validation and k-fold cross-validation
- 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
- 机器学习练习(三)——交叉验证Cross-validation
- k-折交叉验证(k-fold CrossValidation)
- K-折交叉验证(k-fold crossValidation)以及在matlab中的实现
- 机器学习中的交叉验证(cross-validation)
- 模式识别之k-折交叉验证(k-fold crossValidation)
- scikit-learn交叉验证Cross Validation and Grid Search
- 交叉验证(Cross-Validation)和特征选择(Feature Selection)
- 【scikit-learn】05:交叉验证 Cross-validation
- python 利用sklearn.cross_validation的KFold构造交叉验证数据集
- sklearn中的交叉验证(Cross-Validation)
- 8 交叉验证 1 Cross-validation
- cross-validation 交叉验证
- 交叉验证(cross_validation)