Anomaly Detection

这里我要强调一下什么叫做异常,机器到底要看到什么就是Anormaly。其实是取决你提供给机器什么样的训练数据

应用

1.若你有一个classifier,你希望这个classifier具有:看到不知道的数据会标上这是未知物的能力,这算是异常侦测的其中一种,又叫做Open-set Recognition

2.训练资料已经被混杂了一些异常的资料

用classifier 的confidence score c 进行anomoly detection

分类器的输出是一个几率分布(distribution)若输出特别平均,那这张图片就是异常的图片
根据信心分数来进行异常检测不是唯一的方法,因为输出的是distribution,那么就可以计算交叉熵(entropy)。

交叉熵(entropy)越大就代表输出越平均,代表机器没有办法去肯定输出的图片是哪个类别,表示输出的信心分数是比较低。

辛普森家庭成员的分类器
我们可以发现,如果输入的是辛普森家庭的人物,分类器输出比较高信心分数。如果输入不是辛普森家庭的任务,分类器输出的信心分数是比较低。但是输入凉宫春日的图片,分类器输出柯阿三的信心分数为0.99。

若输入大量的训练资料(将之前的介绍辛普森家庭的那张投影片中的kaggle链接中的数据作为训练资料(有数千张辛普森家庭人物))输入至分类器中,输出的信息分数分布如图所示。

几乎所有的辛普家庭的人物输入分类器中,无论是否辨识有错都会给出一个较高的信心分数。但还是发现若辨识若有错误会得到较低的信心分数,如图所示的红色点就是辨识错误图片的信心分数的分布。

蓝色区域分布相较于红色区域集中在1.0,有很高的信心分数认为是辛普森家庭的人物。

若输入其它动画的人物图片(15000张图片),其分类器输出的信心分数如题所示,我们会发现有10分之一图片的信心分数比较高(不是辛普森家庭的人物,但给了比较高的分数),

多数的图片得到的信心分数比较低(辛普森家庭的人物和不是辛普森家庭的人物在分类器输出的信息分数是有所差别的)。

你能够在Dev Set衡量一个异常侦测系统的结果表现以后,你就可以拿来调整阀值(threshold),可以找出让最好的阀值(threshold)

我们知道异常侦测其实是一个二元分类(binary classification)的问题。在二元分类中我们都是用正确率来衡量一个系统的好坏,

但是在异常侦测中正确率并不是一个好的评估系统的指标。你可能会发现一个系统很可能有很高的正确率,但其实这个系统什么事都没有做。

为什么这样呢?因为在异常侦测的问题中正常的数据和异常的数据之间的比例是非常悬殊的

不同的方式来衡量异常检测系统的好坏

.Detected :认为是错的

左侧的图:(不正常的情况):在Anomaly里面,只有一个被识别出是异常.在Normal里面,有一个被识别为异常

Cost Table A:
异常的没被识别到扣1分
正常的被识别为异常扣100分
Cost Table B:
异常的没被识别到扣100分
正常的被识别为异常扣1分
不同的Cost表用在不同的情况,如医院检查癌症
用B好(没有癌症却被检查出癌症问题不大,但是有癌症却被告之没病问题很大)

 

可能遇到的问题

如果我们直接用一个分类器来侦测输入的资料是不是异常的,当然这并不是一种很弱的方法,但是有时候无法给你一个perfect的结果,我们用这个图来说明用classifier做异常侦测时有可能会遇到的问题。

假设现在做一个猫和狗的分类器,将属于的一类放在一边,属于狗的一类放在一边。若输入一笔资料即没有猫的特征也没有狗的特征(草泥马,马莱貘),机器不知道该放在哪一边,就可能放在这个boundary上,

得到的信息分数就比较低,你就知道这些资料是异常的。

你有可能会遇到这样的状况:有些资料会比猫更像猫(老虎),比狗还像狗(狼)。机器在判断猫和狗时是抓一些猫的特征跟狗的特征,也许老虎在猫的特征上会更强烈,狼在狗的特征上会更强烈。

