引用:李倩, 韩斌, 汪旭祥. 基于模糊孤立森林算法的多维数据异常检测方法[J]. 计算机与数字工程, 2020, 48(4): 862-866.

摘要:针对孤立森林算法在进行异常检测时,忽略了每一条数据对于所选取的属性异常程度是不同的这一问题,提出了一种基于模糊孤立森林算法的数据异常检测方法。通过挑选一些有价值的属性对其分别建树组成孤立森林,从多维度出发,对每一维属性的检测结果进行隶属度判断,最后与模糊矩阵进行模糊运算得到最终评价结果。采用这一方法有效地解决了样本数据对于每一属性的异常程度不同的问题,并在实际校园一卡通消费数据的实验中得到了验证。

关键词:数据挖掘;异常检测;孤立森林;模糊综合评价

1引言

所谓异常,即为一种具有不同数据特征的数据模式,该模式有别于正常情况,基于这种异常情况的研究与分析就称之为异常检测技术[1~4]。近年来,国内外研究学者不断研究探索提出了许多异常检测的算法,主要包括基于统计的模型,基于距离的模型,基于线性变换的模型,基于非线性变换的模型等。丁洁等[5]提出了一种基于相关系数的异常行为检测方法,该方法借助于自相关系数,研究并实现了基于自相关模型的异常行为自动检测系统,拥有较强的扩展性。文献[6]结合基于成分分裂的增量学习方法,采用局部贝叶斯模型选择方法进行高斯混合模型训练。提出了一种基于高斯混合模型的异常检测算法(LVBGMMS)该算法针对EM 算法以及贝叶斯模型选择方法的弊端进行改进。李海林等[7]提出一种基于频繁模式发现的异常检测方法,利用符号化的时间序列找出原有序列中的频繁模式,最后根据最长公共子序列匹配方法度量频繁模式与当前新增加时间序列数据之间的相似度,找出新增数据的异常模式,解决了传统异常片段检测方法在处理增量式时间序列时效率低下的问题。然而上述的这些方法大都基于正常模型,是针对正常数据的一种优化方法,因此,存在一定的误报情况,即将正常数据识别为异常数据或不能全部识别出异常数据。孤立森林算法由文献[8]首次提出,该算法是由大量的树组成,这里称作iTree,最后的结果则是综合各个iTree的结果。然而iTree树又有别于决策树,就是一个完全随机的过程,因此构建的过程也较为简单。与所有现有方法基本不同,孤立森林算法[9]是纯粹基于孤立的概念检测异常,而不依赖于任何距离或密度度量,放弃了对正常数据建模的过程,通过构建的iTree树显示地找出异常数据,并通过限制树的深度来提高算法效率。由于在使用孤立森林算法[10~11]时大部分的训练样本是不需要被孤立的,并且能够在不隔离所有正常点的情况下使用部分模型,因此利用一个小样本容量的数据集就可以构建模型。然而对于待测的样本而言,在检测过程中需要遍历森林中的每一棵树,得到一个平均路径的长度,再进行异常分数值的计算,但由于每次都是随机选取属性进行建树的,而每个样本数据对于随机选取的属性的异常程度又是不同的,所以显然这种做法存在一些问题。基于上述问题,本文在孤立森林算法中引入了隶属度函数的概念,利用模糊综合评价的方法对待测数据进行综合评判,提出了一种基于模糊孤立森林算法的多维数据异常检测方法。该方法通过挑选一些有价值的属性对其分别建树组成孤立森林,再对每一维属性的检测结果进行隶属度判断,并与模糊矩阵进行模糊运算得到最终评价结果,最后通过对实际校园一卡通的异常检测实验,验证了其有效性。

2 模糊孤立森林算法

2.1 孤立森林算法

利用孤立森林算法进行异常检测分为两个阶段[12]:第一个训练阶段,使用训练集的子样本构建隔离树;第二个测试阶段,通过隔离树传递测试实例,以获得每个测试样本的异常值。

1)训练阶段

在训练阶段,通过递归地划分给定的训练集,直到实例被孤立或达到一个特定的树高,从而得到部分模型。树的高度限制I 是随机的,按次抽样大小设置大约是树的平均高度即I=ceiling(log2),然而我们只研究低于平均值的数据点,因为这些点更有可能是异常的。假设从n 个样本数据的数据集,从数据集中无放回抽样得到个数据样本X={x1,…,xn},并且服从M变量分布,构建一棵iTree时,在样本中选择一个特征值,在其最值区间选择一个属性q 和一个分割p,递归地划分X,直到满足下列终止条件:(1)树的高度达到限制值(从算法效率角度出发,iTree在算法里限制了高度为log2(n));(2)| X | = 1;(3)样本X中所有的数据相同;不断循环上述方法,随机选择的不同样本训练得到多个iTree树,训练阶段就完成了,即可对待测数据进行预测。

2)预测阶段

将测试数据x 从根节点穿过iTree进行遍历,直到达到叶子节点,其中遍历过程中的路径长度记作h(x),即从根节点,经过中间节点,到达叶子节点的边数。由于iTrees与二叉树或BST有一个等价的结构,因此外部节点终止的平均高度h(x)的估计值与在BST中搜索失败的值相同,我们可以借鉴BST的分析方法来估计其平均路径长度。BST中不成功搜索的路径长度为

其中H(k)是谐波数可以被一个估计值表示,即H(k)=ln(k)+ξ,ξ为欧拉常数,为0.5772156649。

由于c(n)是给定n 的路径长度的平均值,我们用它来规范h(x)。则我们定义测试数据的异常分数为

2.2 模糊孤立森林算法

模糊综合评价[13~14]是一种基于模糊数学的综合评价方法,具体来说,模糊综合评判就是利用模糊数学以及模糊关系合成原理,将一些难以量化表达、难以确定边界的因素以定量的形式表达出来,因此可以从多角度对待评价的事物进行隶属等级情况的综合评判。在本文中用该方法对孤立森林算法进行了优化,即对孤立森林的异常检测分数值不进行异常判断,而是将孤立森林算法检测结果进行隶属度判断再利用算子与模糊矩阵进行模糊计算得到最终评价结果。模糊综合评价的具体步骤如下:

1)确定评价对象的因素集U,ui为评价因素,m为评价因素的个数:

2)确定评价因素的评语集合V,vi为各种可能的评价结果,n 为评价结果的总个数:

3)进行单因素评价。一般来说,为了研究评价对象与评语集合V 的隶属关系,在构造了等级模糊子集后,需要对因素集里的每一个因素ui定量化,即从单因素的角度对各等级的模糊子集做隶属度判断。本文采用的是专家估计法,由专家根据评判等级对评价对象进行打分,最后统计打分结果,并组成模糊关系矩阵:

其中模糊向量rij(i=1,2,…,m,j=1,2,…n)表示某个待评价对象的因素集U中评价因素ui对评语集合V中,各种可能的评价结果vj的隶属程度。即利用rij来描述一个评价对象在某个因素ui的表现。

4)确定评价因素的模糊隶属度[16~17]。由于各因素在综合评价中的重要程度不同,需要对每一个因素ui进行一个隶属度的判断,并组成一个集合T记作ti(i=1,2,…,m)且ti ³ 0 ,åti = 1,T 就表示所有单因素的隶属度组成的一个模糊集合。本文将采用孤立森林算法的异常分数值,经归一化后得到的值S'作为模糊集合的值,即

5)多因素模糊评价[17~18]。利用 M (×Å) 算子将模糊集合T 与模糊关系矩阵R 进行计算,得到各待评价对象的模糊综合评价结果向量B:

6)模糊综合评价结果分析。将等级看作一种相对位置,并用秩表示,通常为“1,2,3,…,m”,使其连续化。最后利用向量B 中对应的分量与对应分量所对应的各等级的秩进行求和,从而得到待评价对象的相对位置:

其中,k 为待定系数(k=1或2)目的是防止bj较大时对结果产生影响。

3 实验

3.1 实验数据

本文的实验数据采用的是实际校园一卡通的消费数据,该数据记录了2017年8月至12月校园一卡通的消费情况,共计1136653条。其中,包含了学生和教职工的学号/工号、一卡通号,以及在校使用一卡通卡消费时的时间、地点、每一次的消费金额、交易计数、收支功能、设备ID、设备流水以及期初余额和期末余额等信息。由于本次实验是针对学生展开的,所以在异常检测之前对原始数据进行了预处理,去掉了一些无关信息,例如教职工工号、设备流水等。同时,又利用统计学增加了一些学生在校的消费情况统计,最后提取出一些有价值的属性对其分别建树,具体的实验基本步骤如下:

1)第一步:创建iForest;

2)第二步:计算所有待测样本的异常分数值;

3)第三步:利用模糊孤立森林算法进行模糊综合评价;

4)第四步:实验验证。

孤立森林算法有两个输入参数分别为子采样大小Ψ和树的数目t。其中,子采样大小Ψ控制训练数据的大小,因为当Ψ无限增加时,会增加处理时间并且需要更大的内存,并不能获得较好的检测性能,因此当取样度较小时,孤立方法效果最好,本文采用Ψ=100作为实验值。树t 的数量控制集成的大小,因为路径长度通常会在t = 100之前收敛,所以本文使用t = 100作为实验值。对于孤立森林算法中二叉树划分的阈值本文则选取的是每组数据的均方差。

3.2 数据异常影响因素指标

对一卡通数据异常进行模糊综合评判[19],主要考虑两个方面:判断数据是否存在异常的评价因素,即判断某一学生在校期间是否存在异常行为的评价因素和产生异常的程度。本文主要以经过孤立森林算法处理后的六个方面的学生消费行为为主要评价因素,建立在校学生产生异常行为的指标体系,异常程度也根据实际情况分为四大类。评价指标如图1。由此可见,评价因素集U 为U={单次消费金额,日消费总额,周消费方差,月消费方差,日正常教学活动期间消费频次,日早晨八点前消费频次},评价因素的评语集V 为V={特别异常,异常,较为异常,正常},分配给各等级的秩为{4,3,2,1}。通过对办公室老师以及任课老师的调查问卷的统计和归一化后,我们得到的模糊矩阵为

3.3 实验验证

通过实验,我们得到了实际校园一卡通数据的模糊综合评价的结果,并对结果进行了降序排序,根据结果分布情况按照比例分配,将前10%判断为特别异常,35%为异常,45%为较为异常,10%为正常,如图2所示。为了验证本文所提出的模糊孤立森林异常检测算法的准确性,随机抽取了一百位学生进行回访调查,根据了解有的学生因为身体的原因需要在校看病买药所以导致了单次消费过高,有的学生确实存在逃课的行为,有的学生不爱吃早饭因此每天早晨八点前消费次数较少,有的学生已经申请了走读所以在校的消费行为较少。由此根据调查结果的统计情况,计算出本文所提的算法准确率为90%,达到了不错的检测效果。

4 结语

针对原有的孤立森林算法采用的是随机选取属性的方法进行建树,最后综合各个树的结果进行异常判断,而忽略了每一条数据对于所选取的属性异常程度是不同的这一问题。本文提出了一种基于模糊孤立森林的异常检测方法,在原有的基础上引入了模糊的概念。利用隶属度函数,从多维度出发,将数据相对于属性的隶属度考虑进去,对孤立森林的结果进行了隶属度的判断,最后与由评价对象和评语集的隶属度关系组成的模糊矩阵进行模糊计算,得到一个综合评价的结果。该方法从多角度对待测样本进行了一个模糊综合评判,使得检测的标准更加的全面、更加的合理化,检测的结果更加准确,因此达到了较好的实验效果。

