异常值检测想要做的任务是从数据中找出与其他数据显著不同的数据,其具体应用有如:信用卡盗卡检测、网络攻击检测、癌细胞检测等。
异常值检测能不能看做一个二分类任务来建模?通常来说,异常值不能被看做为一个类别,因为异常值的种类实在是太多了。比如说做数字图片分类,有异常值图片根本就不是0~9中的某一个数字,但不是0~9的图片种类实在是太多了,根本不能把它们看做是一个类别。
异常值检测还有一个挑战就是:通常异常值样本很难被收集到。所以异常值检测很难直接被看做二分类任务。
有Label数据如何做异常值检测呢?比较直观的想法,在做分类任务时,输出一个置信分,并设定一个阈值,如果置信分小于该阈值就判定为异常值。
异常值检测任务:
无Label数据的异常值检测思想和朴素贝叶斯相似,使用最大似然估计。我们可以假设各个特征的取值概率分布为高斯分布:
likelihood:
正态分布的最大似然估计和矩估计相同,所以有:
于是便可以构建异常检测:
另外一种比较直观的想法是利用Auto-Encoder。如Auto-Encoder对数字图片进行编码,训练完成后,若输入图片非数字,输出的解码结果将与输入图片存在较大差异。