zoukankan      html  css  js  c++  java
  • Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    版权声明:本文为博主原创文章,转载请指明转载地址

    http://www.cnblogs.com/fydeblog/p/7392408.html

    前言

    这篇博客主要记录了Andrew Ng课程第6章机器学习系统的设计,Andrew用他的丰富经验讲述了如何有效、耗时少地实现一个机器学习系统,内容包括误差分析,误差度量,查准率和查全率等等

    I 首先要做什么

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

    为了构建这个分类器算法,我们可以做很多事,例如:

    1. 收集更多的数据,让我们有更多的垃圾邮件和非垃圾邮件的样本
    2. 基于邮件的路由信息开发一系列复杂的特征
    3. 基于邮件的正文信息开发一系列复杂的特征,包括考虑截词的处理
    4. 为探测刻意的拼写错误( 把watch 写成w4tch) 开发复杂的算法 

    上面的选项,我们是要每一项去试吗?当然不,这样太花费时间和精力了。Andrew在下面几节向我们介绍了一个系统性的方法,来帮助我们选择一堆方法中最合适的那一个。

    II 误差分析

    最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量;而是构建一个简单的算法,这样你可以很快地实现它。

    一旦做完,你可以画出学习曲线,通过画出学习曲线(第5章提过怎么画),以及检验误差,来找出你的算法是否有高偏差和高方差的问题,或者别的问题,在这样分析之后,再来决定用更多的数据训练,或者加入更多的特征变量是否有用。

    原因是刚入机器学习,你并不能提前知道你是否需要复杂的特征变量,或者你是否需要更多的数据,还是别的什么。提前知道你应该做什么,是非常难的,因为你缺少证据,缺少学习曲线。我们必须用证据来领导我们的决策,怎样分配自己的时间来优化算法,而不是仅仅凭直觉,凭直觉得出的东西一般总是错误的。

    除了画学习曲线外,还有就是进行误差分析,误差分析的意思是说:当我们在构造垃圾邮件分类器时,看一看交叉验证数据集,然后看一看哪些邮件被算法错误地分类。因此,通过这些被算法错误分类的垃圾邮件与非垃圾邮件,你可以发现某些系统性的规律:什么类型的邮件总是被错误分类。经常地这样做之后,这个过程能启发你构造新的特征变量,或者告诉你:现在这个系统的短处,然后启发你如何去提高它。

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

    III 类偏斜的误差度量

    上面提到了误差分析,以及设定误差度量值的重要性,用一个合适的误差度量值,这有时会对于你的学习算法造成非常微妙的影响,这件重要的事情就是偏斜类(skewed classes)的问题。类偏斜情况表现为我们的训练集中有非常多的同一种类的实例,只有很少或没有其他类的实例。

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

    两种度量:查准率(Precision)和查全率(Recall)

    查准率(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。

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

    继续沿用刚才预测肿瘤性质的例子。假使,我们的算法输出的结果在 0-1 之间,我们使用阀值0.5来预测真和假。

    如果我们希望只在非常确信的情况下预测为真(肿瘤为恶性),即我们希望更高的查准率,我们可以使用比0.5 更大的阀值,如0.7,0.9。这样做我们会减少错误预测病人为恶性肿瘤的情况,同时却会增加未能成功预测肿瘤为恶性的情况。

    如果我们希望提高查全率,尽可能地让所有有可能是恶性肿瘤的病人都得到进一步地检查、诊断,我们可以使用比0.5 更小的阀值,如0.3

    一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。

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

    一个帮助我们选阈值的方法是计算F1值

    其中P是查准率,R是查全率

    V 机器学习的数据

    这一讲主要讲数据的数目对学习算法的影响

    如果训练集比参数的数量还大,甚至是更多,那么这些算法就不太可能会过度拟合。也就是说训练误差有希望接近测试误差。最终可以得到一个低误差和低方差的学习算法。无论你之前是选择哪一种算法,数据量很大时,都趋近相同

    "取得成功的人不是拥有最好算法的人,而是拥有最多数据的人"是有道理的

     

     

  • 相关阅读:
    如何通过命令行窗口查看sqlite数据库文件
    eclipse自动补全的设置
    文本装饰
    注释和特殊符号
    文本装饰
    网页背景
    通过ArcGIS Server admin 查看和删除已注册的 Web Adaptor
    通过 ArcGIS Server Manager 查看已安装的 Web Adaptor
    通过 ArcGIS Server Manager 验证 DataStore
    Windows上安装ArcGIS Enterprise——以 Windows Server 2012 R2上安装 ArcGIS 10.8为例
  • 原文地址:https://www.cnblogs.com/fydeblog/p/7392408.html
Copyright © 2011-2022 走看看