异常侦测(Anomaly Detection)
异常侦测就是让机器知道 它不知道这件事情
problem formulation
判断出给的训练资料是否熟悉 认识
异常取决于训练资料
可以用来判断银行卡是否盗刷 爬虫检测 癌细泡的侦测等等
正常的data 容易找 而不正常的data不太容易因为太多了 这不是个二分类问题
训练数据 有标签和无标签的
有标签的有一个分类器可以分出那些是unknown 可以用open-set recognition
无标签的 分两类 一类是全部都是normal的已知的 另一类是里面掺杂着不知道的
有label的训练 with classifier
(class_P14)
对于输入的x 分类器能够给出每个输出类别的分数
异常检测参数 λ 和实际给出的分数比较来决定 是异常或正常
如果有又一个很高 其他很低就可以判断为高的类别 机器很自信
而如果分数比较平均的话 就可以认为机器不自信 不认识这个x
异常侦测时 异常的情况非常的少 跟正常的比例非常悬殊 因此不能使用正确率 来判断系统的好坏
异常检测的两个错误 一个是对的检测错了 和错的检测对了
系统的好坏根据自己的应用场景 P和R哪个更重要来判断
比如患癌症检测 错的检测对了影响不大 但是对的检测错了 实际患有但没有检测出来这就很严重了
没有label的训练 (without label)
利用高斯分布和一个模型判断
给出可能的参数并发生的百分比 放入到模型中 给出结果分数
让分数大于一个值时判断为 正常 小于为异常
利用Auto-encoder
把输进去的图片 encoder变成一个向量 再decoder 变回一张照片
如果是正常的 还原度会很高 异常的则会还原度很低
或者使用SVM中的one-class SVM 或者Isolated Forest