浏览量: 60 次浏览

异常侦测(Anomaly Detection)

2019年7月16日 0 作者 Nie Hen

异常侦测就是让机器知道 它不知道这件事情
problem formulation
判断出给的训练资料是否熟悉 认识

enter description here =700*500
异常取决于训练资料

可以用来判断银行卡是否盗刷 爬虫检测 癌细泡的侦测等等
正常的data 容易找 而不正常的data不太容易因为太多了 这不是个二分类问题

enter description here =500*200

训练数据 有标签和无标签的
有标签的有一个分类器可以分出那些是unknown 可以用open-set recognition
无标签的 分两类 一类是全部都是normal的已知的 另一类是里面掺杂着不知道的

enter description here =700*500

有label的训练 with classifier

(class_P14)
对于输入的x 分类器能够给出每个输出类别的分数
异常检测参数 λ 和实际给出的分数比较来决定 是异常或正常
如果有又一个很高 其他很低就可以判断为高的类别 机器很自信
而如果分数比较平均的话 就可以认为机器不自信 不认识这个x

enter description here =600*400

enter description here =600*400

异常侦测时 异常的情况非常的少 跟正常的比例非常悬殊 因此不能使用正确率 来判断系统的好坏
异常检测的两个错误 一个是对的检测错了 和错的检测对了
系统的好坏根据自己的应用场景 P和R哪个更重要来判断
比如患癌症检测 错的检测对了影响不大 但是对的检测错了 实际患有但没有检测出来这就很严重了

没有label的训练 (without label)

利用高斯分布和一个模型判断
给出可能的参数并发生的百分比 放入到模型中 给出结果分数
让分数大于一个值时判断为 正常 小于为异常

enter description here =600*400

利用Auto-encoder

把输进去的图片 encoder变成一个向量 再decoder 变回一张照片
如果是正常的 还原度会很高 异常的则会还原度很低

enter description here =600*400

或者使用SVM中的one-class SVM 或者Isolated Forest