2
,
⋯
,
x
N
}
\left{x^{1}, x^{2}, \cdots, x^{N}\right}
{x1,x2,⋯,xN},期望找到一个函数使得当输入另外的
x
x
x的时,可以检测这个数据和训练数据是否相似,否则就是异常数据,总之就是和训练数据不一样的数据。
异常是相对于训练数据而言的:
有一些应用,例如信用卡盗刷,超大金额支出的检测等等:
1.2 Base Idea
最简单的想法是用一组正常的数据
{
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}
{y1,y2,⋯,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和其他超参数。
具体举例如下。当输出概率比较集中,最高的分数比较高的时候就是正常;概率比较平均,最高分数比较低就是异常:
也可以使用熵值或者其他方式来描述。
老师做了实验,结果也可以得到验证:
只是机器常常会把异常图片辨别为“柯阿三”这个人物,因为这个人物本身就和其他正常数据差距略大:
文末有福利领取哦~
👉一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
👉二、Python必备开发工具
👉三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉 四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(文末领读者福利)
👉五、Python练习题
检查学习结果。
👉六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉因篇幅有限,仅展示部分资料,这份完整版的Python全套学习资料已经上传
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!