本文是李宏毅视频的笔记
1. 异常检测定义?给定一组训练数据
找到一个函数检测 输入 x 是否相似于训练数据。
不同的方法使用不同的方式决定相似性。
2. 应用领域- Fraud(欺诈) Detection
- Training data: 正常刷卡行为, 𝑥x: 盜刷?
- Ref: https://www.kaggle.com/ntnu-testimon/paysim1/home
- Ref: https://www.kaggle.com/mlg-ulb/creditcardfraud/home
- Training data: 正常刷卡行为, 𝑥x: 盜刷?
- Network Intrusion(入侵) Detection
- Training data: 正常连线, x: 攻击行為?
- Ref: http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html
- Training data: 正常连线, x: 攻击行為?
- Cancer Detection
- Training data: 正常細胞, x: 癌細胞?
- Ref: https://www.kaggle.com/uciml/breast-cancer-wisconsin-data/home
- Training data: 正常細胞, x: 癌細胞?
缺点:
- 异常数据不能被认为是一个类
- 在某些情况下,很难找到异常样本......
方法2: 借助分类器
先训练一个分类器
输出一个置信度分数(比如 softmax),取最大类别概率和阈值进行比较
缺点:
- 可能有的样本会得到很高的置信度,但是是异常样本
上图为训练领域内的样本输入得到的置信度输出,显然大部分都有很高的置信度。
而下图是非训练领域的样本输入的结果,只有10%样本得到很高的输出。
进阶算法:待研究
Terrance DeVries, Graham W. Taylor, Learning Confidence for Out-of-Distribution Detection in Neural Networks, arXiv, 2018
- Learning a network that can directly output confidence
方法2 总结
训练集:
- 训练数据按分类准备
- 训练一个分类器,使用某种方法(上面说了两种)从分类器得到置信度。
- 根据阈值判断是否异常
验证集:
- 标注每张图像是否为异常数据(2分类)
- 计算上面训练的模型f(x)的的性能,从而调整 阈值 和 其他超参数
测试集:(上线)
- 输入图像,f(x) 判断是否异常
那么如何计算一个异常检测模型的性能好坏?
不能直接用accuracy 来衡量,因为异常的样本可能特别少,模型啥都不干可能得到很高的accuracy。
性能好坏的评估与任务有关,看需求!
两种错误:
- 正常样本识别为异常 (False alarm)
- 异常样本判定为正常(missing)
根据任务,给它们不同的权重,如下图所示:
缺点:
老虎和狗可能会有很大的置信度。
解决手段:
场景2:训练数据无标注 解决手段: 方法1:极大似然估计
方法2:自编码器重建
其他方法
参考链接:【 李宏毅机器学习:异常检测 】Anomaly Detection(合辑)(中文)_哔哩哔哩_bilibili
评价:该教程只是简单的介绍,细节不够,仍需要具体尝试和看论文!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)