对于机器来说虽然有些资料在训练时没有看过(异常),但是它有非常强的特征会给分类器很大的信心看到某一种类别。

在解决这个问题之前我想说辛普森家庭人物脸都是黄的,如果用侦测辛普森家庭人物的classifier进行侦测时,会不会看到黄脸的人信心分数会不会暴增呢?

所以将三玖的脸涂黄,结果侦测为是宅神,信心分数为0.82;若再将其头发涂黄,结果侦测为丽莎,信心分数为1.00。若将我的脸涂黄,结果侦测为丽莎,信心分数为0.88。

当然有些方法可以解这个问题,其中的一个解决方法是:假设我们可以收集到一些异常的资料,我们可以教机器看到正常资料时不要只学会分类这件事情,要学会一边做分类一边看到正常的资料信心分数就高,

看到异常的资料就要给出低的信心分数。

但是会遇到的问题是:很多时候不容易收集到异常的数据。有人就想出了一个神奇的解决方法就是:既然收集不到异常的资料,那我们就通过Generative Model来生成异常的资料。

这样你可能遇到的问题是:生成的资料太像正常的资料,那这样就不是我们所需要的。所以还要做一些特别的constraint,让生成的资料有点像正常的资料,但是又跟正常的资料又没有很像。

接下来就可以使用上面的方法来训练你的classifier。

接下来我们再讲第二个例子,在第二个例子中我们没有classifier,我们只能够收集到一些资料,但没有这些资料的label

我们现在只有大量的训练资料,但是没有label。我们刚才可以根据分类器的conference来判断是不是异常的资料,我们在没有classifier的情况下可以建立一个模型,

这个模型是告诉我们P(x)的几率有多大。(根据这些训练资料,我们可以找出一个几率模型,这个模型可以告诉我们某一种行为发生的概率多大)。

如果有一个玩家的几率大于某一个阀值(threshold),我们就说他是正常的;如果几率小于某一个阀值(threshold),我们就说他是异常的。

我们还没有讲任何的几率模型,从这个图上可以很直觉的看出一个玩家落在说垃圾的话几率低,通常在无政府状态下发言,这个玩家有可能是一个正常的玩家。

假设有玩家落在有五成左右的几率说垃圾话,二成的几率在无政府状态下发言;或者落在有七成左右的几率说垃圾话,七成的几率在无政府状态下发言,

显然这个玩家比较有可能是一个不正常的玩家。我们直觉上明白这件事情,但是我们仍然希望用一个数值化的方法告诉我们玩家落在哪里会更加的异常。

那么这种数值化的方法可以用高斯分布(用样本估计总体)

D:X的维度

加入更多的特征
由于得到的f 比较大,可以取Log

还可以使用自动编码器(Auto-Encoder)

code:vector

machine learning中也有其它做异常侦测的方法,比如SVM的One-class SVM,只需要正常的资料就可以训练SVM,

然后就可以区分正常的还是异常的资料。在Random Forset的Isolated Forest,它所做的事情跟One-class SVM所做的事情很像(给出正常的训练进行训练,模型会告诉你异常的资料是什么模样)。

原文地址:https://www.cnblogs.com/tingtin/p/12333107.html

时间: 2024-08-15 18:13:49

Anomaly Detection的相关文章

Isolation-based Anomaly Detection

Anomalies are data points that are few and different. As a result of these properties, we show that, anomalies are susceptible to a mechanism called isolation. This paper proposes a method called Isolation Forest (iForest) which detects anomalies pur

anomaly detection algorithm

anomaly detection algorithm 以上就是异常监测算法流程

斯坦福NG机器学习课程:Anomaly Detection

