training set, validation set, test set的区别

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

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

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

首先写一下结论:

  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是不公平的。

猜你喜欢

转载自blog.csdn.net/swartz2015/article/details/78311592
set