在给定的数据集,我们假设数据是正常的 ,现在需要知道新给的数据Xtest中不属于该组数据的几率p(X)。

异常检测主要用来识别欺骗,例如通过之前的数据来识别新一次的数据是否存在异常,比如根据一个用户以前的使用习惯(数据)来判断这次使用的用户是不是以前的用户。或者根据之前CPU正常运行时候的的用量数据来判断当前状态下的CPU是否正常工作。

这里我们通过密度估计来进行判断:if   P(X) >ε时候,为normal(正常)<ε 的时候为异常 。

我们用x(i)来表示用户的第i个特征,模型P(x)= 我们其属于一组数据的可能性

在这里我们会用到高斯分布(二项分布),在高斯分布中,我们 对于方差通常只除以m来得到μ和σ而不是统计学中的m-1

异常检测算法:

对于给定的数据集x(1)...x(m),我们要针对每一个特征计算出μ和σ的估计值。

一旦我们获得了平均值和方差的估计值,给定的一个新的训练实例,根据模型计算我们就可以得出p(x)

我们选择一个 ε,将p(x)=ε作为我们的判定边界,当p(x)> ε的时候预测数据为正常数据,否则为异常数据。

异常检测算是一个非监督学习算法,这意味着我们无法根据结果变量Y 的值来告诉我们是否异常,我们可以从带标记的数据着手,选取一部分正常的数据用来训练和构建,然后用剩下的正常样本和测试样本混合构成交叉检验集和测试集。

在这里我们举一个栗子,用来更详细的描述异常检测算法。

例如:我们有 10000 台正常引擎的数据,有 20 台异常引擎的数据。 我们这样分配数
据:
6000 台正常引擎的数据作为训练集
2000 台正常引擎和 10 台异常引擎的数据作为交叉检验集
2000 台正常引擎和 10 台异常引擎的数据作为测试集
具体的评价方法如下:
1. 根据测试集数据,我们估计特征的平均值和方差并构建 p(x)函数
2. 对交叉检验集,我们尝试使用不同的 ε 值作为阀值,并预测数据是否异常,根据 F1
值或者查准率与查全率的比例来选择 ε
3. 选出 ε 后,针对测试集进行预测,计算异常检验系统的 F1 值, 或者查准率与查全
率之比

之前我们构建的异常检测系统也使用了带标记的数据,与监督学习有些相似,下面的对
比有助于选择采用监督学习还是异常检测:
两者比较:

【机器学习】异常检测算法(I)的更多相关文章

  1. 机器学习:异常检测算法Seasonal Hybrid ESD及R语言实现

    Twritters的异常检测算法(Anomaly Detection)做的比较好,Seasonal Hybrid ESD算法是先用STL把序列分解,考察残差项.假定这一项符合正态分布,然后就可以用Ge ...

  2. kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归

    使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...

  3. 异常检测算法--Isolation Forest

    南大周志华老师在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结. iTree 提到森林 ...

  4. 异常检测算法:Isolation Forest

    iForest (Isolation Forest)是由Liu et al. [1] 提出来的基于二叉树的ensemble异常检测算法,具有效果好.训练快(线性复杂度)等特点. 1. 前言 iFore ...

  5. 如何开发一个异常检测系统:使用什么特征变量(features)来构建异常检测算法

    如何构建与选择异常检测算法中的features 如果我的feature像图1所示的那样的正态分布图的话,我们可以很高兴地将它送入异常检测系统中去构建算法. 如果我的feature像图2那样不是正态分布 ...

  6. 异常检测(Anomaly detection): 异常检测算法(应用高斯分布)

    估计P(x)的分布--密度估计 我们有m个样本,每个样本有n个特征值,每个特征都分别服从不同的高斯分布,上图中的公式是在假设每个特征都独立的情况下,实际无论每个特征是否独立,这个公式的效果都不错.连乘 ...

  7. 异常检测算法的Octave仿真

    在基于高斯分布的异常检测算法一文中,详细给出了异常检测算法的原理及其公式,本文为该算法的Octave仿真.实例为,根据训练样例(一组网络服务器)的吞吐量(Throughput)和延迟时间(Latenc ...

  8. 异常检测算法Robust Random Cut Forest(RRCF)关键定理引理证明

    摘要:RRCF是亚马逊发表的一篇异常检测算法,是对周志华孤立森林的改进.但是相比孤立森林,具有更为扎实的理论基础.文章的理论论证相对较为晦涩,且没给出详细的证明过程.本文不对该算法进行详尽的描述,仅对 ...

  9. 时间序列异常检测算法S-H-ESD

    1. 基于统计的异常检测 Grubbs' Test Grubbs' Test为一种假设检验的方法,常被用来检验服从正太分布的单变量数据集(univariate data set)\(Y\) 中的单个异 ...

随机推荐

  1. list<T>升序、降序

    List<test> list = new List<test> (); var result = list.OrderByDescending(p => p.we).T ...

  2. MFC 读写文件

    写文件: #include<fstream> CStdioFile file; file.Open(_T("parametertable.txt"), CFile::m ...

  3. 如何设置.net控件SplitContainer平均分配

    设置SplitterDistance为宽或者高的一半

  4. zookeeper第一篇

    它是一个为分布式应用提供一致性服务的软件, 提供的功能包括:配置维护.域名服务.分布式同步.组服务等.

  5. centos7下部署mariadb+galera数据库高可用集群

    [root@node1 ~]# cat /etc/yum.repos.d/mariadb.repo # MariaDB 10.1 CentOS repository list - created 20 ...

  6. Linux 日常用法

    1.ubuntu 中安装vim http://jingyan.baidu.com/article/046a7b3efd165bf9c27fa915.html 2.linux 系统中安装SSH http ...

  7. Collections与Collection

    Collection是集合体系的最顶层,包含了集合体系的共性 Collections是一个工具类,方法都是用用Collection Collections方法: //static int binary ...

  8. Django最简单的从请求过程

    1,url匹配,匹配路由,由理由分发器(urls.py)查找用户请求的url对应关系 1,找到业务函数就调用(views.py中的方法)   2,找不到就报404错误,     3,将数据返回给浏览器 ...

  9. 基于SDL2实现俄罗斯方块

    俄罗斯方块有多种旋转规则,我这里采用的是SRS.如果要改变旋转规则的话也很方便. SRS: 内容后续补充.. 代码:https://github.com/CknightX/sdl_Tetris 素材来 ...

  10. angularJS+KindEditor无法获取或清空textarea的值

    在html页面中初始化KindEditor: <script type="text/javascript"> var editor; KindEditor.ready( ...