《机器学习》学习笔记6:评估、选择、诊断、设计

Week6 评估、选择、诊断、设计
基于吴恩达《机器学习》课程
参考黄海广的笔记
本篇博客为第六周的内容。
这周内容较为宏观,技术上的细节较少。主要就是说了些应用上的建议和步骤。


10 应用机器学习的建议(Advice for Applying Machine Learning)

当我们运用训练好了的模型来预测未知数据的时候发现有较大的误差,我们下一步可以做什么?

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

  2. 尝试减少特征的数量

  3. 尝试获得更多的特征

  4. 尝试增加多项式特征

  5. 尝试减少正则化程度 λ \lambda λ

  6. 尝试增加正则化程度 λ \lambda λ

为了不做无用尝试,需要评估和诊断算法。

10.1 评估假设函数

如何判断一个假设函数是否过拟合?对于简单的例子,我们可以对假设函数 h ( x ) h(x) h(x)进行画图,然后观察图形趋势,但是有很多特征变量的问题,就没法画图了。

一般用70%的数据作为训练集,用剩下30%的数据作为测试集。通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。

  1. 对于线性回归模型,我们利用测试集数据计算代价函数 J J J

  2. 对于逻辑回归模型,我们除了可以利用测试数据集来计算代价函数外,还可以算误分类的比率(0/1错误分类)

10.2 模型的选择和交叉验证集

为了在N个不同次数多项式模型中选择合适的模型。

使用60%的数据作为训练集,使用 20%的数据作为交叉验证集,使用20%的数据作为测试集。

选择模型的方法:

  1. 训练集训练N个模型,

  2. 交叉验证集计算代价函数,选出代价函数最小的模型,

  3. 测试集计算代价函数作为推广误差。

10.3 诊断偏差和方差

高偏差和高方差的问题是欠拟合和过拟合的问题。

我们通常会通过将训练集和交叉验证集的代价函数误差与多项式的次数绘制在同一张图表上来帮助分析:
在这里插入图片描述

训练集误差和交叉验证集误差近似时:高偏差/欠拟合(左边图像)

交叉验证集误差远大于训练集误差时:高方差/过拟合(右边图像)

10.4 正则化参数选择和偏差/方差

训练模型一般会使用一些正则化方法来防止过拟合,但是我们可能会正则化的程度太高或太低了。所以需要选择合适的 λ λ λ

我们同样把数据分为训练集、交叉验证集和测试集。

选择一系列的想要测试的 λ \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 0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12个)

选择 λ \lambda λ的方法:

  1. 使用训练集训练出12个不同程度正则化的模型,

  2. 分别用交叉验证集计算的出交叉验证误差,选择得出交叉验证误差最小的模型,

  3. 用选出模型对测试集计算得出推广误差。

