0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全面剖析用于人工智能isolation_forest算法技术

lviY_AI_shequ 来源:互联网 作者:丁德辉 2017-11-25 07:01 次阅读

随着机器学习近年来的流行,尤其是深度学习的火热。机器学习算法在很多领域的应用越来越普遍。最近,作者在一家广告公司做广告点击反作弊算法研究工作。想到了异常检测算法,并且上网调研发现有一个算法非常火爆,那就是本文要介绍的算法 Isolation Forest,简称 iForest 。

南大周志华老师的团队在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结。

iTree的构造

提到森林,自然少不了树,毕竟森林都是由树构成的,那么我们在看Isolation Forest(简称iForest)前,我们先来看看Isolation-Tree(简称iTree)是怎么构成的,iTree是一种随机二叉树,每个节点要么有两个女儿,要么就是叶子节点,一个孩子都没有。给定一堆数据集D,这里D的所有属性都是连续型的变量,iTree的构成过程如下:

  1. 随机选择一个属性Attr;

  2. 随机选择该属性的一个值Value;

  3. 根据Attr对每条记录进行分类,把Attr小于Value的记录放在左女儿,把大于等于Value的记录放在右孩子;

  4. 然后递归的构造左女儿和右女儿,直到满足以下条件:

  • 传入的数据集只有一条记录或者多条一样的记录;

  • 树的高度达到了限定高度;

iTree构建好了后,就可以对数据进行预测啦,预测的过程就是把测试记录在iTree上走一下,看测试记录落在哪个叶子节点。iTree能有效检测异常的假设是:异常点一般都是非常稀有的,在iTree中会很快被划分到叶子节点,因此可以用叶子节点到根节点的路径h(x)长度来判断一条记录x是否是异常点;对于一个包含n条记录的数据集,其构造的树的高度最小值为log(n),最大值为n-1,论文提到说用log(n)和n-1归一化不能保证有界和不方便比较,用一个稍微复杂一点的归一化公式:

s(x,n)就是记录x在由n个样本的训练数据构成的iTree的异常指数,s(x,n)取值范围为[0,1]异常情况的判断分以下几种情况:

  1. 越接近1表示是异常点的可能性高;

  2. 越接近0表示是正常点的可能性比较高;

  3. 如果大部分的训练样本的s(x,n)都接近于0.5,整个数据没有明显的异常。

由于是随机选属性,随机选属性值,一棵树这么随便搞肯定是不靠谱,但是把多棵树结合起来就变强大了;

iForest的构造

iTree搞明白了,我们现在来看看iForest是怎么构造的,给定一个包含n条记录的数据集D,如何构造一个iForest。iForest和Random Forest的方法有些类似,都是随机采样一部分数据集去构造每一棵树,保证不同树之间的差异性,不过iForest与RF不同,采样的数据量Psi不需要等于n,可以远远小于n,论文中提到采样大小超过256效果就提升不大了,并且越大还会造成计算时间的上的浪费,为什么不像其他算法一样,数据越多效果越好呢,可以看看下面这两个个图:

左边是原始数据,右边是采样了数据,蓝色是正常样本,红色是异常样本。可以看到,在采样之前,正常样本和异常样本出现重叠,因此很难分开,但我们采样之和,异常样本和正常样本可以明显的分开。

除了限制采样大小Ψ以外,我们还要给每棵iTree设置最大高度为l=ceilng(log2Ψ),这是因为异常数据记录都比较少,其路径长度也比较低,而我们也只需要把正常记录和异常记录区分开来,因此只需要关心低于平均高度的部分就好,这样算法效率更高,不过这样调整了后,后面可以看到计算h(x)需要一点点改进,先看iForest的伪代码:

IForest构造好后,对测试进行预测时,需要进行综合每棵树的结果,于是

E(h(x))表示记录x在每棵树的高度均值,另外h(x)计算需要改进,在生成叶节点时,算法记录了叶节点包含的记录数量,这时候要用这个数量Size估计一下平均高度,h(x)的计算方法如下:

对高维数据的处理

在处理高维数据时,可以对算法进行改进,采样之后并不是把所有的属性都用上,而是用峰度系数Kurtosis挑选一些有价值的属性,再进行iTree的构造,这跟随机森林就更像了,随机选记录,再随机选属性。

只使用正常样本

这个算法本质上是一个无监督学习,不需要数据的类标,有时候异常数据太少了,少到我们只舍得拿这几个异常样本进行测试,不能进行训练,论文提到只用正常样本构建IForest也是可行的,效果有降低,但也还不错,并可以通过适当调整采样大小来提高效果。

总结

  1. iForest具有线性时间复杂度。因为是ensemble的方法,所以可以用在含有海量数据的数据集上面。通常树的数量越多,算法越稳定。由于每棵树都是互相独立生成的,因此可以部署在大规模分布式系统上来加速运算。

  2. iForest不适用于特别高维的数据。由于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有被使用,导致算法可靠性降低。高维空间还可能存在大量噪音维度或无关维度(irrelevant attributes),影响树的构建。对这类数据,建议使用子空间异常检测(Subspace Anomaly Detection)技术。此外,切割平面默认是axis-parallel的,也可以随机生成各种角度的切割平面,详见“On Detecting Clustered Anomalies Using SCiForest”。

  3. iForest仅对Global Anomaly 敏感,即全局稀疏点敏感,不擅长处理局部的相对稀疏点 (Local Anomaly)。目前已有改进方法发表于PAKDD,详见“Improving iForest with Relative Mass”。

  4. iForest推动了重心估计(Mass Estimation)理论发展,目前在分类聚类和异常检测中都取得显著效果,发表于各大顶级数据挖掘会议和期刊(如SIGKDD,ICDM,ECML)。

注意

目前燕哥还没有发现有Java开源库实现了该算法。目前只有Python机器学习库scikit-learn的0.18版本对此算法进行了实现。而我的项目绝大多数都是Java实现的,因此我需要自己实现该算法。算法源码已实现并开源到我的GitHub上,读者可以下载源码并用IDEA集成开发环境直接打开项目,并运行测试程序以查看算法的检测效果。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1773

    文章

    43356

    浏览量

    230100

原文标题:Isolation Forest算法原理详解

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【大家】醍醐灌顶!!人工智能九问九答

    大家:醍醐灌顶!!人工智能九问九答中国自动化学会副理亊长兼秘书长王飞跃对《三联生活周刊》关于人工智能九个问题的回答。特别对图灵测试、奇点理论,公众对人工智能概念及技术的一些误解等进行了
    发表于 03-21 15:04

    人工智能是什么?

    的阶段。阻碍前行的因素很多,要攻克的技术难点也很多,但这些问题在人工智能领域的专家来看,技术的积累都只是时间问题,对人工智能技术做更进一步剖析
    发表于 09-16 15:40

    人工智能技术—AI

      人工智能技术的概念从出来到现在已经有很多年的历史了,其实所谓的人工智能技术本身就是一种模拟人类大脑的思考方式的一种技术,它的英文简称是AI技术,在西方国家,
    发表于 10-21 12:03

    人工智能传感技术

    人工智能传感技术,希望有兴趣的人共享
    发表于 06-03 09:03

    百度人工智能大神离职,人工智能的出路在哪?

    ,预计2017年产业规模达到295.9亿,2018年将达到381亿元。 之前看过一遍报道说到,人工智能已成为科技界的一颗“明星”。在刚刚闭幕的全国两会上,***工作报告提出要“全面实施战略性新兴产业
    发表于 03-23 17:00

    人工智能就业前景

    据相关招聘机构数据显示,2018年AI领域仍然是大部分资深技术人才转岗的首选目标,在人才最紧缺的前十大职位中,时下最火的大数据、人工智能算法类岗位占据半壁江山。据调查指出,2017年技术
    发表于 03-29 15:46

    “洗牌”当前 人工智能企业如何延续热度?

    在少数的企业身上,强者恒强、弱者淘汰的局面已经形成。此外,截然不同的是,上至***机构下至平民百姓,对当下的人工智能项目不再盲目追捧,而是提出异议和担忧。9月20日,知乎用户质疑科大讯飞翻译技术“造假
    发表于 11-07 11:49

    2018人工智能芯片技术白皮书 中文版

    Fellow编写完成。随着底层芯片技术的进步,人工智能算法也将获得更好的支持和更快的发展。而在这一过程中,人工智能本身也很有可能被用于研发新的芯片
    发表于 12-13 16:40

    人工智能技术算法设计指南

    手把手教你设计人工智能芯片及系统(全阶设计教程+AI芯片FPGA实现+开发板)详情链接:http://url.elecfans.com/u/c422a4bd15人工智能各种技术算法
    发表于 02-12 14:07

    人工智能医生未来或上线,人工智能医疗市场规模持续增长

    上岗?   能“读图”识别影像,还能“认字”读懂病历,甚至像医生一样“思考”,出具诊断报告,给出治疗建议……这不是科幻,人工智能医疗正从前沿技术转变为现实应用,“人工智能医生”离患者越来越近。   机构
    发表于 02-24 09:29

    人工智能:超越炒作

    ,而是使用人类推理作为提供更好服务或创造更好产品的指南。但是这有什么作用呢?我们来看看目前的方法。ML:解析,学习,确定或预测的算法作为人工智能的一个子集,机器学习使用统计技术使计算机无需明确编程即可
    发表于 05-29 10:46

    路径规划用到的人工智能技术

    路径规划用到的人工智能技术人工智能编程语言/数据结构与算法人工智能基础原理四 智能信息获取(简称爬虫) 与数据分析1、发起请求3、解
    发表于 07-20 06:53

    人工智能芯片是人工智能发展的

    ......无形之中,人工智能正以前所未有的发展速度渗透我们的日常生活。而作为人工智能的核心技术之一,人工智能芯片也向来备受关注。近几年,谷歌、苹果、微软、Facebook、英特尔、高
    发表于 07-27 07:02

    人工智能基本概念机器学习算法

    目录人工智能基本概念机器学习算法1. 决策树2. KNN3. KMEANS4. SVM5. 线性回归深度学习算法1. BP2. GANs3. CNN4. LSTM应用人工智能基本概念数
    发表于 09-06 08:21

    《移动终端人工智能技术与应用开发》人工智能的发展与AI技术的进步

    人工智能的发展是随着人类生活需要,产业需求不断提升的,其中人工智能的发展很大程度上受到了计算机算力的影响,随着数据处理量的增大,人工智能算法对算力的要求逐年增加,而且没过两年算力上升一倍,因此往往
    发表于 02-17 11:00