这篇文章主要讲解的是如何来对训练出来的代价函数进行评估,一起怎么处理
所遇到的各种问题。
0.引例
假如你已经训练好了一个代价函数来预测房价,然而你却发现用来预测新数据集时,其效果异常的糟糕。那我们接下来该怎么办呢?
可以看到方法有很多种,但是到底应该怎么来进行选择呢?当然绝对不能凭着感觉来。
1. Evaluating your hypothesis
评价一个模型(代价函数)的好坏总体上都是从训练过程中的代价值来进行评判的,其结果无非有三种:欠拟合,恰拟合,过拟合。我们都希望在训练的过程中能够得到最小的代价值,但是最终或许这并不是一个特别好的结果。因为此时有可能就出现了过拟合。所以,说一千道一万首先需要弄清楚的就是这个问题。
假若模型的特征维度只有1个维度,我们可以很直观的通过在数据集上画出代价函数的图像,来判断属于三种情况的哪一种。但问题是,几乎绝大多数问题面临的都是大于1维度的情况,很明显画图就不太现实了。
1.1 Cross Validation
对于已经确定好的模型(e.g. 多项式的次幂 d ,规则项的
1.2 Hyper parameter and Model selection
超参数(hyper parameter),大多数机器学习算法都有超参数,可以设置来控制算法行为。超参数的值不是通过学习算法本身学习出来的,是因为这样的参数太难优化(例如 d 和
如果仅仅是因为摸个模型的在训练集上表现得异常出色(代价值特别低)我们就选择该模型的或,未免就显得太武断了。因为此时就可能出现了过拟合的现象,所以我们就为数据集选择一个合适的模型,虽然特征冗余也会出现过拟合。而方法就是将原有的数据集分成训练集60%(training set)、交叉验证集20%(cross validation set)和测试集20%(test set),分别用于计算得到training error,cross validation error以及test error(即generalization error)。
1.2.1 对于不含有规则项的代价函数来说:
假定现在有10个备选模型,分别如下: