斯坦福NG机器学习课程:Anomaly Detection笔记
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笔记的更多相关文章
- Andrew Ng机器学习课程笔记(五)之应用机器学习的建议
Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...
- Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归)
title: Andrew Ng机器学习课程笔记--week1(机器学习介绍及线性回归) tags: 机器学习, 学习笔记 grammar_cjkRuby: true --- 之前看过一遍,但是总是模 ...
- Andrew Ng机器学习课程笔记--汇总
笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...
- Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计
Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...
- Andrew Ng机器学习课程笔记(四)之神经网络
Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...
- Andrew Ng机器学习课程笔记(三)之正则化
Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...
- Andrew Ng机器学习课程笔记(二)之逻辑回归
Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...
- Andrew Ng机器学习课程笔记(一)之线性回归
Andrew Ng机器学习课程笔记(一)之线性回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364598.html 前言 ...
- Andrew Ng机器学习课程13
Andrew Ng机器学习课程13 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言:主要从一般的角度介绍EM算法及其思想,并推导了EM算法的收敛性.最后 ...
随机推荐
- WMI问题终极解决
1. 如果用JInterOp,先用这篇文章叙述的: http://m.oschina.net/blog/73163 2.另外开启这个: https://dev.c-ware.de/confluence ...
- 厂商自定义USB设备类概述
USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供 ...
- SQL连接方式(内连接,外连接,交叉连接)
1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来. 左连 ...
- TLV----Demo讲解
接触过网络协议的人对TLV一定或多或少的知道.作为一种自定义应用层标准. TLV使用十分广泛.他对数据封包有着很好的定义,简单实用. TLV即Type-Length-Value.即我们每个封装成TLV ...
- 新浪系统工程师笔试--shell
1. test01 test02 1 200 1 100 2 500 2 300 3 200 3 50 4 100 4 150 输出 200 100 100 500 300 ...
- sql的基本查询语句
--------------------------------------------基本常用查询-------------------------------------- 自己简单练习做了个表. ...
- skynet-源码分析1:目录下的文件整理
skynet是c和lua结合的一个开源游戏引擎,是云风所写,对我等屌丝来说,是很好的参考 先整理一下文件结构,然后再慢慢深入 主目录下有10个目录,105个文件, 具体包含的情况,我简单画了个图,明天 ...
- jQuery 遍历 - siblings() 方法
本文来自:http://www.w3school.com.cn/jquery/traversing_siblings.asp jQuery 遍历参考手册 实例 查找每个 p 元素的所有类名为 &quo ...
- linux下的DNS
Linux下设置DNS的位置主要是, 1网卡设置配置文件里面DNS服务器地址设置;2 hosts文件指定 3.系统默认DNS服务器地址设置/etc/resolv.conf文件修改 生效顺序是: 1 h ...
- ajax封装
/** * ITCAST WEB * Created by zhousg on 2016/5/24. */ /* * 1. 请求的类型 type get post * 2. 请求地址 url * 3. ...