找回密码
 立即注册
查看: 140|回复: 5

异常检测(anomaly/ outlier detection)领域还有那些值得 ...

[复制链接]
发表于 2023-2-28 07:01 | 显示全部楼层 |阅读模式
基于图像的异常检测,比如工业上用的表面瑕疵检测(surface defect detection)发展到了哪一步?还有无进一步研究的必要?对讯号异常(series anomaly)的呢?请大家从CV或data mining不同的角度各抒己见!谢谢!
发表于 2023-2-28 07:04 | 显示全部楼层
与其讨论异常检测(Anomaly Detection/Outlier Detection),我今天想从一个更广的角度,也就是异常分析/异常挖掘(Anomaly Mining/Anomaly Analysis/Outlier Mining/Outlier Analysis)的角度来谈一下还有哪些值得研究的问题。
<hr/>首先,我们来看看有哪些常见的数据类型:
1) 表格型数据(Tabular data,Point-Cloud Data):这是目前最常见的数据类型,一列代表一个特征(Feature/Dimension/Attribute),一行代表一个观测值(Observation),例如成绩表等。
2)序列数据(Sequence Data):主要包含时间序列数据(Time Series Data),例如:语音数据(Speech)、股票数据等在时间维度上具有先后顺序的数据;以及基因序列(gene sequence)等在空间维度上有先后顺序的数据。
3)图像数据(Image Data):顾名思义,也就是由RGB三色表示(或者用灰度表示,也就是单一颜色从亮到暗)的,具有空间位置关系的数据;
4)视频数据(Video Data):顾名思义,也就是由RGB三色表示的(或者用灰度表示,也就是单一颜色从亮到暗),具有时间和空间位置关系的时空数据;
5)图数据(Graph Data):这个是一个新兴的数据表示类型,一般来讲:用节点(Node)表示一个物体(Object),然后再用边(Edge)来表示物体之间的关系。每个节点(Node)可以由自己的特征(Atrributes)来描述自己的性质,每条边(Edge)可以有方向(Direction)、权重(Weight)、时间戳(Timestamp)等来表示节点之间的关系。不难看出,图数据是当今最接近于真实世界的一种数据表示方式。
6)文本数据(Text Data):故名思义,也就是包含文字的文档、网页等。一般是以一个字/单词为最基本单位。
<hr/>由于答主的知识储备以及所读论文十分有限,所以在这里我们只简要讨论针对于表格型数据(Tabular data,Point-Cloud Data)的异常分析(Anomaly Mining)的研究方向。
1). 深度学习结合异常检测(Deep Learning For Anomaly/Outlier Detection)
传统的异常检测方法,即LOF、K-NN、IsolationForest等等各路神仙提出的十分经典的方法,无一例外,全是来自于数据挖掘领域里面的回归分析(Regression)、分类(Classification)、聚类分析(Clustering)或是其他相关领域(Frequent Pattern Mining等)。比如说最原始的Outlier Detection,其实是来源于统计里面想要剔除异常值,来提升Regression/Classification的参数估计的稳定性而发展出来的一套方法。虽然Statistical Outlier Detection现在在机器学习领域不是最常用的,但是这类方法毫无疑问是几乎所有异常检测方法的老祖宗。
我当初读文献的顺序是这样的:Anomaly Detection>Classification/Clustering/Regression/Others. 我最初在看异常检测的论文时,总是惊讶:“哇,这个方法好好哦,他是怎么想到的?好佩服!" 在系统地读了部分分类/聚类/回归的文献之后,恍然大悟:“这不就是XX异常检测方法的原型吗?他不就是改动了一下XX部分吗?” 其实这也不奇怪,做机器学习/数据挖掘的那一群人,他们不停地游走于分类、聚类分析、回归、异常检测等领域之间:“借它山之石,以攻玉。“
现在传统的“它山之石”,已经被借的差不多了,那么做异常检测的人怎么办呢?现在又有了新的“它山之石“啊,那便是无所不能、力大无穷、大力出奇迹的深度学习(Deep Learning)。这类方法目前主要基于分为以下三类:
reconstruction-based:简言之,使用deep NNs来学习一个模型,然后对所有的input计算其重构误差(reconstruction errors),然后基于重构误差来进行异常检测;
representation-based:简言之,使用deep NNs来学习原始数据,整几个有意思的latent features出来,然后基于学习出来的latent features进行异常检测;
one-class classification based:简言之,使用deep NNs代替传统的one-class classification 模型来进行异常检测;
要看更多的细节,可以看看Guansong Pang老师今年的Deep Learning for Anomaly Detection: A Review或者其他的Review。
如今每年都会有大量新的Deep Learning方法出来,当你看到不错的方法的时候,你就可以想想:“哟,不错哦,是不是可以借用一下呢?”
2)以人为本的异常分析(Human-centric Anomaly/Outlier Analysis)
问:人工智能NB吧?机器学习NB吧?深度学习NB吧?
答:NB归NB,若不能为吾等所控制,将来必酿成大祸。

异常检测作为机器学习/数据挖掘里面的一重要领域,也不得不面对当今机器学习/数据挖掘所面临的几大重要挑战:
可解释性(Interpretability);
公平性(Fairness);
人机交互性(Human Computer Interaction/Human-in-the-loop);
隐私保护(Privacy-preserving)
下面分别展开描述一下:
可解释性(Interpretability)这个主要分为两方面,即为:
a)模型本身的可解释性:基于深度学习的异常检测方法我们就不吐槽了,众所周知深度学习的绝大数模型本身就是一个黑盒(Black-box)。所以使用这一类方法来做异常检测,也一定是一个黑盒。还有目前表现效果很好的ensemble anomaly detection(也就是把一堆异常检测模型整在一起,各取所长)也是一个黑盒。至于美国或中国的法律我不太清楚,反正欧盟今年又出台了新法令,对某些关键领域的机器学习/人工智能模型,强制要求可解释性(interpretability)/透明性(transparency). 此外,目前机器学习领域也开始兴起一门新学科:机器学习的可解释性。换言之,如果你的模型具有很好的解释性,就算在Effectiveness/Efficiency方面干不过解释性很差的异常检测模型(基于深度学习的、ensemble的、或是其它一些经典模型),那也是很有研究价值的。
b) 异常本身的可解释性:如果说目前有2万篇做异常检测(Anomaly Detection)的论文,那么做异常解释(Anomaly Explanation/Interpretation)的论文可能不到200篇。所谓异常解释,也就是解释为什么这个异常点是异常的。有人问,我们为什么要解释异常呢?主要原因大致有:第一,确认你检测出来的outlier是真的异常(anomaly);第二,找到导致异常的root-cause,把机器修好,或者给客户一个指导意见。
目前做异常解释的模型大致分为两类:第一种,给定一个异常点(模型检测出来的/人工发现的/猜的等等),然后它给你找出来这个点的异常原因。第二种,无提前给定的异常点,模型在做异常检测的时候就顺便把异常原因一起给出来了。而目前几乎所有的相关文献,给出来的异常原因几乎都是基于subspace的(Feature-Based)。所以Anomaly Interpretation又和Feature Selection重叠在一起了,又可以借用它山之石了。但是我们也可以考虑Instance-Based的解释啊,这是不是又和Instance Selection重叠了呢?或者你又有什么其他的方法来解释异常呢?

公平性(Fairness):这个主要考虑异常检测算法在涉及到人种、性别、信仰、身高、是否残疾、性取向等数据的时候,是否是有偏的。这个话题在NLP领域倒是得到了很好的发展,但是在异常检测领域的工作却寥寥无几,我想主要的原因还是因为没有“它山之石”可以借鉴吧。因为异常检测一旦涉及到demographic data的时候,若想公开使用此类算法,公平性是迟早要考虑的。目前主要的工作有:A Framework for Determining the Fairness of Outlier Detection, Fair Outlier Detection,FairOD: Fairness-aware Outlier Detection等

人机交互性(HCI):由于异常检测领域的绝大多数数据都是没有标签的,通过crowdsourcing/human-in-the-loop/Active Learning等手段来为数据提供标签/提供反馈等,从而提升异常检测效果也是一个值得研究的方向。由于在这个方向所读文献极少,就不展开了,欢迎补充。

隐私保护(Privacy-preserving Anomaly Detection): 就异常检测的应用领域来讲,医疗保健(Healthcare)、银行交易数据(Financial Transaction Data)、市场数据(Marketing Data)以及一些社会学、经济学研究的数据,比如说居民收入和消费数据、投票数据(Voting Data)、房地产数据(Real Estate Data)等等都包含了很多隐私信息(收入、年龄、性别、受教育程度、住址、家庭成员等等)。如果你在Kaggle上面搜索过银行的数据,比如说贷款批准数据(Loan Approval Data)、贷款逾期数据(Load Default Data)等等,你都会发现他们的数据集要么是伪造的,要么是匿名化Feature了的。它们这种简单粗暴的保护隐私的方法,将会大大降低异常检测的实用性。其实隐私保护这个话题大,概从2002年开始,就陆陆续续有一些异常检测的相关文章,但是一看他们的发表量、引用量等,就可以看出这其实是一个一直未受到重视的话题。因为目前大家都比较追求性能,而忽略了这些问题。(因为这个问题比较难做,而且对于大多数互联网公司来说并没有什么直接收益可言。)

3)自动异常检测(Automating Anomaly Detection)

问:既然我们都有这么多现成的异常检测方法了?那我们怎么选择模型呢?选了模型怎么调参呢?
答:这不就是自动异常检测吗?
据我所知,在异常检测领域,目前只有较少的相关工作,但是这必将是一个很火的方向。因为已经有“它山之石”可以借用了,冲啊兄弟萌。
4)高维数据异常检测(Anomaly Detection for High-dimensional Data)
高维数据在回归分析(Regression)、分类(Classification)、聚类分析(Clustering)领域里面一直是一个让人头疼的问题,各位秃头科学家们已经研究几十年了,但是到目前为止仍然没有解决"Curse of Dimensionality"这个问题。这个问题在异常检测里面更具有挑战性,因为异常检测的数据一般都是Highly-imbalanced, unlabeled。可谓是雪上加霜啊!就算有“它山之石”,也未必管用。个人觉得这是异常检测领域最为难啃的骨头之一。
5)大规模数据流异常检测(Anomaly Detection for Large-Scale Streaming Data )
这个是很多金主爸爸目前急需要的技术,无论是银行、互联网公司、政府等,都想进行实时的大规模数据的异常检测。此方向所读文献及其有限,故不展开,欢迎补充。
6)数字孪生异常检测(Anomaly Detection For Digital Twin)
据我所知,这个问题目前在德国、荷兰、美国等国家,有不少工业界巨头是开始投了钱试水的。我稍微解释一下主要思想:比如说我们有一个机器人,对于这个机器人我们有
一堆物理模型(基于流体力学、空气力学等建立的数学模型)
一大批数据(包括机器人真实产生的数据、以及Digital Twin产生的模拟数据等)
现在我们要建立一个Hybrid Anomaly Detection Model,一部分是基于物理模型(Model-Based)、另外一部分是基于数据的(Data-Driven),这样得到的模型无论是可靠性还是检测性能都会得到大大提升。可以说这是一个全新的方向,目前几乎没有任何相关的已发表论文(因为所跨的方向太广)。
<hr/>部分参考文献:
[1] Pang G, Shen C, Cao L, et al. Deep learning for anomaly detection: A review[J]. arXiv preprint arXiv:2007.02500, 2020.
[2] Duan L, Tang G, Pei J, et al. Mining outlying aspects on numeric data[J]. Data Mining and Knowledge Discovery, 2015, 29(5): 1116-1151.
[3] Akoglu L. Anomaly Mining--Past, Present and Future[J]. arXiv preprint arXiv:2105.10077, 2021.
发表于 2023-2-28 07:07 | 显示全部楼层
相关关工作整理在公众号“时序人”中。关注获取更好阅读体验~
AAAI 2020 | 时序转化为图用于可解释可推理的异常检测<hr/>异常检测在工业界和学术界都有被广泛地关注。工业界诸如运维、安全、风控、医疗,工业生产等诸多场景;学术界诸如图像、时序、graph、不平衡学习、可解释建模等诸多领域。总体来说异常检测是一个小众但是很有价值的方向。
如很多答主所说,异常检测是一种无监督或者弱监督下的非平衡数据分类问题,并要求一定的解释性。通俗来说,异常检测有两大任务:

  • 发现异常或者预测异常
  • 解释为什么异常,探寻异常的原因
现有的很多工作,都围绕异常检测根因分析,有非常多的方法。异常检测的方法这里不赘述,之前很多答主都介绍的很清晰,这里主要聊一聊根因分析。根因分析归根结底,就是模型的认知力,这也是最近被达摩院列为未来可研究的方向之一,讲究模型在学习中可归纳因子,自我推导,构建人们可以理解的知识表达体系。这在异常检测中有很大的作用,比如在构建无人化智能运维系统中,自主分析异常根因从而实现自我修复。
阿里云云栖号:达摩院2020十大科技趋势发布:科技浪潮新十年序幕开启这里想介绍一个我们组新的研究成果,主要针对在运维与风控场景下,时序数据的异常检测。我们提出将time series 转化为 graph,通过graph所表达出的内在因子关系,分析时序宏观和微观的演化,实现模型可自主归纳因子,推断异常,并构建易被理解的知识表达体系。主要的paper有:
Cheng, Z; Yang, Y; Wang, W; Hu, W; Zhuang, Y and Song, G, 2020, Time2Graph: Revisiting Time Series Modeling with Dynamic Shapelets, In AAAI, 2020
通过shapelet有监督地归纳因子,构建graph进行知识表达 —— [主页] [博文]
Zongtao, L; Yang, Y; Wei, H; Zhongyi, T; Ning, L and Fei, W, 2019,How Do Your Neighbors Disclose Your Information: Social-Aware Time Series Imputation, In WWW, 2019
考虑多个时序实体之间的互相影响,通过构建社交属性进行预测推断
还有这篇 Yozen, Liu; Xiaolin, Shi; Lucas, Pierce; Xiang, Ren, 2019, Characterizing and Forecasting User Engagement with In-app Action Graph: A Case Study of Snapchat, In KDD, 2019
通过归纳用户时序数据下的动作,构建dynamic graph分析动作的演化关系,预测用户未来的行为
以及早些年的 David, Hallac; Sagar, Vare; Stephen, Boyd;Jure, Leskovec, 2017, Toeplitz Inverse Covariance-Based Clustering of Multivariate Time Series Data, In KDD, 2017
构建马尔科夫场表达时序片段(segment)的相似性,从而对时序进行合理的划分

综上,
这是我最近关注的一个异常检测的交叉领域,我们一般简称为「时序图」,考虑工业界的实际需要,构建可归纳可推理,并且具有可解释知识表达的异常检测模型,结合时序(time series)与图 (graph)两个领域。
未来,我觉得异常检测更多可以考虑实际的工业痛点问题,学术界尝试领域交叉的方法
做相关方面研究三年,一点小小看法
发表于 2023-2-28 07:08 | 显示全部楼层
我在做unsupervised anomaly detection(UAD)在医学图像领域的研究。众所不周知,现在主流医学图像分割,如肿瘤分割,其state-of-the-art的结果都是由有监督的深度学习方法(supervised deep learning)达到的。这归功于近年来一些被开源的、有精确标注、且数据量还不错的医学数据集,如脑肿瘤BraTS,眼底识别ODIR,肺肿瘤LUNA,多器官CT分割CHAOS,皮肤癌ISIC等等。
但是,尽管supervised deep learning取得了不错的成绩。医学图像数据有三个特征,使得肿瘤检测(tumor detection)非常适用于无监督异常检测(UAD):
1、医学数据的稀有性。
这里指的是有精确标注的医学数据的稀有性——获取像素点级别的精确标注是昂贵的,因为这要求专业的放射科医生去勾画,这与普通自然图像随便雇个人就能打标注不同。
2、医学数据的不平衡性。
这包括两个层次,一是image level,正常的、不包含肿瘤的医学图像数量往往多于不正常的;二是pixel level,一张已知包含肺结节的肺部CT(256*256)可能只有非常小的区域是肺结节(5*5)。
3、肿瘤表征的多样性。
医学病灶往往是多样的,肿瘤往往大小不一、形状不一、位置不一、纹理特征不一,从统计学的角度说,这些肿瘤的数据分布是不一致的。按照有监督学习的思路,则要求足够大的数据集去涵盖所有这些多样性,使模型可以学习到有效的特征表示(这也是为什么ImageNet在自然图像领域可以成功的原因之一)。但很可惜,在医学图像领域,受限于数据的稀缺性。

所幸,与病灶的多样性相对应的,是normality的有限性(constrained)。这里的有限性指,正常的医学图像,往往是有着相似的解剖结构与纹理特征的,如正常的大脑都具有一定的结构和纹理上的对称性。从统计学的角度,我们可以假设正常医学图像是服从一个constrained distribution,而anomalies,尽管他们各有各的分布,但都他们不能被fit到这个正常图像的分布中——这就是anomaly detection的假设!
再所幸,这意味着我们可以利用 海量的、正常的、不需要标注的医学图像数据,来训练一个模型,去学习正常数据的分布,并用这个学习到的分布,去检测出无法被拟合进这个分布anomlies, i.e., tumor——这就是unsupervised anomaly detection的假设!

UAD 在医学图像中的代表作是AnoGAN,发表于2017年IPMI。其期刊扩展版本f-AnoGAN发表于2018TMI。AnoGAN运用DCGAN学习normal data的latent space,并假设这个latent space无法重构出anomalies,重构误差高的地方被检测为anomalies。
附上AnoGAN链接:
[1] T. Schlegl, P. Seebck, S. M. Waldstein, U. Schmidt-Erfurth, and G. Langs, “Unsupervised anomaly detection with generative adversarial networks to guide marker discovery,” In International Conference on Information Processing in Medical Imaging, 2017, pp. 146-157.
UAD 同样被应用于脑肿瘤检测,这些方法先用VAE/AE重建normal brain,而重建误差高的区域责备检测为脑肿瘤。附上几篇论文:
MICCAI 2019:
[2] D. Zimmerer, F. Isensee, J. Petersen, S. Kohl, K. Maier-Hein, “Unsupervised Anomaly Localization Using Variational Auto-Encoders,” In MICCAI, 2019, Lecture Notes in Computer Science, vol. 11767.
MIDL 2018:
[3] X. Chen, and E. Konukoglu, “Unsupervised Detection of Lesions in Brain MRI using constrained adversarial auto-encoders,” In MIDL Conference book, 2018.
和一篇挂在arxiv上的综述:
[4] X. Chen, N. Pawlowski, M. Rajchl, B. Glocker, E. Konukoglu, “Deep generative models in the real-world: an open challenge from medical imaging,” arXiv preprint arXiv:1806.05452
总之我个人认为这在医学图像领域是一个有趣的思路,且在医学图像领域尚处于研究初期。我也有一篇相关的文章在under review,希望到时可以更新自己的文章。欢迎大家填坑。
发表于 2023-2-28 07:15 | 显示全部楼层
谢谢邀请~~~
笔者做异常检测也有两三年了,异常检测在工业界中的案例是比较多的。之前使用的时候,主要在业务安全和业务运维两个场景上面遇到过异常检测,不过虽然都是异常检测,但是他们所使用的技巧和方法是截然不同的。
通常来说,在业务安全领域通常是为了发现异常行为,异常用户,防止诈骗等等,这种时候通常都会基于各种信息做出各种各样的特征,然后通过异常检测算法来判断异常。在业务运维领域,有着各种各样的服务器数据,流量数据,端口数据,需要使用时间序列异常检测来判断是否出了故障。在业务运维领域,同样有着多维的数据,需要从多维数据里面定位出异常的根因,这就是所谓的“根因分析”。
如果是在单维度数据集下,大家能够使用的就是 3-sigma 原理已经它的一些变种形式,例如 Grubbs 算法,T Test 等等。在高维度领域,通常来说有两种处理方式。一种是降低到单维度,然后使用 3-sigma 之类的算法判断新的序列是否异常,从而推断出原始序列是否异常。另外一种方法是在高维度上直接建立模型,然后判断高维点集是否异常。
高维度异常检测算法比较多,无论是 PCA 建立重构误差,还是 AutoEncoder 来算误差分数,或者是 Isolation Forest,One Class SVM 等算法,都能够做到异常检测。之前写过一篇异常点检测算法的文章,链接如下:

  • 异常点检测算法(一)
  • 异常值检测算法(二)
  • 异常点检测算法(三)
  • 异常点检测算法综述
异常点检测算法综述。除此之外,也写过一篇文章介绍如何进行时间序列异常检测的,链接如下:时间序列简介(一),智能运维系统(二)。
不过,在业务的实际场景下,异常点的检测有的时候只是一种辅助手段,帮助机器学习从业者迅速定位异常。但是,如果要保证效果和输出的话,最好是在定位了异常之后,把数据保存下来当做样本和标签,然后建立一个有监督学习的模型。这样通常来说就能够解决不少的问题。在业务安全领域或者业务运维领域,通常的套路都是:
原始数据 -> 无监督算法 -> 人工标注 -> 特征工程 -> 有监督算法
这样的多层架构体系。
通常来说,推荐系统只有特征工程和有监督算法这样的架构体系,因为没有人工标注的成本。而业务安全和业务运维的话,其实标注成本就会相对偏高,但是如果使用无监督算法,就可以减缓人工标注的成本。这里的无监督算法不仅可以使用异常检测算法,还可以使用各种各样的聚类算法和图算法。图算法其实就包括 PageRank 和 FastUnfolding 等算法,链接如下:Graph Analysis and Its Application
发表于 2023-2-28 07:17 | 显示全部楼层
我觉得异常检测可以被理解为一种在「无监督或者弱监督下的非平衡数据下的多分类,且要求一定的解释性」的任务,且往往异常点(不平衡数据中较少的部分)对我们更为重要。和非平衡学习(imbalanced learning)不同异常检测一般是无监督的,和普通的二分类问题也不大相同,因为异常检测往往看似是二分类,但其实是多分类(造成异常的原因各不相同)。问题的核心就在于我们既不知道事实上有多少类别(class),也没有真实的标签(ground truth),在这种情况下异常检测的效果往往不尽人意。
说到异常检测,一般会先从无监督说起。传统的方法就是衡量相似度(proximity)比如距离[1]、密度[2]、角度[3]、隔离所需的难度[4]、基于簇的方法[5]等,这些算法在低维上其实表现都接近,因为核心假设都是“异常点的表示与正常点不同,是少数派”。但大部分类似的算法都会面临维数灾难(the curse of dimensionality),即常见的相似性度量(比如欧氏距离)在高维数据上往往会失效[6][7]。为了解决这个问题,人们提出了很多方法包括:

  • 降维或者特征选择[8]
  • subspace方法,比如在多个低维空间上做检测再合并,比如random projection(随机产生多个子空间并在每个子空间上单独建模,feature bagging)和random forest很像
  • 用graph来表示关系,提取特征[9],但往往维度会继续升高
  • 找intrinsic dimensionality以及其他度量方法,如reverse nearest neighbors[10]
