机器学习笔记(十一) 机器学习系统的设计

1.工作的优先级

   以垃圾邮件分类器算法为例进行讨论:

   为了解决问题,我们首先要决定如何表达特征向量 x。选择一个由 100 个最常出现在垃圾邮件中的词所构成的列表,根据这些词是否有在邮件中出现(出现为 1,不出现为 0),获得特征向量。

   为了构建这个分类器算法,我们可以:

   (1)收集更多的数据,有更多的垃圾邮件和非垃圾邮件的样本;

   (2)开发一系列复杂的特征;
   (3)基于邮件的正文信息开发一系列复杂的特征;

   (4)探测拼写错误(把 watch 写成 w4tch),开发复杂的算法;

   在上面这些可以选择的做法中,很难决定应该在哪一项上花费时间和精力,一定要作出明智的选择。所以在接下来的课程中讲误差分析,谈谈怎样用一个更加系统性的方法,从这些不同的方法中,选取合适的那一个。


2.误差分析

   如果我们准备研究机器学习或者构造机器学习的应用程序,最好的方法不是建立一个非常复杂的系统,拥有复杂的变量,而是构建一个简单的算法,可以很快地实现它。即便运行得不完美,但是也把它运行一遍,最后通过交叉验证来检验数据。一旦做完,就可以画出学习曲线,通过画出学习曲线,以及检验误差,来找出你的算法是否有高偏差和高方差的问题,或者别的问题。在这样分析之后,再来决定用更多的数据训练,或者加入更多的特征变量是否有用。我们必须用证据来领导我们的决策,怎样分配自己的时间来优化算法,而不是仅仅凭直觉,凭直觉得出的东西一般总是错误的。

   构建一个学习算法的推荐方法为:
   (1)从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法;
   (2)绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择;
   (3)进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势;

   以过滤垃圾邮件为例,误差分析要做的既是检验交叉验证集中算法产生错误预测的所有邮件,检测是否能将这些邮件按照类分组。然后看分类器对哪一组邮件的预测误差最大,并着手优化,思考怎样能改进分类器。误差分析并不总能帮助我们判断应该采取怎样的行动。有时我们需要尝试不同的模型,然后进行比较,在模型比较时,用数值来判断哪一个模型更好更有效,通常我们是看交叉验证集的误差。

   因此,当我们在构造学习算法的时候,去尝试很多新的想法,实现出很多版本的学习算法。每次实践新想法的时候,都要手动地检测这些例子,看看表现是差还是好,但是,这样的话,很难让我们做出决定,比如说是否使用词干提取,是否区分大小写等等。所以我们又要通过一个量化的数值评估,可以通过这个数字,看看误差是变大还是变小了。它可以直观地告诉我们,我们的想法是提高了算法表现,还是让它变得更坏。所以我们要在交叉验证集上来实施误差分析,而不是在测试集上。


3.类偏斜的误差度量

   前面的课程里,有一件重要的事情需要我们注意,就是使用一个合适的误差度量值,会对我们的学习算法有微妙的影响,这就是偏斜类的问题。类偏斜情况表现为我们的训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。

   我们以预测癌症是否是恶性为例,在我们的训练集中,只有0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有0.5%。然而我们通过训练而得到的神经网络算法却有1%的误差。所以,误差的大小不能作为评判算法效果的依据。

   我们考虑一种标准的衡量方法:精确度和召回率。

   我们把预测的结果分为四种情况:

   

   正确肯定(TP):预测为真,实际为真;
   正确否定(TN):预测为假,实际为假;
   错误肯定(FP):预测为真,实际为假;
   错误否定(FN):预测为假,实际为真;

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

   

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

   


4.精确度和召回率间的权衡

   之前我们介绍了查准率和召回率,作为遇到偏斜类问题的评估度量值。在很多应用中,我们希望查准率和召回率之间保持相对平衡。在这里,我们讨论该怎么做,同时也展示查准率和召回率作为算法评估度量值的更有效的方式。

   还是以上面预测肿瘤性质的问题为例。假设我们的算法输出的结果在 0-1 之间,我们使用阀值 0.5 来预测真和假。

   

   如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),得到更高的查准率,我们可以使用比 0.5 更大的阀值,如 0.7,0.9。这样可以减少错误预测病人为恶性肿瘤的情况,但是会增加未能成功预测肿瘤为恶性的情况;如果我们希望提高召回率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比 0.5 更小的阀值,如 0.3。

   我们将召回率和查准率的关系绘制成曲线,如下图:

   

   又有一个问题,阈值该如何确定?

   我们引入标准的F值。计算公式为:

   

   F值是对精确度和召回率的权衡,在极端的情况,也能很好的使用:

   


5.机器学习的数据

   之前我们讨论了评价指标,接下来要讨论一下机器学习系统设计的另一个重要方面,即用来训练的数据有多少。得到大量的数据并在某种类型的学习算法中进行训练,可以说是一种非常有效的获得具有良好性能的学习算法的方法。

   事实上,如果我们任意选择一个算法,可能是选择了一个不好的算法,但是如果我们给这个不好的算法更多的数据,它很有可能会其他算法要好。这个结果表明,“取得成功的人不是拥有最好算法的人,而是拥有最多数据的人"。

   这个说法什么时候是真,什么时候是假?如果我们有一个学习算法,并且如果这种说法是真的,那么得到大量的数据是保证我们具有一个高性能算法的最佳方式, 而不是去争辩应该用什么样的算法。

   如果一个学习算法有很多的参数,例如逻辑回归、线性回归有很多的特征,神经网络有很多隐藏的单元,那么它的训练集误差将会很小,但是容易陷入过拟合;如果再使用很大的训练数据,那么它将很难过拟合,它的训练集误差和测试集误差将会近似相等,并且很小。由这个例子,我们可以明白,庞大的数据对于机器学习来说,是非常重要的。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值