机器学习笔记10——应用机器学习算法的建议

目前,我们对机器学习的算法也有了一定的了解,这一节将会给大家一些建议,关于如何有效的使用机器学习算法。对于相同的算法,不同的人会使其发挥不同的效果,所以,这一节的主题就是教大家如何用机器学习算法解决具体问题。

主要内容
  • 学习算法的调试诊断方法

  • 误差分析和消蚀分析

  • 如何求解机器学习问题

    例:过早优化问题(软件编写过程中让代码高速运行)

一、学习算法的调试问题

举个例子:

垃圾邮件识别系统,仔细筛选过后得到100个词作为特征(而不是词典中的50000+个词汇)。

使用的算法是贝叶斯逻辑回归,用梯度下降算法实现,测试误差为20%,这是一个不能接受的较高的误差。


这是贝叶斯逻辑回归,有点像最大似然估计,但是这里多了一项惩罚项,以防止过拟合。

我们的问题是:当你实现了贝叶斯逻辑回归并且经过测试得到了较高的误差,那么接下来该怎么办?

通常来说,我们会想方设法的改造算法,比如有如下几种解决方式:

1.使用更多的训练样本

2.使用更少的特征(特征太多缩小范围)

3.使用更多的特征(扩大范围继续找)

4.更改特征 邮件标题特征 vs 邮件内容特征

5.梯度下降可能没有收敛,再多次运行梯度下降

6.使用牛顿算法收敛(效果好)

7.调节参数 λ 的值

8.使用SVM算法(效果好)

上述列举了几种改进算法的可能,这样的方法可能对算法有效,但非常耗费时间,且很大程度依赖于运气。

这八种改进方法处理的都是不同的问题,可能其中的一些方法根本不需要,如果可以排除其中的六项——通过某种方式深度的分析问题,就可以节省很多时间。

一般来说,不应该随意的改变学习算法,但改进方法如此之多,也不能一个一个的去尝试,更好的方式就需要通过不同的诊断方法来确定问题,之后再修正这些问题

之前举的例子中贝叶斯逻辑回归的误差太大了,假设我们认为可能是过拟合导致的问题(高方差),或者使用的特征太少了(高偏差)。那么应该怎样确定是高方差还是高偏差呢?

高方差存在一个特点:因为数据拟合的好,所以训练误差将会远远小于测试误差。高偏差的话,那么训练误差也会很高。


在高方差的前提下,随着训练集的增加,测试误差会逐渐减小(绿线),而训练误差会逐渐增加,(红线表示预期的误差)。同样也可以通过这个图,判断训练误差与测试误差的差距,如果差距很大,那么可以通过增加训练集的大小来缩短二者之间的差距。

在高偏差的前提下,随着训练集的增加,测试误差会逐渐减小并最终趋于平缓不再变化,训练误差会逐渐增加。如果发现训练误差超过预期误差了,那么即使增加再多的数据集,训练误差也不会发生改变,不能将其拉回到预期的误差。

那么,判断测试误差(绿色的曲线)是继续向下还是水平不变是比较困难的,所以判断高方差还是高偏差的问题的方法是通过观测测试误差与训练误差的差距

通过对上述问题的解答,我们回过头来看最初列举出的八种解决问题的方法。

1.使用更多的训练样本 【解决高方差问题】

2.使用更少的特征(特征太多缩小范围) 【解决高方差问题】

3.使用更多的特征(扩大范围继续找) 【解决高偏差问题】

4.更改特征 邮件标题特征 vs 邮件内容特征 【解决高偏差问题】

之后,我们针对后面的四种方法设计诊断方法。下面我们来看另外一个例子:

垃圾邮件分类系统中,使用贝叶斯逻辑回归算法,最终判断垃圾邮件时有2%的误差,判断非垃圾邮件时有2%的误差。系统会漏掉2%的垃圾邮件还可以接受,但同时有2%的非垃圾邮件被拒绝是不能忍受的。

同样是垃圾邮件分类系统,通过SVM中的线性核算法,判断垃圾邮件时有10%的误差,判断非垃圾邮件时有0.01%的误差,这种解决方法更让人接受。

那么问题来了:如果你想用逻辑回归来实现垃圾邮件分类(可能因为逻辑回归运行效率高,更方便blablabla)可是现在逻辑回归的效果并不好,那么我们该怎么办?

非常常见的问题:你可能会怀疑逻辑回归算法并没有收敛。


图中曲线意味着逻辑回归算法要优化的目标 J(θ) ,随着迭代次数的增加,很难区分曲线是上升状态还是水平保持不变。所以相对于查看曲线的状态,我们还需要其他的方法来判断算法是否收敛。

另一个怀疑的问题是:我们是否找到了正确的优化函数。


上述等式是对所有预测正确的样本进行加权求和,意味着预测准确率。非垃圾邮件的权值要比垃圾邮件的权值大,因为我们更看重非垃圾邮件的准确率。


针对贝叶斯逻辑回归来说,它的优化目标是上述等式,基本上就是最大似然,只不过多了一个惩罚项。那么针对误差问题,我们是应该改变

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值