Anomaly Detection

Problem motivation:

首先描写叙述异常检測的样例:飞机发动机异常检測

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

直观上发现,假设新的发动机在中间,我们非常大可能觉得是OK的。假设偏离非常大。我们就须要很多其它检測确定是否为正常发动机。

以下进行数学形式上的描写叙述,通过概率密度进行预计。例如以下图:


对正常的数据进行建模。求Xtest的概率。当处于中心位置时概率比較大。而且大于设定的阈值,我们判定为OK状态,在远离中心状态。概率比較小,小于设定阈值我们判定为anomaly点。

Anomaly detection常见应用:


NG课上提到了三个应用方向,第一个是最開始举例的飞机引擎。然后是欺诈发现,这个在信用卡和购物站点上得到广泛应用。最后一个是产业界应用,我们须要监视一个计算机系统。我们通过正常执行系统的 内存使用、CUP load等建模。当系统某个值不在正常范围就可以能是计算机系统中有电脑出现异常状态。

习题:当我们系统建模后,导致把异常状态推断为正常状态,这时须要减少阈值避免误判。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

GaussianDistribution:

复习高斯分布一些内容,比較熟悉能够直接跳过。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图型和概率分布函数。



上图均值方差表如今高斯分布图型上的差异。

Parameter estimation:

简单的说就是预计均值和方差。下图中写出的公式事实上能够通过极大似然预计进行数学上的求解证明。这里就不具体说(翻开数理统计课本能够找到)。求方差公式中能够选择m或者m-1这都无所谓,由于往往数据集非常大。这样最后计算结果没什么差别,在机器学习中通常选择m而在统计学中往往选择m-1。

选择m还是m-1在理论上有非常大差别,可是实际应用上没什么太大差别。


习题:高斯分布密度函数求解

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Algorithm

密度函数预计算法:


求P(X)就是密度预计过程。

连乘公式须要每个条件独立,可是假设不是条件独立也能这么计算得到正确结果。

习题:对均值方差预计公式。

J下标表示第J个特征


Anomaly detectionalgorithm


1.     选择你觉得可以区分是否为anomalous 的样例特征。

2.     拟合參数即均值和方差。

3.     计算给定数据集上的联合概率密度函数。假设小于设定阈值则判定为异常数据。

进行实例描写叙述这个算法:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

依照上面所写三步流程即可计算:看左下角图。假设我们计算联合概率值较大图形上反映为高度较高,则判定为normal,假设计算得到高度较低,判定为异常。

到这里为止还仅仅是描写叙述了算法运行流程。我们并没有深入描写叙述每一步细节。

Developing andEvaluating an Anomaly Detection System

我们会发现能用一个数值标准去评价一个学习算法是很重要的,我们能够尝试增加某个feature进行评估,然后去掉该feature再次进行评估。这样得到feature对学习算法的影响。

到如今为止异常检測我们仅仅利用数据并没有数据类标签,是一种无监督学习。

如果我们已经有类标签标记的数据。这样使用异常检測算法就能非常好的进行评估!这是非常重要的一种思维转换。

继续上面提到的飞机发动机样例。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

我们推荐使用蓝色标记的划分,可是红色标记的划分也有人在这么操作。

算法效果的评估:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

习题:非常明显在test集上的accuracy不是好的评估标准。由于我们这里是倾斜类!须要用到Precision 和recall F_score来进行评估。

阈值的确定能够通过evaluation metric取值最大确定。当你在设计一个异常检測系统时,关键须要考虑选择何种feature、设定多大的阈值。


Anomaly DetectionVS Supervised Learning

讲到这里我们肯定都有困惑。当我们有数据类标签,为什么我们不直接使用监督性学习而使用Anomaly detection,接下来就对两者进行对照。

首先Anomaly detection 在数据集上特点是:非常少量的positive 数据,非常大量的negative数据,这样我们使用大量的negative数据可以好的拟合求得联合高斯概率密度函数。而supervised learning中 positive negative数据量都大。

其次我们有不同类型的异常数据,可是异常数据量非常小,不论什么算法都非常难在小的Anomaly数据集上学习得到Anomaly是什么样子。

