zoukankan      html  css  js  c++  java
  • 评估预测函数(3)---Model selection(选择多项式的次数) and Train/validation/test sets

    假设我们现在想要知道what degree of polynomial to fit to a data set 或者 应该选择什么features 或者 如何选择regularization parameter λ

    我们该如何做?----Model selection process

    很好的拟合training set并不意味着是一个好的hypothesis

    上图是一个overfitting的例子,它能很好的拟合training data,但它不是一个好的预测函数。所以一般来说,the training set error is not a good predictor for how well the hypothesis will do on new examples. Hypothesis能很好的拟合training set并不意味着它也能很好的工作在新的数据集上,所以training error不是一个好的判断这个hypothesis是否好的指标(how well the hypothesis will generalize to new examples).

    很好的拟合test set并不意味着是一个好的hypothesis

    choose the degree of polynomial ----选择以上10个里面的一个model,相当于我们要fit extra sort of parameter----d,这样我们就多了一个另外的参数需要拟合。

    通过计算Jtest(Θ),选择值最小的做为选择的模型。但是这并不意味着它会在新鲜的数据上表现良好,因为我们选择它其实是对参数d做的一次拟合,如前面所介绍的(在trainnng set上拟合很好并不意味着在新的数据预测准确),同理,在test set上我们对d做了拟合,并不意味着在新的数据时我们就会预测准确。(our extra parameter d is fit to test set)

    那么应该如何来评估我们的hypothesis呢?--将数据集分为三部分:trainning set, cross validation set, test set

    我们将我们的data set分为三部分,第一部分用来做为training data,第二部分为Cross validation set(CV),第三部分为test set.(一般的比例为60%,20%,20%)

    mcv为我们的CV example的个数,mtest为test example的个数.

    那么应该如何来评估我们的hypothesis呢?--计算train/validation/test(generalization) error

    如何选择model以及评估我们的hypothesis?--使用cross validation set来选择model 

    我们使用cross validation set(不是test set)去选择我们的model. 

    1>通过各个model在trainning set 上的cost function,求出使这些cost function最小的parameters

    2> 求出parameters后,计算各个model在cross validation set上的cost function: Jcv(Θ),然后选择Jcv(Θ)最小的那个model.

    3> 选择出model后,在test set上评估generalization error,即计算Jtest(Θ).

    总结

    在实际情况中我们很多人将数据分为training set 和test set,  test set既用来选择模型也用来评估预测函数,但这不是一种好的做法

    好的做法是将数据分为三部分: training set/ cross validation set/test set .

    training set用来计算参数,求出hypothesis;cross validation set用来选择模型;test set用来对选择的模型以及其预测函数做评估。

  • 相关阅读:
    Spring+mybatis+struts框架整合的配置具体解释
    JavaScript 基础
    MySQL高可用系列之MHA(二)
    设计模式之备忘录模式
    客户管理系统之模块设计(七)
    CURL库的宏定义列表
    servlet调用的几种方式
    modprobe kvm-intel
    sql server 2008 R2 配置开启远程访问
    error: could not find library containing RSA_new
  • 原文地址:https://www.cnblogs.com/yan2015/p/5049694.html
Copyright © 2011-2022 走看看