基于最近邻距离的孤立异常检测方法(iNNE) 异常检测 进阶篇

孤立森林(iForest)作为首个基于孤立机制的异常检测算法,近十年来在学术界和工业界获得了巨大反响,目前也有很多基于其的后续改进算法,运用于不同的场景中。本文将讨论我们研究组这几年来最成功的(大量实践证明效果最好的)一个提升版本算法 —— iNNE (Isolation‐based anomaly detection using nearest‐neighbor ensembles)。该算法作者包括孤立森林原作者陈开明教授和刘飞博士。原文链接: https://doi.org/10.1111/coin.12156

我们发现孤立森林在数值型数据上面临4大问题(孤立森林介绍可参考之前文章):

1.  iForest仅对Global Anomaly 敏感,即全局稀疏点敏感,不擅长处理局部的相对稀疏点 (Local Anomaly)。

2.  iForest不适用于特别高维的数据。由于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有被使用,导致算法可靠性降低。

3. iForest不善于找到和坐标轴平行的簇中的异常。这是因为每次建子树的时候都是按坐单个标轴进行分割,异常可能会藏在某个维度中数据分布比较密的地方。

4. iForest不适用于含有多个高密度分布区域的数据

为了解决以上问题,我们仍然借鉴数据数据孤立机制,并结合最近邻距离计算方法,开发出了算法iNNE (Isolation‐based anomaly detection using nearest‐neighbor ensembles)。该算法采用多维超球体切割数据空间来实现孤立机制,并考虑了数据局部分布特性即使用最近邻的距离比率来计算数据的异常指标。论文中公式和推导比较复杂,本文将采用浅显易懂(类似介绍iForest)的方式来阐述如何实现并运用该算法。

训练阶段和iForest类似,都是随机抽样来建模,训练数据可以和测试数据无关。

1. 从训练数据中随机选择Ψ个点样本点作为subsample,然后每个样本点都各自找到自己在其他(Ψ-1)个点样本点中离自己最近的点(俗称最近邻),以到该最近邻的距离为半径,自己为圆心画出Ψ个超球。(注明:画1维是线段,2维数据是圆形,3维是球体,超过3维的就是超球体)。

* 因为数据分布越密的地方取得的样本点也越多,所以这种以样本点画球的方法可以理解为,数据空间中数据点越密的地方画的球会越多而且体积越小,数据分布越稀疏的地方球越少且体积越大,也就是说半径越大的超球越容易被孤立。

2. 从训练数据中随机选择Ψ个点样本点继续按步骤1画超球,重复该步骤 t 次直到我们最后可以得到 t 组超球。每次样本点都是独立从所有原始数据中随机抽样产生。

* 该过程类似iForest建 t 棵 iTree。一组超球就是一个独立训练模型,因为我们训练了 t 组超球模型,所以这个方法是集成学习(ensemble learning).

测试阶段就很容易了,当把一个测试数据放进一组超球中的时候,评估过程如下:

1. 如果该测试数据不在任何一个超球的覆盖范围,那该测试数据的异常值就是1,直接当做孤立点了。

2. 如果该测试数据在某个超球Q的覆盖范围,首先记录超球Q的半径为q,之后再找到离超球Q最近的超球P,记录其半径为p,这个测试数据的异常值为 1 - p/q。

图1展示一组超球(Ψ=3),a和b为测试数据。由于a不在任何超球中,a的异常值为1。b的异常值则是 (1 - 绿色线段长度/蓝色线段长度)。蓝色线段为(包含测试点b的)超球Q的半径,绿色线段为超球P的半径(离超球Q最近的超球为超球P)。

图1: 使用一组超球来评估两个测试数据


按照该规则,把测试数据分别放进每组超球中进行评估,得出 t 个异常值,然后用他们的平均值做为最后的异常指标。其实异常值就是两个最近超球的半径比值组成,也就是俩个最近邻距离的比值。如果测试数据在某个大半径的超球内,且附近超球半径都比较小,则越容易被孤立,因此异常值也就高了。简而言之,该方法可以把局部密度分布比较稀疏的数据点找出来当做异常。

图2对比了iForest和iNNE在同一个数据集上的得到的异常值分布,可以看到对于三个不同密度分布的高斯球,iNNE都可以把这些球的边缘赋予更高的异常值。但是iForest则只能把最稀的高斯球赋予更高的异常值(树深度越浅则异常值越高)。因此iNNE可以有效的克服iForest无法查找局部异常的缺陷。


图2:对比iForest和iNNE在同一个数据集上的得到的异常值分布

关于iNNE的参数设置,t 可以取100或者200固定值,一般越大结果越稳定但是运行时间越长;Ψ则和iForest一样,需要根据不同的数据分布来调整,一般数据里面有多少个高密度区域就取多少,在很多数据上2,32或者128都可以达到很好的效果。

图3展示在不同Ψ的情况下,异常值的分布情况。该测试数据和训练数据一致,都是三个高斯球类似子图(B)分布。可以看到Ψ越大,分辨率越高,越多局部细节都可以展示出来,也就是说这三个高斯的周围的点都会被赋予更高的异常值。但是如果Ψ过高,则会把高斯内部的细微变化也展示出来,反而会把内部的一些正常点当成异常点。

图3Ψ对异常值的影响

iNNE的思想非常精妙,其对我们研究组后续的工作起到了很关键的奠基作用,并推动了孤立核(Isolation Kernel)的开发工作(1篇AAAI和3篇KDD)。之后我会陆续分享我们研究组最近几年关于孤立机制的其他学术前沿成果。

iNNE源码下载:https://github.com/zhuye88/iNNE

scikit-learn 风格: https://github.com/xhan97/innegithub.com/xhan97/inne

iNNE与其他算法在部分数据上的对比:https://bit.ly/3n2EzPO

同时pyod 中也收录了iNNE: https://github.com/yzhao062/pyodgithub.com/yzhao062/pyod

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

全文完,转载必须注明出处:  © Ye Zhu 2022

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容