我们也可以同时将训练集和交叉验证集模型的代价函数误差与λ的值绘制在一张图表上:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-26PwJMRc-1635656859784)(https://secure.wostatic.cn/static/t6dufLhshZE23TJQe2zHrF/image.png)]

λ \lambda λ 较小时,训练集误差较小(过拟合)而交叉验证集误差较大。

随着 λ \lambda λ 的增加,训练集误差不断增加(欠拟合),而交叉验证集误差则是先减小后增加。

10.5 学习曲线

学习曲线用来判断某一个学习算法是否处于偏差、方差问题。

学习曲线是将训练集误差和交叉验证集误差与训练集样本数量( m m m)的函数绘制的图表。

例如我们有N行数据,我们从1行数据开始,逐渐学习更多行的数据。当训练较少行数据的时候,训练的模型将能够非常完美地适应较少的训练数据,但是训练出来的模型却不能很好地适应交叉验证集数据或测试集数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4mashz9e-1635656859786)(https://secure.wostatic.cn/static/wrkSG9L8TkbieLDtPigjjS/image.png)]

以下例子利用学习曲线识别高偏差/欠拟合,可以看出,无论训练集有多么大误差都不会有太大改观,也就是说在高偏差/欠拟合的情况下,增加数据到训练集不一定能有帮助

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfSu0CGR-1635656859788)(https://secure.wostatic.cn/static/z56gBiukrrn6tfAoGBksY/image.png)]

以下例子利用学习曲线识别高方差/过拟合,可以看出,当交叉验证集误差远大于训练集误差时,往训练集增加更多数据可以提高模型的效果。也就是说在高方差/过拟合的情况下,增加更多数据到训练集可能可以提高算法效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3vGWeDnm-1635656859789)(https://secure.wostatic.cn/static/euj4AeYew2HEV21inEaYYC/image.png)]

10.6 决定下一步做什么

通过以上方法,我们找到了学习算法存在的问题,接下来就是决定下一步做什么来改进这些问题。

  1. 获得更多的训练样本——解决高方差

  2. 尝试减少特征的数量——解决高方差

  3. 尝试获得更多的特征——解决高偏差

  4. 尝试增加多项式特征——解决高偏差

  5. 尝试减少正则化程度λ——解决高偏差

  6. 尝试增加正则化程度λ——解决高方差

10.7 神经网络的方差和偏差

使用较小的神经网络,类似于参数较少的情况,容易导致高偏差和欠拟合,但计算代价较小。

使用较大的神经网络,类似于参数较多的情况,容易导致高方差和过拟合,虽然计算代价比较大,但是可以通过正则化手段来调整而更加适应数据。

通常选择较大的神经网络并采用正则化处理会比采用较小的神经网络效果要好。

对于神经网络中的隐藏层的层数的选择,通常从一层开始逐渐增加层数,为了更好地作选择,可以把数据分为训练集、交叉验证集和测试集,针对不同隐藏层层数的神经网络训练神经网络,然后选择交叉验证集代价最小的神经网络。

11 机器学习系统的设计(Machine Learning System Design)

在设计机器学习系统时,应该按照怎样的流程和优先级?

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

接下来我们有很多方法可以选择:收集更多的数据、开发一系列复杂的特征、1. 为探测刻意的拼写错误开发复杂的算法等。

可以使用误差分析Error Analysis)从中选择合适的方法来提升机器学习系统的效率。

11.1 误差分析

构建一个学习算法的推荐方法为:

  1. 从简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法,避免过早优化。

  2. 绘制学习曲线,检验误差,决定优化方向,是增加更多数据,或者添加更多特征,还是其他选择。

  3. 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的样本,看看这些样本是否有某种系统化的趋势。

有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用具体的数值来判断更有效,通常我们是看交叉验证集的误差。

11.2 偏斜类的误差评估

偏斜类问题就是指不对称性分类问题,即某个分类比另一个分类样本数量多很多。

在偏斜类中,误差的大小不能视为评判算法效果的依据。此时需要用到查准率Precision)和查全率Recall)。

预测的结果分成四种情况:

  1. 真阳性True Positive,TP):预测为真,实际为真

  2. 真阴性True Negative,TN):预测为假,实际为假

  3. 假阳性False Positive,FP):预测为真,实际为假

  4. 假阴性False Negative,FN):预测为假,实际为真

查准率=TP/(TP+FP),即预测为真的真样本在所有预测为真的样本中的比例。例如,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。

查全率=TP/(TP+FN),即预测为真的真样本在所有真样本中的比例。例如,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

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

假使,我们的算法输出的结果在0-1 之间,我们使用阀值0.5 来预测真和假。

如果我们希望更高的查准率,可以使用比0.5更大的阀值,如0.7,0.9。

如果我们希望提高查全率,可以使用比0.5更小的阀值,如0.3。

将不同阀值情况下,查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IcST5T4c-1635656859790)(https://secure.wostatic.cn/static/qMgRtdTSBcHbDSh7PByaMx/image.png)]

选择这个阀值的一种方法是计算F1 值F1 Score),其计算公式为:

F 1 S c o r e : 2 P R P + R {{F}_{1}}Score:2\frac{PR}{P+R} F1Score:2P+RPR

我们选择使得F1值最高的阀值。

11.4 机器学习的数据

之前说不要刚开始就尝试收集大量数据来改善算法性能,因为在某些情况下样本数量增多不能带来明显改进。

但是在特征值有足够的信息来预测 y y y值,和使用一种需要大量参数的学习算法时,使用数据量远大于参数数量的样本数能得到一个训练误差较低的模型。

你有大量的数据,而且你训练了一种带有很多参数的学习算法,那么这将会是一个很好的方式,来提供一个高性能的学习算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值