本文共 953 字,大约阅读时间需要 3 分钟。
首先安利一下一个机器学习的入门在线课程:
以及关于上面这个问题的一个解答:
大四做毕设的时候就有这个问题,当时没想明白,后面一直疑惑不解,直到今天才搞懂。
首先写一下结论:
我对这三个名词的疑惑主要是由于一下几个原因:
所以下面先分别介绍一下model selection和test过程。
我们知道,在做模型训练之前,我们必须选择所训练的模型的形式:线性模型(y = wx+b)或者非线性模型(SVM,decision tree,neural network….)。选择好模型之后,我们才会开始训练,训练的目标是确定模型的参数,训练一般是通过设计损失函数,然后对损失函数进行优化来完成训练。
而很多时候我们并不知道哪种模型适合,所以往往我们需要对多种模型进行训练,训练完之后就会得到多个模型的结果,我们希望从这些训练好的模型中选择最适合的模型。我们通过用validation set对所有模型进行测试,然后选出error rate最小的那个模型。
所以说valaidation set主要是用来选择模型的。
前面说很多时候我们并不知道哪种模型适合。而事实上,很多时候我们都可以根据前人的经验知道对于一个具体问题,哪种模型更适合,所以实际当中我们倒是很少用到model selection,所以也就没用到validation set,这也是我没有理解validation set的原因。
首先应该明确test过程的作用:他是为了评估模型的性能。
所以说,模型的训练和选择必须和test set无关。而不是像我前面理解的那样,用test结果做反馈,然后修复模型(虽然我们往往忍不住要这样子做),因为这样的话,模型中就包括了test set的信息。这样做test是不公平的。
转载地址:http://upqxi.baihongyu.com/