Coursera ML笔记 -----week9-1 异常检测
来源:互联网 发布:人造奶油危害 知乎 编辑:程序博客网 时间:2024/06/05 04:49
欢迎点击作者原文地址
Anormaly Detction/Density Estimation
- 如何建立模型来计算
p\(x\) ? - 考虑如何评估并且调整建立的模型和阈值
ϵ 的选取? - 异常检测 v.s. 监督学习
- 特征值的选取
- 拓展:基于多变量高斯分布的异常检测
- 多变量的高斯分布
- 基于多变量高斯分布的异常检测
- 单变量/多变量高斯分布两者异常检测有什么关系
- 如何选择合适的高斯分布
无监督学习的另外一个应用是异常检测,主要是验证新的样本数据是否是异常数据,常用于工业质量检验等。
我有一批全部正常(或大部分正常)的数据
主要的手段是:
(基于正态分布的)异常检测(密度估计)
密度估计就是建立起一个模型来计算样本正常的概率
这个过程中,有这么几个问题是需要去考虑的:
1. 我们怎么建立模型来计算
2. 如何评估/调整建立的这个模型
3. 我们的阈值
4. 我们的特征如何选取
首先,我们考虑
如何建立模型来计算p(x) ?
- 从数据的特征分量中选择我们认为有助于识别异常数据的特征分量
xj ,构建训练集 - 假设训练集数据的每个特征分量都是服从正态分布的,也就是
xj∼N(μj,σ2j) 。 - 计算每一个特征分量对应的
μj,σ2j μj=1m∑i=1mx(i)j 其中,σ2j=1m∑i=1m(x(i)j−μj)2 m 很大时,σ2j 的估计用总体方差1m 和样本方差1m−1 的差异并不明显。 - 对于新的样本,计算
p(x) p(x)=p(x1;μ1,σ1)p(x2;μ2,σ2)...p(xn;μn,σn)=Πnj=1p(xj;μj,σj)=Πnj=112πσ√e−(xj−μj)22σ2 \spce(1) - 判断
p(x)<ϵ
就理论而言,(1)式如果要成立,那么所有的特征分量
(这里的概率密度函数用的是正态分布,那么可以说我们学习到的是基于正态分布的密度估计。那如果我们假设
这里的另外一个问题是需要做一个区分:在数学中,我们将分布函数
接下来
考虑如何评估并且调整建立的模型和阈值ϵ 的选取?
我们在supervise learning中了解到,对于一个模型,最好是能够一个数值方式来对模型进行评估。可以是分类的准确率,也可以是评价矩阵,也可以是精准率/召回率,或者F1-score。并且可以把数据集分成训练/验证/测试集。
对于验证集和测试集,我们假设其都是带有label的数据,正常数据
1. 在训练集
2. 对验证集的数据
3. 数值评估。显然验证集的
阈值
参考以前选
异常检测 v.s. 监督学习
在上面的模型评估中,我们使用了一些带有label的数据,并且我们的过程和前面在监督学习中涉及的有一些类似。所以会产生的一个疑问就是:我们为什么要用Anormaly Detction,而不用supervise learning ?或者转换一下:我们在什么情况下考虑使用Anormaly Detction,什么情况下使用supervise learning
我们主要从两个方面去判断使用的方法:1.看数据中阳性数据
和阴性数据
当阳性数据之间的差异比较大(数据量不大),甚至到彼此之间没有任何的共同点,下一次出现的异常数据可能根本就没有在现有的阳性数据里面出现,算法并不能从已有的阳性数据中学习到足够的经验,那么我们可以考虑使用异常检测的方法。如果阳性数据比较相似,从现有的阳性数据出发可以预测到下一次的阳性数据(阳性数据之间存在着某种关系),那么就可以使用监督学习的方法。
当然,这里面更重要的其实还是阳性数据的数量。例如:我们前面学习过的垃圾邮件分类。垃圾邮件之间的差异性确实会比较大,但是因为垃圾邮件的数量特别多,所以我们认为这是一个监督学习的问题,而不是一个异常检测的问题。
特征值的选取
我们在前面已经学习过了如何建立并且评估一个异常检测的模型,但是其中有一点我们似乎忽略掉了。我们只提到了选择合适的特征分量来构建训练集,但是我们并没有说如何去选择。那么剩下的工作就是,我们怎么去选择特征分量。
这个工作主要是从两个方面去着手:
1. 非高斯分布的特征值处理
在前面我们假设各个特征分量是服从正态分布的,那如果它们不是服从正态分布的话,我们的算法还能够继续使用么?答案是肯定的,因为我们可以将非高斯分布的特征值转换成为服从正态分布的新特征。常用的手段有:
2. 如何增加合适的新特征
这部分的工作主要是在于error analysis。
我们可能会遇到这么一种情况,我们知道一个样本是异常的,但是按照我们现有的模型去计算其
至此,我们的异常检测的基本过程就已经学习完成!
拓展:基于多变量高斯分布的异常检测
前面已经学习过了基于单变量正态分布的异常检测,现在来了解基于多变量高斯分布的异常检测。
我们需要了解这么几个问题:
1. 什么是多变量的高斯分布
2. 我们怎么将多变量高斯分布运用到异常检测中?
3. 单变量/多变量高斯分布两者有什么关系?
4. 做异常检测时,应该如何进行选择
多变量的高斯分布
对于一个数据
其中
对于矩阵
基于多变量高斯分布的异常检测
我们前面做error analysis的时候提到过这么一种情况:对异常数据
以下是检测过程:
1. 对模型
2. 对新数据
3. 判断
单变量/多变量高斯分布两者异常检测有什么关系
单变量是多变量的一种特殊形式,是
如何选择合适的高斯分布
在使用多变量的时候,如果出现了
1. m是否大于n
2.
- Coursera ML笔记 -----week9-1 异常检测
- Coursera ML笔记 -----week9-2 推荐系统
- Coursera ML笔记1-2
- Coursera机器学习 Week9 笔记
- Anomaly Detection-异常检测算法(Coursera-Ng-ML课程)
- Andrew Ng机器学习笔记week9 异常检测、推荐系统
- Coursera ML笔记 -----week8-1 K-means
- Coursera ML笔记3
- Coursera ML笔记4
- Coursera ML笔记5
- Coursera ML笔记6
- Coursera ML笔记
- Coursera ML笔记 -----week3 Regulariztion
- [机器学习] Coursera ML笔记
- [机器学习] Coursera ML笔记
- 斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection
- Octave-Plotting Data---Coursera ML笔记
- Octave Tutorial-Vectorization ----Coursera ML笔记
- 逻辑卷中磁盘预警后的处理
- 7、关于requests项目
- Keepalived+LVS配置高可用服务器
- pxe+kickstart无人值守自动安装CentOS6.5
- 在Jquery里格式化Date日期时间数据
- Coursera ML笔记 -----week9-1 异常检测
- 记录一次解决Android显示本地html的问题,赞
- Android中,JNI技术的相关基础知识
- 唯一身份访问者(独立访客)与访问次数的区别
- 我的MBD学习之路
- 修改Matlab启动工作默认文件夹
- Nginx负载均衡配合keepalived服务案例实战
- 对基于模型的嵌入式开发项目的工作…
- 模型化开发过程中要基本掌握的Matl…