机器学习笔记06(Anomaly Detection)
Anomaly Detection(异常检测)
1、什么是Anomaly Detection
2、Anomaly Detection如何做?
case1:有 label
How to use the Classifier?
How to estimate Confidence?
如何评估Anomaly Detection系统的好坏?
3、Anomaly Detection如何做?
case2:无 label
input output function 分析
input确定
function 计算(Maximum Likelihood)
方法改进
1、什么是Anomaly Detection
用“异常检测”这个词其实并不太准确
如何让机器知道“我不知道”这件事情? 换句话说就是,让机器判断出 input 和训练时的 training data 不一样。

应用举例:

方法:

分类:

2、Anomaly Detection如何做
举例说明:With Classifier
Case 1 :判断 input 是否是 Simpsons 这一家中的人

How to use the Classifier?
其实就是在做分类这个事情,output 需要有个类别,特殊的在于 output 同时需要有个 自信心/准确度。


How to estimate Confidence?
基本流程:
1)training set:需要有是Simpsons 家族的人并且需要有个标签指出具体是哪个人?
2)dev set :只要要包含有 Simpsons 家族的人,和不是 Simpsons 家族的人,无需标签。
3)通过 function 在dev set 中的表现来决定 f(x) 的 𝜆 具体取值应该为多少。
4)最后在testing set中进行 iuput image 并进行判断。

如何评估Anomaly Detection系统的好坏?
显然直接用正确率来判断系统的好坏是很不合理的。因为实际中异常的数据往往是比较少的。
比如按照上面的步骤,如果 𝜆 取值小于 0.3,则正确率为95.2。但事实上直接取0,正确率就只和测试数据相关了。

换个其他的 𝜆 取值,得到两种情况,我们分别对比。



如上图所示,如果分别评判 误判 和 异常未识别 的情况的严重性的话,两个系统得到的分数就不一样。
因此,对于不同的系统要有不同的评判系统好坏的方式。
3、Anomaly Detection如何做
举例说明:Without Labels
case 2:判断游戏中的正常玩家和非正常玩家
input output function 分析
游戏背景:游戏中同一个角色由所有玩家共同操控完成某个任务。正常玩家会想要完成任务,非正常玩家则会有捣乱等情况。
input 为某个玩家的行为,需要用向量表示。向量中不同元素代表不同行为。
output 为某个玩家是否为正常玩家或者非正常玩家。
P(x) 为产生向量x这种行为的概率,大多数玩家还是会想要完成任务,因此概率大说明行为偏向于正常。


input确定
假设输入向量中含有两种因素,得出所有 training data有这种情况的可能性分布,如图,分布越密集的地方,意味着玩家的行为越正常。

function 计算(Maximum Likelihood)
我们需要确定一个 function ( 参数为𝜃 ),用来计算产生 input 这种行为的可能性,并且使得这种可能性最大。但是𝜃 具体张什么样子并不清楚。

但事实上,图上的数据分布可以用Gaussian Distribution来说明(也有更好的分布),也就是说 𝜃 就是𝜇,、Σ ,高斯分布前面的笔记里其实已经学过了,f(x)求得的是产生input x的概率。

在确定高斯分布的参数以后,就能得到所有的产生这些数据的概率的分布的情况,由此也就可以确定 𝜆 的取值,来判断正常玩家和非正常玩家的分界。

方法改进
在上面例子中,每个玩家作为 input,只考虑了这个玩家的两个因素,但事实上我们可以考虑这个玩家更多方面的信息。
如图,其中 f(x)取 log 是因为计算出来的数据非常小,为了有对比效果。


浙公网安备 33010602011771号