zoukankan      html  css  js  c++  java
  • 异常检测(Anomaly Detection)

    十五、异常检测(Anomaly Detection) 15.1 问题的动机

    参考文档: 15 - 1 - Problem Motivation (8 min).mkv

    在接下来的一系列视频中,我将向大家介绍异常检测(Anomaly detection)问题。这是机 器学习算法的一个常见应用。这种算法的一个有趣之处在于:它虽然主要用于非监督学习问 题,但从某些角度看,它又类似于一些监督学习问题。

    什么是异常检测呢?为了解释这个概念,让我举一个例子吧: 假想你是一个飞机引擎制造商,当你生产的飞机引擎从生产线上流出时,你需要进行

    QA (质量控制测试),而作为这个测试的一部分,你测量了飞机引擎的一些特征变量,比如 引擎运转时产生的热量,或者引擎的振动等等。

    这样一来,你就有了一个数据集,从 x(1)到 x(m),如果你生产了 m 个引擎的话,你将这 些数据绘制成图表,看起来就是这个样子:

    这里的每个点、每个叉,都是你的无标签数据。这样,异常检测问题可以定义如下:我 们假设后来有一天,你有一个新的飞机引擎从生产线上流出,而你的新飞机引擎有特征变量

    xtest。所谓的异常检测问题就是:我们希望知道这个新的飞机引擎是否有某种异常,或者说,

    我们希望判断这个引擎是否需要进一步测试。因为,如果它看起来像一个正常的引擎,那么 我们可以直接将它运送到客户那里,而不需要进一步的测试。

    给定数据集 x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据 xtest 是不 是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测

    试数据的位置告诉我们其属于一组数据的可能性 p(x)。

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

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

    欺诈检测:

    X(i) = 用户的第 i 个活动特征

    模型 p(x) =我们其属于一组数据的可能性 通过 p(x)<ε 检测非正常用户。

    异常检测主要用来识别欺骗。例如在线采集而来的有关用户的数据,一个特征向量中可 能会包含如:用户多久登录一次,访问过的页面,在论坛发布的帖子数量,甚至是打字速度 等。尝试根据这些特征构建一个模型,可以用这个模型来识别那些不符合该模式的用户。

    再一个例子是检测一个数据中心,特征可能包含:内存使用情况,被访问的磁盘数量, CPU 的负载,网络的通信量等。根据这些特征可以构建一个模型,用来判断某些计算机是 不是有可能出错了。

     

    anomaly detection(异常检测)笔记
     机器学习 学习     2017-08-15 13:32:45     41     0     0

    高斯分布(正态分布)

    1. 求一组数据服从怎样的高斯分布,高斯分布实际上是概率密度的描述


    其中u与sigma是求得极大似然估计

    利用高斯分布实现异常检测

    三步

    1. 选择样本
    2. 计算μ和sigma
    3. 用算出的μ和sigma计算新样本的概率。

    为什么概率要用乘积

    例如 当两个2d分布的乘积是这样的 

    实际使用和评价异常检测算法

    实数评价算法极其重要。 
    如果使用有标签的数据,例如引擎检测 
    我们先取一部分没有问题的数据作为训练集拟合数据 
    再取一部分没问题的数据和少量有问题的数据作为cv数据集 
    同样取一份测试集 
    例子如下图 

    因为ylabels是非常偏斜的异常的引擎只是很小的比例,有监督学习总是预测y=0,这样正确率会很高但是这样是不对的。

    所以在这里我们也采用precision/recall和f1-score来评估 
    其中判断的阈值可以通过交叉验证集尝试多次。 

    Anomaly Detection vs. Supervised Learning

    异常检测,反例大量,正例很少。 
    监督学习,正反例的数量都很大。 
    如果有足够多的数据足够拟合监督学习,并且未来要预测的样本与我用来拟合的样本很相似。此时可能会选择监督学习。

    理解:当我有足够的数据拟合相对于较少的数据的时候,使用监督学习。 
    到底是不是,看经验和脑子。

    一些常见应用的选择

    选择特征

    如果一个分布图稍微扭曲一点 
    对X做一些处理可能会让他看起来更像高斯分布 

    如果一个异常样本最后的概率很大,这时我们应该观察这个样本,试图添加新的特征可以区分这个样本。

    多元高斯分布

    不再一个特征一个特征算,直接用x算u是n阶向量,sigma是n*n的矩阵,就可以通过改变矩阵实现对高斯分布的一些变换。 

    实际使用异常检测与多元高斯分布

    高斯公式 

    1.估计参数μ、sigma 

    2.给出新的x,计算px 

    如果px很小我们会把它当初异常

    原始模型属于多元高斯模型的一个特例 
    选择 

    ps:如果最后sigma是奇异矩阵可能是有多余特征或是m

  • 相关阅读:
    WCF 4.0中的动态发现服务WSDiscovery
    Windows Server 2008 R2 Server Core
    Open Source Web Design
    Windows Identity Foundation(WIF)正式发布
    是开始学习IronPython 的时候了
    IronPython 承载和消费WCF服务
    微博客程序 Yonkly
    如何启用匿名访问SQL Server Reporting Service 2008
    ASP.NET MVC 2 RC 发布
    SharePoint 2010 VHD下载
  • 原文地址:https://www.cnblogs.com/zafu/p/8601159.html
Copyright © 2011-2022 走看看