您的位置:首页 > 其它

[机器学习]如何选择模型--cross validation

2015-03-23 16:50 309 查看
对于一个机器学习系统,有以下几个问题需要解决:
1,如何选择feature?
2,该选用哪个算法?
3,给这个算法设置怎样的参数?
这些问题合在一起,就是“如何选择模型”的问题。

例如:可以实现分类系统的算法有 one-vs-all logistic regression,neural network,SVM等等,我们该用哪一个。

要解决个这个问题,我们就要用不同的组合(包括算法,参数,feature)对数据D_train进行training,得到不同的model。
要对这些model做测试,需使用新的数据D_cv。然后,对model的分类预测结果做一个评价(如何评价?

Cross Validation
在上面使用了两个数据集,训练数据集 D_train 和 测试数据集 D_cv,这种方法就是cross validation,以MovieLens 100k dataset为例,具体的操作步骤如下:

1,获取training data set
2,将这笔data 分为 training set 和 cross validation set(cv set)
3,使用不同的组合(包括算法,参数,feature),对training set进行训练并得到不同的model;
4,对这些model在cv set上的表现做一个评分,选择表现较好的模型;

有一个需要注意的地方,我们最终会选择在cv set上表现最好的model,但是对这个model的最终评价,却要在新的一笔数据D_test(类似于The Netflix Prize比赛中,官方最终给你的model进行评分的Data)上测试得到。Andrew
Ng建议将数据进行如下分割:



K-fold Cross Validtion

做法如下:
1,选择20%的数据作为test data set,放一边;
2,将余下的数据分成 K 等份(k-fold);
3,选1个fold 的数据作为 D_cv, 其余的k-1个fold数据作为D_train,这样可以得到 K组 (D_train , D_cv)数据
4,对一个算法来说,使它在K个D_train上训练得到K个model,然后用D_train对应的D_cv对model做测试评价,对K个评价 求Average
5,对每一个算法,重复第4步,最终选择一个评价最好的model



图1,K-fold示意图

实际操作中,5-fold,10-fold都是较好的选择

参考资料:
1,机器学习基石-第十五讲,Validation ---Coursera
2,Machine Learning - 10,Model Selection and Train/Validation/Test Set ---Coursera
3,Practical Machine Learning-Week1,Cross Validation
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: