异常检测

学习笔记

那你怎么去建立这样一个数据集呢?

我们从一个很小的例子切入,如果让我来收集信用卡欺诈数据集,那我能拿到的数据都是正常的,怎么去判别不正常的数据集呢?可想而知,自己建立一个有标签的数据集是一个很困难的任务。

 

对异常检测案例训练数据集进行分类:

1.数据有标签,直接当成分类问题处理。我们希望机器遇到异常的样本能给出一个“unknow”的标签

   可以看下:open-set recognition

2. 数据无标签,这个可以分为2类,第一类是数据全部是干净的数据(正常样本);第二类正常数据混杂有异常数据

 

 针对有标签的数据集:

我们有一个simpson家族的数据集(有图片和标签)

(1)训练了一个模型分类器(正确率还挺高96%)

(2)拿一个异常数据丢给机器,希望机器能判别出这个是异常数据。

(3)操作方法:模型最后都会通过一个softmax函数做分类,这里会返回一组置信分数,如果机器很有把握,有一个类别的分数就会很高;如果机器没啥把握,每个类别的分数就会很平均。

也就是根据信心分数来做异常检测,我们这里设置一个信心阈值,若信心分数大于阈值,说明是正常数据,否则是异常数据。

 

这个信心阈值怎么设置:通过验证集,我们确定阈值时,这个时候的标签为2分类(要么是simpson家族的人,要么不是)

上线:给出一张图像,让机器来判断这个人物是否是simpson家族的人。

 

如何评价一个异常检测系统的好坏?

我们不关注正常值,更多的是关注异常值。那么正确率就无法很好的衡量模型。

如果我们把正常的样本判别成异常样本的cost

把异常的样本判别成正常的样本的 cost

我们可以根据业务需求设置这样的cost table

异常数据的label可以通过GAN来完成

 我这边拿信用卡欺诈案例做了个实验:

见我的github

 

https://blog.csdn.net/sinat_41774213/article/details/88552652

 

posted @ 2019-08-14 11:27  lililili——  阅读(309)  评论(0)    收藏  举报