Anomaly Detection(异常检测)的原理及最新的技术应用(李宏毅视频课整理和总结)_异常检测算法的原理(2)

{

x

1

,

x

2

,

,

x

N

}

\left{x^{1}, x^{2}, \cdots, x^{N}\right}

{x1,x2,⋯,xN}和一组异常的数据

{

x

~

1

,

x

~

2

,

,

x

~

N

}

\left{\tilde{x}^{1}, \tilde{x}^{2}, \cdots, \tilde{x}^{N}\right}

{x1,x2,⋯,x~N},一起训练一个二分类的分类器。但是有个问题是异常数据并不是一种类型,无法视为一个class,只要是非正常的都是异常,如下图所示。而且实际中的异常数据也是小概率事件的,比如网络攻击,比如诈骗交易,会有正负样本不均匀的情况:
在这里插入图片描述

给定训练数据,并且带有某种类型的label

{

y

^

1

,

y

^

2

,

,

y

^

N

}

\left{\hat{y}^{1}, \hat{y}^{2}, \cdots, \hat{y}^{N}\right}

{y​1,y​2,⋯,y^​N},使用这些数据先训练一个classifier。数据和label中并没有unknown,但是期望classifier在遇到一个未知数据时能给出unknown的判定。也被称为Open-set Recognition。

还有一种是训练数据是没有标签的,通过相似度来判断异常数据。这里面又分两种情况,一种是训练数据是clean,一种是polluted。
在这里插入图片描述

2 With Classifier

2.1 Base Method

给定一组Simpsons家族人物的数据,判断

x

x

x是否来自该家族:
在这里插入图片描述
而且这些数据都是有label的,可以训练一个Simpsons的家族分类器,输入人物图片,可以输出名字:
在这里插入图片描述
有了Classifier之后,期望使用这个来做异常侦测。输入一个人物,判断其是否属于Simpsons家庭。做法是输入

x

x

x之后,输出

y

y

y的同时输出一个信心分数

c

c

c,通过和设置的阈值

λ

\lambda

λ进行比较来判断是否异常,小于则是异常:
在这里插入图片描述
development set:用于训练过程中,指导调整超参数的样本集,使用起来类似于测试集。这个数据集中有labelled正常数据和异常数据。计算模型在这个数据集上的效果,来调整阈值lamda和其他超参数。
在这里插入图片描述
具体举例如下。当输出概率比较集中,最高的分数比较高的时候就是正常;概率比较平均,最高分数比较低就是异常:
在这里插入图片描述
也可以使用熵值或者其他方式来描述。

老师做了实验,结果也可以得到验证:
在这里插入图片描述
只是机器常常会把异常图片辨别为“柯阿三”这个人物,因为这个人物本身就和其他正常数据差距略大:
在这里插入图片描述

2.2 Evaluation

那么怎么评估模型的好坏呢? 给定100张正常simpsons家族图片和5张其他动漫图片,得到了以下结果。蓝色表示simpsons家族的得分,红色表示其他动漫的得分。因为样本不均衡的原因,所以使用accuracy是不准确的,因为负样本只有5个,对accuracy几乎无影响。
在这里插入图片描述
假设lamda设置在0.5-0.6之间,可以得到如下的混淆矩阵:
在这里插入图片描述
如果设置在0.8-0.9可以得到另外的混淆矩阵:
在这里插入图片描述
假阴性和假阳性都是我们不需要的,但是到底哪一个更重要,可以根据实际情况进行权重的调整。不同的任务,计算cost的方式也不一样:
在这里插入图片描述

2.3 More

2.3.1 Possible Issues

但是刚刚的方法也有一些问题。比如假设有一个classifier,可以区别猫和狗。classifier对于输入比如食蚁兽和羊驼来说,确实可以检测出他们是异常数据。但是对于老虎和狼,这些生物在猫和狗的特征上特别强烈,以至于classifier很难将它们挑出来。
在这里插入图片描述
所以会不会某些特征,比如颜色,会特别影响分类结果呢?老师将一些图片涂黄之后就会使得识别为simpsons家族的概率提高:
在这里插入图片描述

2.3.2 Network for Confidence Estimation

刚刚那种方法虽然简单,但是效果是不错的。还有另外一种更好的方法,即学习一个网络可以直接输出信心分数:
在这里插入图片描述

2.3.3 Obtain Anomaly

异常数据是难以获得的,所以有人考虑一种生成器可以生成一些异常资料:
在这里插入图片描述

3 Without Labels

就是指的训练数据是没有标签的。假设很多人可以同时操作一个游戏角色,那么多数玩家都是期望游戏可以正常进行的,而假设存在一些玩家恶意阻止游戏进行,那么考虑怎样检测出来。给定一组训练数据,给定input

x

x

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值