|
目录 |
|
- - - 1. 引言 - 2.2 评价指标 - 3.1 小白检测
概述 |
介绍了异常检测的基本任务形式,带标签,不带标签两种情况。
1. 引言
异常检测,想做一件事,机器能否检测出非已知情况?这件事其实并不容易。因为异常样本种类是无限的,这是一个开放数据的问题。而且这个问题,并灭有那么简单,主要任务是在正常的数据上train,然后试图检测出异常数据。
一般有一下两种,带标签的,这种情况下就是Open-set Recognition。无标签的数据,两种情况,一种是就是干净的正常数据,训练然后想让模型得到目标。第二种就是正常中带着一些异常数据。
2. with labels
2.1 简洁的Baseline
你可以使用任何现有分类器,拿去predict异常数据,从它们输出的distribution中计算出模型对当前分类的confidence。这个非常直观,如图,可以计算maximum,也可以直接用Entropy计算。老师指出,这个方法简单但是效果并不差。
2.2 评价指标
不平衡数据,准确率不是一个好的指标。
下面是其中一种评价方法。
确定超参数λ之后,我们可以写出一个表格,类似准确率,召回率,F1.
Cost table中使用的方法是设定分数,分数的取值取决于,正常和异常哪个对你来说更重要。
比如说,假如这是癌症检测,那么我们希望尽可能检测出来,宁错杀不放过,那么我们可以将anomaly but not detected设置为100,将normal but detected设置为1.
有一些指标不用设置λ,例如Area under ROC curve
2.3 问题:异常case太像正常case
如果现在有很多异常数据和label,那么缓解的方法可以是让模型学习输出confidence,给异常资料很低的confidence。
但是异常数据有时候并不好收集,所以还有一些其他方法,使用gan来生成异常。
ref
Kimin Lee, Honglak Lee, Kibok Lee, Jinwoo Shin, Training Confidence-calibrated Classifiers for Detecting Out-of-Distribution Samples, ICLR 2018
Mark Kliger, Shachar Fleishman, Novelty Detection with GAN, arXiv, 2018
3. without labels
3.1 小白检测
任务背景:
twich中一个直播游戏,所有人可以线上操作。但出现的问题是,操作难以进行,于是,人们假设有小白玩家,如下图,它们
- 不懂怎么玩
- 恶意乱按
那么,可以将它们检测出来吗?
以两个特征为例。
- 说废话——和操作无关的话。
- 喜欢在无政府状态下发言——游戏中有两种模式,规定时间投票决定和随机选取。
于是现在的问题是,尽管我们向量化数据,但是我们只有x并没有标签y,怎么办?
无标签检测
只要换一种角度考虑就可以,很简单,知道x,我们需要找到一个f,使得f(x) = p得到一个概率p,设定阈值lambda判断是否异常。
这是对二维输入的分析,可以看出,高玩喜欢在无政府状态下并且少说废话,其余两种人都是小白。
现在的问题是,我们如何找到这个function。
这是一个无监督问题,下面使用Probabilistic Generative Model对这个问题进行简单的求解。
这个解法并不重要,你可以安装人类对于“小白”的先验知识进行特征设计,训练出更强的模型。
3.2 Auto-Encoder