[机器学习]如何选择模型--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
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
相关文章推荐
- 面对数据缺失,如何选择合适的机器学习模型?
- 在实际项目中,如何选择合适的机器学习模型?
- 如何选择机器学习模型进行数据分析_简要笔记
- 在实际项目中,如何选择合适的机器学习模型?
- 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
- 在实际项目中,如何选择合适的机器学习模型?
- 在实际项目中,如何选择合适的机器学习模型?
- 【机器学习】如何根据数据集选择适合的模型
- 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普
- 不同机器学习任务深度学习模型的选择
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 如何实现ZBrush中部分模型的选择和隐藏
- Stanford机器学习笔记-6. 学习模型的评估和选择
- 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?(转)
- 机器学习中如何选择分类器
- 『机器学习——周志华』学习笔记——第二章:模型评估与选择
- 机器学习模型的选择
- 机器学习分类算法应该如何选择?
- R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错
- 【scikit-learn】如何进行模型参数的选择