一种基于聚类模型的高维数据流离群点检测方法

文档序号:10512245阅读:269来源:国知局
一种基于聚类模型的高维数据流离群点检测方法
【专利摘要】本发明属于数据挖掘算法在高维数据流处理领域的应用,特别涉及到一种基于聚类模型的高维数据流离群点检测方法。该方法首先通过样本数据流进行聚类,再分析聚类结果中每一个簇的特征维,在计算测试数据集属于哪个簇的时候,只计算与该簇特征维相关的属性,忽略吊冗余属性的计算,从而有效的降低了计算量。如果发现某个数据点不属于任何簇,该点将形成新的簇,如果某个簇长时间没有吸收新的数据点且该簇的数据点个数很少,那么该簇即是包含离群点的簇。本发明具有在高维数据流离群点检测时的效率和准确率都比传统的基于滑动窗口的离群点检测算法要高的技术效果。
【专利说明】
一种基于聚类模型的高维数据流离群点检测方法
技术领域
[0001] 本发明属于数据挖掘算法在高维数据流处理领域的应用,特别涉及到了一种基于 聚类模型的高维数据流离群点检测方法。
【背景技术】
[0002] 随着传感器网络的普及以及"大数据"时代的到来,越来越多的数据由传统的静态 数据向动态数据流的形式进行转变,这给基于静态数据的离群点检测方法带来了新的挑 战,尤其是在数据维度非常高的情况下。与静态数据相比,动态数据流具有海量性、实时性 和动态变化性的特点。
[0003]离群点检测也称为离群点挖掘,是数据流挖掘的重点之一,离群点检测的目的是 检测出数据集中的噪声点从而进行数据清理,或发现数据集中潜在的有意义的信息。离群 点检测的应用前景十分广阔,比如在计算机入侵检测系统、硬件故障检测、异常支付检测、 公共卫生领域中包括异常疾病爆发监测、公共安全突发事件监控等,同时在地震监测、异常 气候监控、生态系统失调检测等领域都有重要的应用价值。
[0004] 聚类分析的目的就是把数据集中的数据项分成一个或者多个簇,使得不同簇之间 的数据项的相似性很低,而同一簇内的数据项具有较大的相似性。随着硬件技术的快速发 展和相应软件系统的不断升级,对于各种数据的采集也都采取的是自动化获取的方式,并 且采集数据的量级也越来越大,不同数据项之间的相互关系错综复杂。通过聚类分析,能够 很好的从海量数据集中发掘信息的分布特点,为更好的使用这些数据进行知识发现打下了 扎实的基础。
[0005] 然而传统的聚类算法都是基于静态数据的,也就是说在聚类的过程中数据可以被 多次访问,但是如今许多应用场景产生的数据不仅数据量大、数据维度高而且这些数据伴 随着时间的到达迅速变化。如金融行业的股票交易数据、卫星通讯数据等,而这些数据很多 情况下是不允许被二次访问。因此在内存有限、动态增量的高维数据且只允许单遍数据访 问的情况下,传统数据聚类方法已经无法适应,因此高维数据流聚类方法受到相关研究人 员的高度关注。在高维空间数据集中,如何对数据流进行有效高质量高效率的聚类,从中挖 掘出有价值的信息具有重要的理论意义和现实价值。在高维数据流中,传统的基于滑动窗 口的离群点检测方法处理效率低,且基于欧式距离的相似度计算方法在高维数据集中显得 毫无意义。

【发明内容】

