异常检测——Anomaly Detection
目录
1.问题来源
概括:找和训练集不一样的数据。
2.应用
难点:异常点难以收集,无法穷举。我只能收集到正常情况的训练数据。
3.分类
3.1 case1:With Classifier
1.对每个非异常成员打标训练。
2.查看每一条数据 预测矢量 的最大值 c(x),比较异常点和非异常点的c(x)值有没有明显的分界点。
但是总有一些异常点会被当作正常点
3.用 偏离集(dev set) 评估“异常检测”模型的 “异常阈值”λ ,要求偏离集有很多异常点和非异常点。
3.2 case2:Without Labels
这种情况下没有标签。
3.2.1 问题阐述
还是要寻找一个阈值,分布大于某一阈值为正常点,小于某一阈值为异常点。
计算每一个样本的分布概率,累乘,寻找能让达到最大值的参数。
具体展开:
实际上我们是要找 一组 和 ,使得达到最大值。
为什么用高斯分布? :常用~
找到最佳参数后,把具体要检测的点带入,即可得到 f(x)
4.异常侦测系统(模型)的评价指标
自己定义
因为样本不平衡,所以不建议用accuracy,建议对照precision-recall表,比较假阳性和假阴性的重要程度,分别给予不同的权重,计算新的损失函数。
AUC
可以避免测试样本分布不平均的情况,使得假阳性和假阴性一样重要。
5.遇到检测错误的点
容易出现“意外”情况:
如何解决:
多找些异常点(通过generative model),让模型对异常点产出很低的置信度。