training set, validation set, test set的区别
2017-10-22 17:54
369 查看
首先安利一下一个机器学习的入门在线课程:台湾大学机器学习
以及关于上面这个问题的一个解答:解答
大四做毕设的时候就有这个问题,当时没想明白,后面一直疑惑不解,直到今天才搞懂。
首先写一下结论:
training set: 用来训练模型
validation set : 用来做model selection
test set : 用来评估所选出来的model的实际性能
我对这三个名词的疑惑主要是由于一下几个原因:
之前做机器学习的时候,一般都没有涉及到模型选择(model selection),所以对validation set了解不足。
对test的作用没理解到位。之前一直觉得test的结果是拿来做反馈,以利于模型训练的。
所以下面先分别介绍一下model selection和test过程。
而很多时候我们并不知道哪种模型适合,所以往往我们需要对多种模型进行训练,训练完之后就会得到多个模型的结果,我们希望从这些训练好的模型中选择最适合的模型。我们通过用validation set对所有模型进行测试,然后选出error rate最小的那个模型。
所以说valaidation set主要是用来选择模型的。
前面说很多时候我们并不知道哪种模型适合。而事实上,很多时候我们都可以根据前人的经验知道对于一个具体问题,哪种模型更适合,所以实际当中我们倒是很少用到model selection,所以也就没用到validation set,这也是我没有理解validation set的原因。
所以说,模型的训练和选择必须和test set无关。而不是像我前面理解的那样,用test结果做反馈,然后修复模型(虽然我们往往忍不住要这样子做),因为这样的话,模型中就包括了test set的信息。这样做test是不公平的。
以及关于上面这个问题的一个解答:解答
大四做毕设的时候就有这个问题,当时没想明白,后面一直疑惑不解,直到今天才搞懂。
首先写一下结论:
training set: 用来训练模型
validation set : 用来做model selection
test set : 用来评估所选出来的model的实际性能
我对这三个名词的疑惑主要是由于一下几个原因:
之前做机器学习的时候,一般都没有涉及到模型选择(model selection),所以对validation set了解不足。
对test的作用没理解到位。之前一直觉得test的结果是拿来做反馈,以利于模型训练的。
所以下面先分别介绍一下model selection和test过程。
model selection
我们知道,在做模型训练之前,我们必须选择所训练的模型的形式:线性模型(y = wx+b)或者非线性模型(SVM,decision tree,neural network….)。选择好模型之后,我们才会开始训练,训练的目标是确定模型的参数,训练一般是通过设计损失函数,然后对损失函数进行优化来完成训练。而很多时候我们并不知道哪种模型适合,所以往往我们需要对多种模型进行训练,训练完之后就会得到多个模型的结果,我们希望从这些训练好的模型中选择最适合的模型。我们通过用validation set对所有模型进行测试,然后选出error rate最小的那个模型。
所以说valaidation set主要是用来选择模型的。
前面说很多时候我们并不知道哪种模型适合。而事实上,很多时候我们都可以根据前人的经验知道对于一个具体问题,哪种模型更适合,所以实际当中我们倒是很少用到model selection,所以也就没用到validation set,这也是我没有理解validation set的原因。
test过程
首先应该明确test过程的作用:他是为了评估模型的性能。所以说,模型的训练和选择必须和test set无关。而不是像我前面理解的那样,用test结果做反馈,然后修复模型(虽然我们往往忍不住要这样子做),因为这样的话,模型中就包括了test set的信息。这样做test是不公平的。
相关文章推荐
- 机器学习笔记-模型评估与选择, Training set、Validation set 和 Testing set的区别与作用
- setPreferredSize和setSize的区别及用法
- cmd批处理中set /a和set /p的区别介绍
- 浅谈Java中的Set、List、Map的区别
- javaScript知识点总结-----setTimeout setInterval 区别
- mysql中IFIND_IN_SET和like的区别
- vector和set的区别
- Java Set,List,Map 区别
- linux 中 set,env,export,declare显示shell变量的区别
- list、set、Map的区别和使用
- List,set,Map 的用法和区别等
- Linux中set,env和export这三个命令的区别
- inflate, findViewById与setContentView的区别与联系
- dialog.setCancelable与setCanceledOnTouchOutside的区别
- ASP中set与dim的区别
- Shell环境变量以及set,env,export的区别
- SELECT 与 SET 对变量赋值的区别
- java中 HashMap和Hashtable,list、set和map 的区别(上)
- linux变量 set env export的区别
- android Matrix.setRotate 和 postRotate的区别