Coursera Machine Learning 应用机器学习算法的建议

文章目录
  1. 1. 下一步该怎么办
  2. 2. 评估假设函数
  3. 3. 模型选择和训练/验证/测试集
  4. 4. 偏差vs方差
  5. 5. 正则化对偏差/方差的影响
  6. 6. 学习曲线

下一步该怎么办

当你实现了一个带有正则化的线性回归来预测房价之后,也许你会发现结果并不尽如人意。

此时你可以试试以下一些方法:

  • 获取更多的训练数据
  • 尝试更小的特征集合
  • 添加额外的特征
  • 添加多项式特征
  • 增大或减小正则化参数$\lambda$

评估假设函数

一个假设函数可能在训练集上的误差很小,但是并不是说这个误差越小越好(这通常意味着过拟合了)。因此,对于给定的训练样本,通常可以将其分为训练集(training set)和测试集(test set),一般来说分成七三开。

接下来我们将:

  • 使用训练集来学习参数$\Theta$以及最小化
  • 在测试集上评估误差$J_{test}(\Theta)$

对于线性回归:

对于逻辑回归:

模型选择和训练/验证/测试集

我们之前已经遇到过过拟合问题了,也知道训练误差小并不代表着它的泛化能力也好。

因此,我们需要对模型进行选择,找到合适的参数,比如正则化参数的大小、多项式特征的次数等等(俗称调参)。然后比较,在哪些参数下,模型的表现性能最好(也就是说测试误差最小)。

另外,在模型选择的时候,除了用到训练集和测试集外,通常还会用到交叉验证集(cross validation set),一般按6 : 2 : 2的比例划分。

接下来还是一样,分别计算训练、验证和测试的误差:

train/validation/test error

  • 使用训练集来学习参数$\Theta$以及最小化$J_{train}(\Theta)$
  • 使用验证集来调参
  • 使用测试集来评估泛化能力

注意:永远不要使用测试集来调参!

偏差vs方差

如果你的模型得到比较差的结果,通常有以下两种原因:

  • 高偏差(high bias):欠拟合,一般$J{train}(\Theta)$和$J{CV}(\Theta)$都很高,并且$J{CV}(\Theta) \approx J{train}(\Theta)$
  • 高方差(high variance):过拟合,一般是$J{train}(\Theta)$比较低,但是$J{CV}(\Theta)$却远高于$J_{train}(\Theta)$

bias vs variance

正则化对偏差/方差的影响

接下来,我们看看如何通过正则化参数$\lambda$来影响偏差和方差。

  • $\lambda$过大时:所有权重参数$\Theta$都受到惩罚,大多数参数可能因此而趋于0,这也导致假设函数的结果趋于0,从而引起欠拟合的问题
  • $\lambda$过小时:考虑极端情况$\lambda = 0$,此时完全没有正则化项,当然假设函数会尽可能的拟合数据,从而引起过拟合的问题

regularization and bias/variance

为了选择模型以及正则化参数$\lambda$,通常需要以下几步:

  • 创建一个正则化参数列表 (比如说 $λ∈{0,0.01,0.02,0.04…}$);
  • 使用不同的多项式次数或其他参数变量来生成一系列的模型
  • 迭代正则化参数列表,对每个$\lambda$在这一系列的模型上学习权重参数$\Theta$
  • 使用该$\Theta$来计算交叉验证误差(计算的时候不需要正则化)
  • 选择在验证集上表现最好的参数组合
  • 然后用该参数组合在测试集上计算$J_{test}(\Theta)$,检验其泛化能力

学习曲线

绘制学习曲线通常有助于检查和提高模型的性能

那么,什么是学习曲线呢?

learning curves

通常以训练集大小为横轴,将训练误差$J{train}(\Theta)$和验证误差$J{CV}(\Theta)$绘制在一起来观测训练结果。

学习曲线一般有以下两种情况:

  • 高偏差的情况

    high bias

    在$N$比较小时,$J{train}(\Theta)$会比较低,但是$J{CV}(\Theta)$比较高

    在$N$比较大时,$J{train}(\Theta)$和$J{CV}(\Theta)$都很高,并且$J{CV}(\Theta) \approx J{train}(\Theta)$

    如果学习曲线出现这种情况的话,一般来说即使得到更多的训练样本也是没太大帮助的

  • 高方差的情况

    high variance

    在$N$比较小时,$J{train}(\Theta)$会比较低,但是$J{CV}(\Theta)$比较高

    在$N$比较大时,随着$N$的增大,$J{train}(\Theta)$会一直增加,同时$J{CV}(\Theta)$会一直减小,但是会保持$J{train}(\Theta) \lt J{CV}(\Theta)$,且它们之间的差距还是会很明显的

分享到 评论