机器学习吴恩达第六周

10、应用机器学习的建议

10.1决定下一步做什么

获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可考虑先采用下面的几种方法。

  1. 尝试减少特征的数量
  2. 尝试获得更多的特征
  3. 尝试增加多项式特征
  4. 尝试减少正则化程度𝜆
  5. 尝试增加正则化程度𝜆
    要想改进一种算法的效果,什么样的尝试,才是有意义的。因此,在接下来几节课中,我将先来介绍如何评价你的学习算法。

10.2评估一个假设

仅仅是因为这个假设具有很小的训练误差,并不能说明它就一定是一个好的假设函数。而且我们也学习了过拟合假设函数的例子,所以这推广到新的训练集上是不适用的。

为了检验算法是否过拟合,我们将数据分成训练集和测试集,通常用 70%的数据作为训练集,用剩下 30%的数据作为测试集。
通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。

  1. 对于线性回归模型,我们利用测试集数据计算代价函数𝐽
  2. 对于逻辑回归模型,我们除了可以利用测试数据集来计算代价函数外:
    在这里插入图片描述

10.3模型选择与交叉验证集

假设我们要在 10 个不同次数的二项式模型之间进行选择:
显然越高次数的多项式模型越能够适应我们的训练数据集,但是适应训练数据集并不代表着能推广至一般情况,我们应该选择一个更能适应一般情况的模型。我们需要使用交叉验证集来帮助选择模型。
即:使用 60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用 20%的数据作为测试集
模型选择的方法为:

  1. 使用训练集训练出 10 个模型
  2. 用 10 个模型分别对交叉验证集计算得出交叉验证误差(代价函数的值)
  3. 选取代价函数值最小的模型
  4. 用步骤 3 中选出的模型对测试集计算得出推广误差(代价函数的值)

10.4诊断偏差和方差

高偏差和高方差的问题基本上来说是欠拟合和过拟合的问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于训练集,当 𝑑 较小时,模型拟合程度更低,误差较大;随着 𝑑 的增长,拟合程度提高,误差减小。
对于交叉验证集,折点是我们的模型开始过拟合训练数据集的时候。
在这里插入图片描述
训练集误差和交叉验证集误差近似时:偏差/欠拟合
交叉验证集误差远大于训练集误差时:方差/过拟合

10.5正则化和偏差/方差

在我们在训练模型的过程中,一般会使用一些正则化方法来防止过拟合。我们在选择 λ 的值时也需要思考与刚才选择多项式模型次数类似的问题。
在这里插入图片描述
我们选择一系列的想要测试的 𝜆 值,通常是 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 个)。我们同样把数据分为训练集、交叉验证集和测试集。

选择𝜆的方法为:

  1. 使用训练集训练出 12 个不同程度正则化的模型
  2. 用 12 个模型分别对交叉验证集计算的出交叉验证误差
  3. 选择得出交叉验证误差最小的模型
  4. 运用步骤 3 中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与 λ 的值绘制在一张图表上:
    在这里插入图片描述
    • 当 𝜆 较小时,训练集误差较小(过拟合)而交叉验证集误差较大
    • 随着 𝜆 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加

10.6学习曲线

学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(𝑚)的函数绘制的图表。
在这里插入图片描述
在高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助。
假设我们使用一个非常高次的多项式模型,并且正则化非常小,可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。
也就是说在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果。

10.7决定下一步做什么

  1. 获得更多的训练实例——解决高方差
  2. 尝试减少特征的数量——解决高方差
  3. 尝试获得更多的特征——解决高偏差
  4. 尝试增加多项式特征——解决高偏差
  5. 尝试减少正则化程度 λ——解决高偏差
  6. 尝试增加正则化程度 λ——解决高方差

使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。
通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好

11、机器学习系统的设计

11.1首先要做什么

本周以一个垃圾邮件分类器算法为例进行讨论。
为了解决这样一个问题,我们首先要做的决定是如何选择并表达特征向量𝑥。我们可以选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现,来获得我们的特征向量(出现为 1,不出现为 0),尺寸为 100×1。

11.2误差分析

就是根本没有用复杂的系统,只是很快的得到的结果。即便运行得不完美,但是也把它运行一遍,最后通过交叉验证来检验数据。一旦做完,你可以画出学习曲线,通过画出学习曲线,以及检验误差,来找出你的算法是否有高偏差和高方差的问题,或者别的问题。在这样分析之后,再来决定用更多的数据训练,或者加入更多的特征变量是否有用。

我们必须用证据来领导我们的决策,怎样分配自己的时间来优化算法,而不是仅仅凭直觉,除了画出学习曲线之外,一件非常有用的事是误差分析,

什么类型的邮件总是被错误分类。经常地这样做之后,这个过程能启发你构造新的特征变量,或者告诉你:现在这个系统的短处,然后启发你如何去提高它。
构建一个学习算法的推荐方法为:

  1. 从一个简单的能快速实现的算法开始
  2. 绘制学习曲线,决定是增加更多数据,或者添加更多特征
  3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,

误差分析要做的既是检验交叉验证集中我们的算法产生错误预测的所有邮件,看:是否能将这些邮件按照类分组。后看分类器对哪一组邮件的预测误差最大,并着手优化。

在模型比较时,用数值来判断哪一个模型更好更有效,通常我们是看交叉验证集的误差。

所以我强烈推荐在交叉验证集上来实施误差分析,而不是在测试集上。

不要担心你的算法太简单,或者太不完美,而是尽可能快地实现你的算法。为我们可以先看看算法造成的错误,通过误差分析,来看看他犯了什么错,然后来决定优化的方式。

11.3类偏斜的误差度量

这件重要的事情就是偏斜类(skewed classes)的问题。类偏斜情况表现为我们的训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。
在所有情况下都预测肿瘤是良性的,那么误差只有 0.5%。然而我们通过训练而得到的神经网络算法却有 1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。
查准率(Precision)和查全率(Recall):

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真

查准率=TP/(TP+FP),
查全率=TP/(TP+FN)
这样,对于我们刚才那个总是预测病人肿瘤为良性的算法,其查全率是 0。

11.4查准率和查全率之间的权衡

在这里插入图片描述

如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准率,我们可以使用比 0.5 更大的阀值,如 0.7,0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。
如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。在这里插入图片描述
我们希望有一个帮助我们选择这个阀值的方法。一种方法是计算 F1 值(F1 Score),其计算公式为:
𝐹1𝑆𝑐𝑜𝑟𝑒: 2*𝑃𝑅(𝑃 + 𝑅)
我们选择使得 F1 值最高的阀值。

11.5机器学习的数据

数据量非常大时,这些不同类型的算法效果都很好。
在这里插入图片描述
这些趋势非常明显,首先大部分算法,都具有相似的性能,其次,随着训练数据集的增大,在横轴上代表以百万为单位的训练集大小,从 0.1 个百万到 1000 百万,也就是到了 10亿规模的训练集的样本,这些算法的性能也都对应地增强了。
“取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。

首先,一个人类专家看到了特征值 𝑥,能很有信心的预测出𝑦值吗?因为这可以证明 𝑦 可以根据特征值𝑥被准确地预测出来。其次,我们实际上能得到一组庞大的训练集,并且在这个训练集中训练一个有很多参数的学习算法吗?如果你不能做到这两者,那么更多时候,你会得到一个性能很好的学习算法。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值