决定下一步做什么
当已经完成了正则化线性回归,也就是最小化代价函数的值。
但是遗憾的是,在你得到你的学习参数以后,如果你要将你的假设函数放到一组新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差。
那么,接下来我们应该怎么做去改进我们的算法呢?
1.1 获取更多的训练样本吗?这个方法也许有用,但是代价比较大,优先选用以下几种方式。
1.2 尝试减少特征的数量(防止过拟合)
1.3 尝试增加特征的数量(防止欠拟合)
1.4 尝试增加多项式特征
1.5 尝试减少正则化程度lamba
1.6 尝试增加正则化程度lamba
现在又有一个问题了,上面这么多方法,我们应该怎么选用呢?别急别急,接下来我们跟着吴恩达老师的视频一步一步的往下看。
评估一个假设
接下来我们看看我们得出的假设函数是否会存在过拟合和欠拟合的情况。
诶,问题又来了,怎么检测是否过拟合呢?
对于这个简单的例子,我们可以对假设函数进行画图,然后观察图形趋势,但对于特征变量不止一个的这种一般情况,还有像有很多特征变量的问题,想要通过画出假设函数来进行观察,就会变得很难甚至是不可能实现。
那对于特征变量不止一种的咋办呢?
我们将数据分成训练集和测试集,通常用70%的数据作为训练集,用剩下30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。
模型选择和交叉验证集
假设我们要在10个不同次数的二项式模型之间进行选择:
按吴恩达老师的说法是:乍一看越高次数的多项式模型更能适合我们的训练数据集。但是,适应训练数据集并不代表着能推广至一般情况,因此我们需要进行交叉验证集来帮助选择模型。
60%数据作为训练集,20%数据作为交叉验证集,剩下20%作为测试集
分别对应的代价函数:
模型选择的方法为:
- 使用训练集训练出10个模型
- 用10个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
- 选取代价函数值最小的模型
- 用步骤3中选出的模型对测试集计算得出推广误差(代价函数的值)
诊断偏差和方差
当我们运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:
- 要么是偏差比较大,
-
要么是方差比较大。
换句话说,出现的情况要么是欠拟合,要么是过拟合问题。那么这两种情况,哪个和偏差有关,哪个和方差有关??
我们接下来看幅图:
对于训练集,当 $d$ 较小时,模型拟合程度更低,误差较大;随着 $d$ 的增长,拟合程度提高,误差减小。
对于交叉验证集,当 $d$ 较小时,模型拟合程度低,误差较大;但是随着 $d$ 的增长,误差呈现先减小后增大的趋势,转折点是我们的模型开始过拟合训练数据集的时候。
Bias : 偏差
Variance: 方差
通过图片我们得知:
训练集误差和交叉验证集误差**近似**时:偏差/欠拟合
训练集误差和交叉验证集误差相差**很大**的时候:方差/过拟合
正则化和偏差/方差
在我们在训练模型的过程中,一般会使用一些正则化lambda方法来防止过拟合。那么如何选择合适的lambda参数呢?
我们选择一系列的想要测试的 $\lambda$ 值,通常是 0-10之间的呈现2倍关系的值(如:$0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10$共12个)。 我们同样把数据分为训练集、交叉验证集和测试集。
选择合适lambda的参数步骤:
- 使用训练集训练出12个不同程度正则化的模型
- 用12个模型分别对交叉验证集计算的出交叉验证误差
- 选择得出交叉验证误差最小的模型
-
运用步骤3中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与λ的值绘制在一张图表上:
当 $\lambda$ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大
随着 $\lambda$ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加