其实换句话说,对于高维数据,核心目的都还是想找到一个好的空间/表示[11],之后找异常就变成了衡量相似度的简单问题。高维数据所带来的另一个问题是可扩展性(scalability)。众所周知,衡量相似度的运算开销是很大的,大部分距离度量的复杂度 以上,在这种情况下利用数据结构(比如kd tree)进行优化或者dynamic programming来降低复杂度也是常见的探索方向。最理想的情况还是控制维度,找到更好的数据表示,因为这才是问题的根本。
为了找到好的表示(representation),或者单纯只是更简单的、tractable的表示,线性降维有用PCA的,非线性的有用autoencoder的[12],人们的核心假设都是降维模型所找到的低维空间主要受到正常点的影响,因此异常点距离所找到的低维空间的距离更远。在这个基础上人们也引入了variational autoencoder(VAE),后来也有用GAN的方法[13]。对于高维数据而言,往往一个模型是不够的,比如前面的feature bagging(类比于监督学习中的随机森林)会建立多个模型[14],因此就会涉及到模型合并的问题,也就是集成学习,这个话题主要是13年以后开始比较火。考虑到无监督学习的特性,集成异常检测(outlier ensembles)[15]一般是平行式(parallel learning)的比如求平均,bagging类型为主流,而非序列式(sequential)如boosting。现在的主流集成异常检测因此性能还是有限的,毕竟取多个模型的均值或者最大值是现阶段的可行方法。如果要做序列式或者要在集成过程中做评估,那就需要生成伪标签[16],这类方法现在依然是heuristic的,缺乏性能保证。如果要做stacking可能更为复杂,现在只有一些非常初步的探索[11]。
前文说了,异常检测往往是无监督学习,因此这些方法都是heuristic,一般缺乏性能保障。假设运气特别好,我们发现了一个有效的异常检测算法暂时不为性能担忧,那么就会自然的想「异常检测的规则是什么,如何解释」。据我所知现在关于可解释性的主流方法还是在局部空间或者contextual based 方法[17][18],也有提供直观图像的方法[19],也有通过找subspace的方法[20],通过找低维空间(或者特征)来解释的(其实也属于前面的方法)。大部分解释性主要是考虑如何调整特征使得一个异常点成为正常点,那么这就是决定因素。另外一种思路就是不如我们让人类帮着解释吧,这就进入了众包(crowd sourcing)和主动学习(active learning)的范围,让人类在修正错误预测的同时同时提供一定的解释[21],未来和HCI的交叉是大趋势。
在互动型异常检测(interactive)的范畴下,我们也可以把异常检测看做是一个排序问题(根据异常值/确定性的)排序,因此传统的排序算法也被引入了这个范围[22]。不难看出,这可以被看做是一个exploration和exploitation的问题,那么还可以考虑bandit的算法[23]比如UCB等等。
说到bandit问题,我们就会想到贝叶斯优化,这就引入了另一个问题,就是我们用贝叶斯做自动调参,能不能把这个方法应用在异常检测调参中呢?难点在于如何在无监督或者说半监督的范畴下达成这个目标,可能需要和前面提到的interactive或者active learning相结合。
另一个常见的问题就是异常特征随时间的变化,也就是在evolving data上的异常检测[24][25]。在更传统的机器学习领域,我们一般把这个叫做concept drift。
这些都是最纯粹的异常检测算法层面上的问题,拓展到文字[26]、结构数据、图像、时间序列[27]等不同的范畴上每个问题都又有大量的可做的内容,所以可以做的方向很多。
以我粗浅的了解,异常检测能做的方向很多,尽管大多都不容易啃,毕竟无监督、不平衡的假设太强了,正如前文我提到了可以把异常检测看做是一种「无监督或者弱监督下的非平衡数据多分类分体并要求一定的解释性」。现阶段无监督的各个方向已经有了很多探索,更大的机会可能在半监督/强化学习/弱监督上,毕竟监督学习的成本对于异常检测而言可能还是太高了一点。当然,这只是我的个人理解,有很强的主观性,请谨慎参考(且以防撞车)。
以上提到的所有文章(PDF)与参考均可以在GitHub的资料汇总Repo上找到,欢迎关注、订阅、Star:异常检测资源汇总
<hr/>
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-17 07:20 , Processed in 0.095885 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表