决定下一步做什么
总是把时间浪费在毫无意义的尝试上。所以,是使用更多的训练
样本:
- 获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可
考虑先采用下面的几种方法。 - 尝试减少特征的数量
- 尝试获得更多的特征
- 尝试增加多项式特征
- 尝试减少正则化程度 λ
- 尝试增加正则化程度 λ
评估一个假设
我们将数据分成训练集和测试集,通常用 70%的数据作为训
练集,用剩下 30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。
- 对于线性回归模型,我们利用测试集数据计算代价函数 J
- 对于逻辑回归模型,我们除了可以利用测试数据集来计算代价函数外:
误分类的比率,对于每一个测试集实例,计算:
然后对计算结果求平均。
模型选择和交叉验证集
模型选择的方法为:
- 使用训练集训练出 10 个模型
- 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
- 选取代价函数值最小的模型
- 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)
诊断偏差和方差
训练集误差和交叉验证集误差近似时:偏差/欠拟合
交叉验证集误差远大于训练集误差时:方差/过拟合
正则化和偏差/方差
- 使用训练集训练出 12 个不同程度正则化的模型
- 用 12 模型分别对交叉验证集计算的出交叉验证误差
- 选择得出交叉验证误差最小的模型
- 运用步骤 3 中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与 λ 的值绘制在一张图表上:
• 当 λ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大
• 随着 λ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加
学习曲线
学习曲线就是一种很好的工具,我经常使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线是学习算法的一个很好的合理检验(sanity check)。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。
决定下一步做什么
有些方法可能改进我们学习算法的效果,有些方法则可能是徒劳。
- 获得更多的训练实例——解决高方差
- 尝试减少特征的数量——解决高方差
- 尝试获得更多的特征——解决高偏差
- 尝试增加多项式特征——解决高偏差
- 尝试减少正则化程度 λ——解决高偏差
- 尝试增加正则化程度 λ——解决高方差
神经网络的方差和偏差:
你可以充分运用以上这些内容来判断哪些途径可能是有帮助的。而哪
些方法可能是无意义的。如果你理解了以上几节视频中介绍的内容,并且懂得如何运用。那么你已经可以使用机器学习方法有效的解决实际问题了。你也能像硅谷的大部分机器学习从业者一样,他们每天的工作就是使用这些学习算法来解决众多实际问题。