假设我们现在想要知道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用来对选择的模型以及其预测函数做评估。