auto-encoder异常检测的问题,无标签情况下怎么进行预测?

  统计/机器学习 无监督学习 深度学习 数据预处理    浏览次数: 245
0

看到最新的一期auto encoder用于信用卡欺诈检测,进行重建误差的时候,已明确具体的正负样本,即数据是存在label标签的,这样子绘制reconstruction的mse、mae确实很清楚的看到欺诈样本的误差较大。但在数据集没有label的情况下怎么进行预测测试集中的欺诈样本呢,或者说怎么设定reconstruction MSE/MAE的threshold呢,通过threshold来确定?

 

yinni   2019-01-18 15:03



   2个回答 
4

这里有两个步骤:

1. 先unsupervised learning,训练一个autoencoder得到MSE score。MSE=autoencoder(x)。loss中只有input$x$,并没有label$y$。

2.再根据MSE得到一个binary classifier,目的是确定一个threshold让总体error最小。比如下图中横轴是MSE。最终目的是让typeI和type II error的加权和最小。

$argmin_c [w_0 \int p(MSE>c|y=0) + w_1 \int p(MSE>c|y=1)]$

如果对positive/negative平均看待,$w_1=P(y=1),w_0=P(y=0)$。也可以另外建模。

如果已知$y$,可以估计$p(MSE|y=1)$和$p(MSE|y=0)$。否则只能假设这两个分布。粗糙一点,也可以人为设定$c$,比如$P(MSE>c)=0.001$。


-----------------------------------------------------------------

第一步应用autoencoder中,有个假设是negative 和positive的pattern不同:在某个基(basis)坐标系中positive是远离negative的clusters。只要找到一个basis,能很好表达negative,并且很大概率不能很好表达positive,这样就能在这个basis上区分positive/negative。

autoencoder学习的是数据的nonlinear sparse representation,中间层的Z code就是一个m维的非线性basis。假设要表达所有positive/negative需要n维,[z1,z2,...zn],而表达negative只需要m维,m因为数据中negative占绝大多数,所以autoencoder主要学习negative的pattern,很大概率会忽略positive的需求。

举个例子,一只猪混到一群猴子中,而且对它们只进行爬树的考试。最后根据爬树的结果,很容易就把猪找出来了。而autoencoder学习的是如何在[吃饭,跑步,爬树,跳高,...]等考试中把爬树找出来。


SofaSofa数据科学社区 DS面经 问答 实战

Zealing   2019-01-19 01:40

谢谢老哥,醍醐灌顶 - yinni   2019-01-21 11:11
2

好像的确挺不好办的,很多时候非监督学习也是有ground truth的。但是如果完全不知道真实情况的非监督异常检验,那就只能凭直觉或者应用场景了。

比如你知道0.1%的信用卡有异常,那么你的threshold就可以选择重建误差最大的0.05%或者0.1%,基于你是想保守点还是冒险点了。

SofaSofa数据科学社区 DS面经 问答 实战

WinJ   2019-01-18 15:14

谢谢老哥回答, 之前也有这样想过。虽然合理,但觉得还是简单了些。 - yinni   2019-01-21 11:13


  相关主题

学习auto-encoder, 自己写的demo, 关于拟合的问题,帮忙看下loss-acc图?   2回答

为什么GAN是非监督的?   1回答

离群点、孤立点、异常点有什么区别吗?   3回答

数据归一化问题   2回答

一个关于机器学习模型性能的问题。   1回答

python随机打乱文本   3回答

软聚类,硬聚类?   1回答

什么是K-Modes(K众数)聚类法?   1回答

层次聚类中的Ward's method是什么意思   1回答

聚类问题可以用stacking model的方法吗?   2回答

层次聚类里的linkage是什么意思?   2回答

谱聚类中的相似矩阵是怎么定义的?   0回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!