[0006] 针对上述存在问题或不足,为了能够高效准确的发现高维数据流中的离群点,并 实现既能降低高维数据流处理计算量又能准确的发现数据流中离群点。本发明提供了一种 基于聚类模型的高维数据流离群点检测方法。
[0007] 该方法具体包括如下步骤:
[0008] 步骤1、训练数据流处理,将训练数据集聚类分簇:
[0009] 根据数据项的属性将数据分簇,然后分析每个簇的特征维;如果某个簇没有特征 维,那么计算的时候该簇的所有维都要参与计算,然后将得到的每个簇的特征维存储在位 图中;
[0010] 特征维具体流程如下:
[0011] (1)假设在t〇时刻有| c |个簇,簇中每个数据点的维度是d,创建一个大小为| c | *d 的二维位图,用于记录所有簇的特征维,初始时位图中所有元素值为〇;
[0012] (2)遍历所有簇,对于任意一个簇Ci,计算该簇所有点在所有维度上的密度值,那 么I c |个簇一共有| c | *d个密度值;密度值计算方式是用该维度上最大值减去最小值后再除 以该簇数据点个数,密度值越小说明数据点在该维上越密集;
[0013] (3)在|(:|*(1个密度值中计算出密度值最小的|(:|*1^个值,其中0〈1^〈(1,密度值为0的 不参与计算;
[0014] 将位图中与对应最小密度值的维更新为1,所有簇的特征维就是对应所得位图中 值为1的维;
[0015] 步骤2、对待测试数据流进行离群点检测:
[0016] 当接收到新的数据点后,首先衰减所有簇,分裂达到条件的簇,然后合并重叠簇, 再检查当前簇的个数是否超过最大簇个数阈值K,超过阈值则合并相距最近的两个簇,标记 为活跃簇,直至当前簇的个数不超过K;然后计算数据流中每个数据点与当前所有簇之间的 距离,找到离该数据点最近的簇,并记录簇与簇之间最小距离阈值r2即mindist,如果r2小 于定义的数据点与簇最小距离阈值rl即radius,那么该数据点被该簇吸收并更新该簇时 间,否则以该点新建一个簇;
[0017] 所述分裂条件是簇中任意一个维度的直方图H(t)出现了两个或两个以上的显著 峰值;
[0018]步骤3、遍历所有簇,判断簇内个数:
[0019]记录每个簇最后一次吸收数据点的时间T和该簇中包含的数据点个数N;如果T与 当前时间差值大于时间阈值IV,并且数据点个数N小于最小数据点阈值Nmin,标记该簇为离 群点簇;
[0020] 步骤4、输出离群点:
[0021] 遍历所有在步骤3中标记为离群点簇,输出离群点,并删除离群簇。
[0022] 本发明通过首先对训练数据流进行聚类,分析聚类得到的各个簇的特征维,在判 断新到达的数据点属于哪个簇的时候只需要计算特征维忽略冗余维的计算从而有效的提 高了高维数据流处理速率。最终在判断离群点的时候只需找到那些在很长一段时间内簇中 数据点个数很少的簇即可,这些簇所包含的数据点即是离群点。
[0023] 本发明提供的基于聚类模型的离群点检测方法在高维数据流离群点检测中,通过 训练集计算所有簇的特征维,在判断新到达的数据点属于哪个簇的时候,只计算与该簇特 征维相关的维度,忽略掉冗余维的计算,有效的降低了冗余维对计算结果照成的误差,最终 通过查找所有簇中的离群簇来检测数据流中的离群点,无论是算法执行效率和离群点检测 的准确率都有较好的表现。
[0024] 综上所述,本发明具有在高维数据流离群点检测时的效率和准确率都比传统的基 于滑动窗口的离群点检测算法要高的技术效果。
【附图说明】
[0025]图1为本发明的数据预处理流程图;
[0026]图2为本发明的处理流程图;
[0027]图3为特征维表示示意图。
【具体实施方式】
[0028]以下结合说明书附图和【具体实施方式】对本发明的方法做进一步详细说明。应理解 这些实施例仅用于说明本发明而不用于限制本发明的范围。
[0029]算法执行前对一些具体化参数进行初始化,算法容忍最大簇的个数K,数据点与簇 最小距离阈值rl,簇与簇之间最小距离阈值r2(步骤2中mindist),判断离群簇时簇中最小 数据点个数m (步骤三中Nmin)和最大相距时间间隔t (步骤三中Tr)等。
[0030] 本发明的具体步骤包括:
[0031] 步骤1:如图1所示,数据预处理,将输入的训练集进行聚类,然后分析计算聚类得 到的每个簇的特征维,将特征维信息保存在二维位图中。
[0032] 首先为每个族建立一个直方图衰减结构(Fading Cluster Structure with Histogram,FCH),FCH=(FCl(t),FC2(t),W(t),H(t),BV(t)),其中FCl(t)是每维数据在时 亥Ijt根据衰减函数的累加和,FC2(t)是每维数据在时刻t根据衰减函数的平方和,衰减函数 为f( t) = e4t,包含N个数据点的簇的第j维的FC1 (t)和FC2 (t)计算公式如下:
[0035] W(t)是该簇中所有数据点在t时刻权值的和,其计算公式如下:
[0037] H(t)保存的是簇的直方图衰减数据,对于一个具有N个数据点且数据维度为d的 簇,它的每一维都有一个直方图,每个直方图有e个直方条,则第j维数据的第1个直方条的 值计算公式如下:
[0044] 其中left是簇中第j维数据值中的最小值,right是簇中第j维数据值中的最大值, r是每个直方条宽度,yn是数据t在第1个直方条中的权值。
[0045] 如图3特征维表示示意图所示,t时刻有η个簇,每个簇中数据点包含m个属性,即m 维数据。位图中值为1的表示该维是特征维。比如t时刻,Cluster_l的特征维为Dimension# 1、Dimens ion#3......和 Dimens ion#m,Clus ter_2 的特征维为Dimens ion#3〇
[0046] 步骤2:如图2所示,对待测试数据流进行离群点检测。当接收到新的数据点后,算 法首先会衰减所有簇,分裂达到分裂条件的簇,然后合并重叠簇,然后检查当前簇的个数是 否超过最大簇个数阈值K,超过阈值则合并相距最近的两个簇,标记为活跃簇,直至当前簇 的个数不超过K。然后从所有簇中找到离新到达的数据点最近的簇,并记录最近距离,如果 最近距离小于距离阈值rl,则新到达的数据点被该簇吸收,否则新到达的数据点形成新的 簇。再遍历所有簇,找到离群簇,输出离群簇中的离群点。
[0047] 具体如下:
[0048] 步骤201、输入一组数据点父1,父2,父3...^,准备开始;
[0049]步骤202、接收数据点Xi;
[0050]步骤203、衰减所有簇:
[0051 ]遍历所有簇,重新计算该簇的权值,权值计算公式为:
[0053 ] 删除权值小于最小权值阈值r emo ve_thr e sho 1 d的簇;
[0054] 步骤204、分裂达到分裂条件的簇:
[0055] 遍历所有活跃簇,检查每个簇中的衰减直方图,查看哪些簇达到了分裂点,分裂条 件是簇中任意一个维度的直方图H(t)出现了两个或两个以上的显著峰值;
[0056] 步骤205、合并重叠簇:
[0057]计算所有簇中任意两个簇之间的距离,如果两个簇之间的距离小于阈值merge_ threshold就合并这两个簇,其中簇与簇之间距离计算公式为:
[0059] 其中η是两个簇中特征维的个数总数,BV(t)是t时刻包含所有簇特征维的位图;
[0060] 步骤206、限制最大簇个数:
[0061] 如果当前簇集合中簇的总数超过了给定的最大阈值maximum_cluster,就合并簇 集合中最相似的两个簇,直到所有簇总数小于max imum_c 1 us t er;
[0062] 步骤207、标记活跃簇,检查所有簇:
[0063] 如果发现其中任意一个簇的权值大于活动簇权值阈值active_threshold,就将这 个簇记作活跃簇,小于活动簇权值阈值就将其记为非活动簇;
[0064] 步骤208、判断是否有新的簇出现:
[0065]如果有新的活动簇出现,则重新计算所有簇的特征值;
[0066]步骤209、计算新到达的数据点与所有簇之间的距离,找到离该点最近的簇并记录 与该簇的距离dist和该簇下标;
[0067] 步骤210、判断dist是否小于最小距离阈值:
[0068]如果dist大于最小距离阈值,则为数据点Xi,建立新的FCH,其中数据点与簇之间 距离计算公式为:
[0070]其中η是C簇中特征维的个数,BV(t)是t时刻包含所有簇特征维的位图;
[0071]如果dist小于最小距离阈值,新到达的数据点被该簇吸收;
[0072]步骤211、遍历所有簇,找到离群簇,输出离群簇中的离群点;
[0073]步骤212、等待新的数据点到达;
[0074]步骤213、判断数据流是否结束:
[0075]若没有结束,则跳转到211至202,继续等待新的数据点输入;
[0076]步骤214、如数据流结束则全部结束。
[0077]步骤3:查找离群簇
[0078] 遍历所有簇,记录每个簇最后一次吸收数据点的时间T和该簇中包含的数据点个 数N。如果T与当前时间差值大于时间阈值Tr并且数据点个数N小于最小数据点阈值?^,标 记该簇为离群点簇。
[0079] 步骤4:输出离群点
[0080] 遍历所有在上一步中标记为离群点簇的簇,输出离群簇中的数据点,输出完毕后 删除该离群簇。
[0081] 如上所述,本发明提供一种基于聚类模型的高维数据流离群点检测方法,通过对 训练数据流进行聚类,并分析聚类得到的簇的特征维,在计算后续数据流中数据点属于哪 个簇的时候只计算与特征维相关的维,忽略掉冗余维的计算,有效的减少了算法的计算量。 [0082]以上对本发明实施例所提供的一种基于聚类模型的高维数据流离群点检测方法 进行了详细介绍,以上说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领 域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综 上所述,本说明书内容不应理解为对本发明的限制。
【主权项】
1. 一种基于聚类模型的高维数据流离群点检测方法,具体包括如下步骤: 步骤1、训练数据流处理,将训练数据集聚类分簇: 根据数据项的属性将数据分簇,然后分析每个簇的特征维;如果某个簇没有特征维,那 么计算的时候该簇的所有维都要参与计算,然后将得到的每个簇的特征维存储在位图中; 特征维具体流程如下: (1) 假设在to时刻有| c |个簇,簇中每个数据点的维度是d,创建一个大小为| c | *d的二维 位图,用于记录所有簇的特征维,初始时位图中所有元素值为0; (2) 遍历所有簇,对于任意一个簇Ci,计算该簇所有点在所有维度上的密度值,那么|C 个簇一共有|c|*d个密度值;密度值计算方式是用该维度上最大值减去最小值后再除以该 簇数据点个数,密度值越小说明数据点在该维上越密集; (3) 在|(:|*(1个密度值中计算出密度值最小的|(:|*1^个值,其中0〈1^〈(1,密度值为0的不参 与计算; 将位图中与对应最小密度值的维更新为1,所有簇的特征维就是对应所得位图中值为1 的维; 步骤2、对待测试数据流进行离群点检测: 当接收到新的数据点后,首先衰减所有簇,分裂达到条件的簇,然后合并重叠簇,再检 查当前簇的个数是否超过最大簇个数阈值K,超过阈值则合并相距最近的两个簇,标记为活 跃簇,直至当前簇的个数不超过K;然后计算数据流中每个数据点与当前所有簇之间的距 离,找到离该数据点最近的簇,并记录簇与簇之间最小距离阈值r2即mindi St,如果r2小于 定义的数据点与簇最小距离阈值rl即radius,那么该数据点被该簇吸收并更新该簇时间, 否则以该点新建一个簇; 所述分裂条件是簇中任意一个维度的直方图H(t)出现了两个或两个以上的显著峰值; 步骤3、遍历所有簇,判断簇内个数: 记录每个簇最后一次吸收数据点的时间T和该簇中包含的数据点个数N;如果T与当前 时间差值大于时间阈值IV,并且数据点个数N小于最小数据点阈值Nmin,标记该簇为离群点 簇; 步骤4、输出尚群点: 遍历所有在步骤3中标记为离群点簇,输出离群点,并删除离群簇。2. 如权利要求1所述基于聚类模型的高维数据流离群点检测方法,其特征在于: 所述步骤1具体为: 首先为每个簇建立一个直方图衰减结构FCH,FCH= (FCl(t),FC2(t),W(t),H(t),BV (t)),其中FCl(t)是每维数据在时刻t根据衰减函数的累加和,FC2(t)是每维数据在时刻t 根据衰减函数的平方和,衰减函数为f(t)=e4t,包含N个数据点的簇的第j维的FCl(t)和 FC2(t)计算公式为:w(t)是该簇中所有数据点在t时刻权值的和,其计算公式为:H(t)保存的是簇的直方图衰减数据,对于一个具有N个数据点且数据维度为d的簇,它 的每一维都有一个直方图,每个直方图有e个直方条,则第j维数据的第1个直方条的值计算 公式为: 其中,left=m in(Xij) right=m ax(Xij)其中left是簇中第j维数据值中的最小值,right是簇中第j维数据值中的最大值,r是 每个直方条宽度,yn是数据Xi在第1个直方条中的权值; t时刻有η个簇,每个簇中数据点包含m个属性,即m维数据,位图中值为1的表示该维是 特征维,即t时刻,Cluster_l的特征维为Dimension#l、Dimension#3......和Dimension#m, Cluster_2 的特征维为 Dimension#3〇3.如权利要求1所述基于聚类模型的高维数据流离群点检测方法,其特征在于: 所述步骤2具体为: 步骤201、输入一组数据点XI,X2,X3….Xi,准备开始; 步骤202、接收数据点Xi; 步骤203、衰减所有簇: 遍历所有簇,重新计算该簇的权值,权值计算公式为:删除权值小于最小权值阈值r emo ve_thr e sho 1 d的簇; 步骤204、分裂达到分裂条件的簇: 遍历所有活跃簇,检查每个簇中的衰减直方图,查看哪些簇达到了分裂点,分裂条件是 簇中任意一个维度的直方图H(t)出现了两个或两个以上的显著峰值; 步骤205、合并重叠簇: 计算所有簇中任意两个簇之间的距离,如果两个簇之间的距离小于阈值merge_ threshold就合并这两个簇,其中簇与簇之间距离计算公式为:其中η是两个簇中特征维的个数总数,BV(t)是t时刻包含所有簇特征维的位图; 步骤206、限制最大簇个数: 如果当前簇集合中簇的总数超过了给定的最大阈值max imum_c lus ter,就合并簇集合 中最相似的两个簇,直到所有簇总数小于maximum_cluster; 步骤207、标记活跃簇,检查所有簇: 如果发现其中任意一个簇的权值大于活动簇权值阈值active_threshold,就将这个簇 记作活跃簇,小于活动簇权值阈值就将其记为非活动簇; 步骤208、判断是否有新的簇出现: 如果有新的活动簇出现,则重新计算所有簇的特征值; 步骤209、计算新到达的数据点与所有簇之间的距离,找到离该点最近的簇并记录与该 簇的距离dist和该簇下标; 步骤210、判断dist是否小于最小距离阈值: 如果d i s t大于最小距离阈值,则为数据点X i,建立新的F C Η,其中数据点与簇之间距离 计算公式为:其中η是C簇中特征维的个数,BV(t)是t时刻包含所有簇特征维的位图; 如果dist小于最小距离阈值,新到达的数据点被该簇吸收; 步骤211、遍历所有簇,找到离群簇,输出离群簇中的离群点; 步骤212、等待新的数据点到达; 步骤213、判断数据流是否结束: 若没有结束,则跳转到211至202,继续等待新的数据点输入; 步骤214、如数据流结束则全部结束。
【文档编号】G06F17/30GK105868266SQ201610055727
【公开日】2016年8月17日
【申请日】2016年1月27日
【发明人】罗光春, 陈爱国, 段贵多, 邓璇
【申请人】电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1