zoukankan      html  css  js  c++  java
  • 吴恩达老师机器学习课程学习--课时十五

    课时十五      异常检测

    1、异常检测的描述

    异常检测是机器学习算法的一个应用,举个应用例子,飞机引擎质量检测,假如你是一个飞机引擎制造商,为了进行质量控制测试,你需要测量飞机引擎的一些特征变量,比如引擎转动时产生的热量,或者引擎的震动等等。这样你就有了一个数据集,把这些数据集绘制成图表,

    在构建一个异常检测算法时,我们的训练集数据是无标签的,但是我们假设都是正常的数据集,但是如果有小部分异常数据集也是没关系的,通过训练集构建出一个模型,然后利用这个模型可以检测新的数据是不是异常的。

    上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。

    这种方法称为密度估计,表达如下:

     

    2、高斯分布和算法

    通常我们认为变量x符合高斯分布,则其概论密度函数为:

    在利用高斯分布构建异常检测算法时,我们利用测试集来预测总体的,方法如下:

    利用高斯分布开发异常检测算法:

    对于给定的数据集我们要针对每一个特征计算的估计值。

    一旦我们获得了平均值和方差的估计值,给定新的一个训练实例,根据模型计算

     

    作为判定边界。

    3、开发一个异常检测系统

    首先我们要从数据开始,我们从数据集中选取一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据的混合数据构成交叉检验集合测试集。

    例如:我们有10000台正常引擎的数据,有20台异常引擎的数据。 我们这样分配数据:

    6000台正常引擎的数据作为训练集

    2000台正常引擎和10台异常引擎的数据作为交叉检验集

    2000台正常引擎和10台异常引擎的数据作为测试集

    构建步骤:

    1.根据测试集,我们估计特征的平均值和方差,并构建函数。

    2.对交叉验证集,我们尝试采用不同的值作为阀值,并预测数据是否异常,根据F1值或者查准率与查全率的比例来选择

    3.选出后,针对测试集进行预测,计算异常检验系统的F1值,或者查准率与查全率之比

    4、异常检测和监督学习的差别

     

    异常检测中选择特征:在异常检测算法中,我们选择的特征十分重要,因为异常检测函数是高斯分布函数,如果数据集的分布不是高斯分布,虽然可以用异常检测算法,但是最好还是把数据转换成高斯分布,通过一些数学转换,比如对数函数,次方函数等等。通过数学转换使之符合高斯分布。

    另外一个做法就是误差分析,一个常见的问题是一些异常的数据可能也会有较高的值,因而被算法认为是正常的。这种情况下误差分析能够帮助我们,我们可以分析那些被算法错误预测为正常的数据,观察能否找出一些问题。我们可能能从问题中发现我们需要增加一些新的特征,增加这些新特征后获得的新算法能够帮助我们更好地进行异常检测。

  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/zhangliqiangvictory/p/13404493.html
Copyright © 2011-2022 走看看