在envi做随机森林_基于模糊孤立森林算法的多维数据异常检测方法相关推荐

  1. lisp+等高线点线矛盾检查_基于AutoCAD平台地形图高程点与等高线点线矛盾检测方法研究与实现...

    2019 年 6 月 测绘与空间地理信息 GEOMATICS & SPATIAL INFORMATION TECHNOLOGY Vol.42 ꎬ No.6 Jun. ꎬ 2019 收稿日期 : ...

  2. 电厂运维的cis数据_基于IEC标准的变电站监控运维数据建模的研究

    基于 IEC 标准的变电站监控运维数据建模的研究 李响 1 ,陈浩敏 2 ,陈波 2 ,习伟 2 ,郑小华 3 [摘 要] 摘要:提出了一种基于 IEC 61970 标准的变电站监控运维数据的建模 方 ...

  3. matlab threshold算法_控制与应用技术|基于模糊滑模算法的永磁同步电机无位置传感器矢量控制...

    点击 电机与控制应用 可订阅哦~ A  bstract 针对传统超螺旋算法二阶滑模观测器(STASSMO)在进行永磁同步电机(PMSM)转子位置和转速估算时固定滑模增益导致鲁棒性差的问题,在已有的稳定 ...

  4. python小波分析法检测火焰_一种基于小波分析的网络流量异常检测方法

    一种基于小波分析的网络流量异常检测方法 杜臻 ; 马立鹏 ; 孙国梓 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2019(046)008 [摘要] 对大量网络流量数据进行高质 ...

  5. 《异常检测——从经典算法到深度学习》8 Donut: 基于 VAE 的 Web 应用周期性 KPI 无监督异常检测

    <异常检测--从经典算法到深度学习> 0 概论 1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法 3 基于One-Class SVM的异常检测算法 4 基于高斯概率密度异常检测 ...

  6. 异常检测方法——DBSCAN、孤立森林、OneClassSVM、LOF、同比环比、正态分布、箱线图

    异常检测方法 基于时间序列分析 同比环比 基于统计 单特征且符合正态分布 基于统计 箱线图 基于聚类 DBSCAN 基于树模型 孤立森林 基于线性模型 OneClassSVM 基于密度 LOF 异常检 ...

  7. 论文阅读笔记——基于CNN-GAP可解释性模型的软件源码漏洞检测方法

    本论文相关内容 论文下载地址--Engineering Village 论文阅读笔记--基于CNN-GAP可解释性模型的软件源码漏洞检测方法 文章目录 本论文相关内容 前言 基于CNN-GAP可解释性 ...

  8. 基于深度学习的日志数据异常检测

    基于深度学习的日志数据异常检测 数据对象 智能运维(AIOps)是通过机器学习等算法分析来自于多种运维工具和设备的大规模数据.智能运维的分析数据对象多源运维数据包括系统运行时数据和历史记录数据,历史记 ...

  9. Self-Attentive 基于自注意力分类的非结构化日志异常检测

    原文:Self-Attentive Classification-Based Anomaly Detection in Unstructured Logs 理解:使用目标数据集和辅助数据集训练,使目标 ...

最新文章

  1. 麻省理工研究:深度图像分类器,居然还会过度解读
  2. RabbitMQ交换机简介
  3. java thread 几个状态_Java-Thread 线程的几种状态
  4. Flutter Duration详细概述
  5. Rabbitmq工作笔记009---access to vhost ‘/‘ refused for user 权限问题
  6. OpenSift源代码编译过程记录
  7. 通信原理几种调制方式
  8. 网线制作实验相关内容
  9. taptap(fake)
  10. mysql 怎样更新数据库_MySQL数据库更新语句update使用详解
  11. html格式如何转换mp4视频,html怎样用格式工厂转换成mp4
  12. 学习phyton的基础知识
  13. Visio方向键无法移动对象的解决办法[笔记本版]
  14. R语言学习笔记(二)——回归分析
  15. Windows 下的 Vim 编程
  16. 关于lightroom 安装出现乱码问题
  17. iOS7初体验(1)——第一个应用程序HelloWorld
  18. 日报写作规范_写作验收标准的验收标准
  19. GHOST系统封装教程 系统封装工具 XP系统封装(一)
  20. win10系统安装时循环快速上手

热门文章

  1. MPEG-PCC基于几何点云压缩(G-PCC codec description v12)学习笔记
  2. Mint infinite-scroll上下滑动翻页
  3. Python 环境搭建(Win 安装以及Mac OS 安装)
  4. 如何把GA的网站热力图统计追踪配置接入到网站里呢?
  5. 在京东,刘强东没有“兄弟” 1
  6. PreparedStatement和Statement的区别和效率
  7. 《乔布斯传》经典摘录(四)
  8. IE下按钮超链接无法跳转
  9. excel2016中怎么开启宏?excel2016开启宏的步骤
  10. java-for循环嵌套+if语句画星星带留空三角形