Anomaly Detection Problem motivation: 首先描述异常检测的例子:飞机发动机异常检测 直观上发现,如果新的发动机在中间,我们很大可能认为是OK的,如果偏离很大,我们就需要更多检测确定是否为正常发动机. 下面进行数学形式上的描述,通过概率密度进行估计,如下图: 对正常的数据进行建模,求Xtest的概率,当处于中心位置时概率比较大,并且大于设定的阈值,我们判定为OK状态,在远离中心状态,概率比较小,小于设定阈值我们判定为anomaly点. Anomaly detec

Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记

9 Anomaly Detection9.1 Density Estimation9.1.1 Problem Motivation异常检测(Density Estimation)是机器学习常见的应用,主要用于非监督学习,但在某些方面又类似于监督学习.异常检测最常见的应用是欺诈检测和在工业生产领域. 具体来说工业生产飞机发动机的例子:这个的特征量假设只有2个,对于不同训练集数据进行坐标画图,预测模型p(x)和阈值ε.对于一个新的测试用例xtest,如果p(xtest)<ε,就预测该实例出现错误:否

Coursera机器学习-第九周-Anomaly Detection

Density Estimation Problem Motivation 所谓异常检测就是发现与大部分对象不同的对象,其实就是发现离群点,异常检测有时也称偏差检测,异常对象是相对罕见的. 应用: 欺诈检测:主要通过检测异常行为来检测是否为盗刷他人信用卡. 入侵检测:检测入侵计算机系统的行为 医疗领域:检测人的健康是否异常 下面来看一个例子: x1: 引擎运转时产生的热量 x2: 引擎的振动 将它们绘制成图表,假设某天新生产出一个发动机引擎,我们需要对它进行检测是否正常.如果xtest对应的特征

Machine Learning - XV. Anomaly Detection异常检测(Week 9)

http://blog.csdn.net/pipisorry/article/details/44783647 机器学习Machine Learning - Andrew NG courses学习笔记 Anomaly Detection异常检测 Problem Motivation问题的动机 Anomaly detection example Applycation of anomaly detection Note:for Frauddetection: users behavior exam

斯坦福机器学习视频笔记 Week9 异常检测和高斯混合模型 Anomaly Detection

异常检测,广泛用于欺诈检测(例如"此信用卡被盗?"). 给定大量的数据点,我们有时可能想要找出哪些与平均值有显着差异. 例如,在制造中,我们可能想要检测缺陷或异常. 我们展示了如何使用高斯分布来建模数据集,以及如何将模型用于异常检测. 我们还将涵盖推荐系统,这些系统由亚马逊,Netflix和苹果等公司用于向其用户推荐产品. 推荐系统查看不同用户和不同产品之间的活动模式以产生这些建议. 在这些课程中,我们介绍推荐算法,如协同过滤算法和低秩矩阵分解. Problem Motivation

异常检测(anomaly detection)

异常检测(anomaly detection) 关于异常检测(anomaly detection)本文主要介绍一下几个方面: 异常检测定义及应用领域 常见的异常检测算法 高斯分布(正态分布) 异常检测算法 评估异常检测算法 异常检测VS监督学习 如何设计选择features 多元高斯分布 多元高斯分布在异常检测上的应用 一.异常检测定义及应用领域 先来看什么是异常检测?所谓异常检测就是发现与大部分对象不同的对象,其实就是发现离群点.异常检测有时也称偏差检测.异常对象是相对罕见的.下面来举一些常见

论文笔记:Chaotic Invariants of Lagrangian Particle Trajectories for Anomaly Detection in Crowded Scenes

[原创]Liu_LongPo 转载请注明出处 [CSDN]http://blog.csdn.net/llp1992 最近在关注 crowd scene方面的东西,因为某些原因需要在crowd scene上实现 anomaly detection,所以看到了这篇论文,该论文是目前在crowd scene中进行abnormal detection做的最好的,记录下笔记当做学习资料. 传统的 anomaly detection中,很多突发事件监测都是基于motion information的,这样就忽