博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
training set, validation set, test set的区别
阅读量:4166 次
发布时间:2019-05-26

本文共 953 字,大约阅读时间需要 3 分钟。

首先安利一下一个机器学习的入门在线课程:

以及关于上面这个问题的一个解答:

大四做毕设的时候就有这个问题,当时没想明白,后面一直疑惑不解,直到今天才搞懂。

首先写一下结论:

  1. training set: 用来训练模型
  2. validation set : 用来做model selection
  3. test set : 用来评估所选出来的model的实际性能

我对这三个名词的疑惑主要是由于一下几个原因:

  1. 之前做机器学习的时候,一般都没有涉及到模型选择(model selection),所以对validation set了解不足。
  2. 对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是不公平的。

转载地址:http://upqxi.baihongyu.com/

你可能感兴趣的文章
Tseitin算法
查看>>
《Java语言程序设计与数据结构》编程练习答案(第五章)(四)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第六章)(一)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第六章)(二)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第六章)(三)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第七章)(一)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第七章)(二)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第七章)(三)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第九章)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第十一章)
查看>>
《Java语言程序设计与数据结构》编程练习答案(第十二章)
查看>>
Error: could not find java.dll Error: Could not find Java SE Runtime Environment解决方法
查看>>
移动数据库发展现状报告
查看>>
《Java语言程序设计与数据结构》编程练习答案(第十七章)
查看>>
《计算机网络 自顶向下方法》答案(第七章)
查看>>
论肖战$\not=$孙笑川
查看>>
Android Studio 3.6 layout文件text模式切换
查看>>
德意志文化学研究(一)
查看>>
《第一行代码》读书笔记(一)
查看>>
《计算机网络 自顶向下方法》答案(第八章)(重制版)
查看>>