上面两者对照是你应用Anomaly detection 还是supervise learning 的一些重要区分标准。

Spam是常常提到的一种学习系统。尽管我们有非常多类型的Spam。可是每种类型的Spam我们都有比較多的数据。所以Spam问题我们应用的是supervise learning。

事实上这两种状态并非全然切割的。举例说假设我们在交易时有非常多为Fraud的,则我们学习问题由Anomaly detection 转变为supervise learning。


习题:直观对两种情况的推断


ChoosingWhat Features to Use

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

前面说的方法都是假定数据满足高斯分布,也提到了假设分布不是高斯分布,上述方法也是能够使用,仅仅是假设我们对分布进行转换使得近似于高斯分布,那么会得到更好的效果。

上图就举例用log等函数进行转换。实现层面octave以下尝试转换就能够得到非常好近似高斯。

怎样选择feature:

思想类似于supervise learning中的error analysis ,当左边图进行学习时我们得到了错误结果,这时我们须要增加新的特征X2使得那个点与正常数据得到区分!如上图从左到右所看到的意。

还是回到前面提到的监视数据中心电脑,我们为了分析究竟是哪个特征引起Anomaly,通过构造新的feature来进行推断。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

习题:Anomaly detection 算法不能非常好区分开normal和Anomaly时。我们通常须要添加特征来使得它们得以区分。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVydXp1bg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

斯坦福NG机器学习课程:Anomaly Detection笔记的更多相关文章

  1. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  2. Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)

    title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...

  3. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

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

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  5. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  6. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  7. Andrew Ng机器学习课程笔记(二)之逻辑回归

    Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...

  8. Andrew Ng机器学习课程笔记(一)之线性回归

    Andrew Ng机器学习课程笔记(一)之线性回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 ...

  9. Andrew Ng机器学习课程13

    Andrew Ng机器学习课程13 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要从一般的角度介绍EM算法及其思想,并推导了EM算法的收敛性.最后 ...

随机推荐

  1. 如何自定义MVC控件?

    今天公司要写学习总结,想着想着还是先写一篇关于MVC内部什么东东的博客整理整理再发表吧,一举两得. 之前写过了路由.过滤器等.今天就研究一下怎么自定义MVC控件吧. 本人技术小菜,不喜勿喷.....( ...

  2. Code repo

    http://www.oschina.net/news/15806/20-opensource-host-websites/

  3. gem update --system 302 错误 解决方案(转)

    具体过程如下: 1.InstantRails-2.0安装后,在配置环境变量path中配置ruby/bin目录(如果系统中有多个RUBY,执行命令行的时候系统认的就是path中的) 2.进入DOS命令行 ...

  4. Yii2权威指南中文版及众包翻译平台

    Yii2在今年4月份公布了beta版本号,预计下半年会推出正式版本号(可用于生产环境). Yii2使用了新的PHP语法特性(PHP5.4+)并集成了大量新的编程最佳实践, 如命名空间.响应式界面组件库 ...

  5. spring boot 中文文档

    https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/VII.%20Spring%20Boot%20CLI/index. ...

  6. 《think in python》学习-8

    字符串 字符串是一个序列,可以用方括号操作符来访问字符串中的单独字符 fruit = 'banana' letter = fruit[1] 方括号中的表达式称为下标 下标从0 开始 任何表达式,包括变 ...

  7. Html遮罩效果

    遮罩效果 <!DOCTYPE html> <html> <head> <title>DIV CSS遮罩层</title> <scrip ...

  8. Python同步数据库的数据到Neo4J

    写了主要是步骤,如果疑问,请咨询QQ:5988628 Python版本采用2.7.X,默认的2.6.X后期会有问题,建议,一开始就升级Python.然后再安装pip. 访问数据库 sqlalchemy ...

  9. centos yum 完全卸载依赖

    centos yum 完全卸载依赖    you install a package with yum install, say pdftk, it will pull in a lot of dep ...

  10. svn检出maven工程到eclipse里面,部署到tomcat的步骤

    1. 首先import project from svn 2.检出项目后,如果是多模块的maven项目,在子模块右击,import as project 3.右击项目,properties->d ...