基于密度与分形维数的数据流聚类算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于密度与分形维数的数据流聚类算法
金建业;倪志伟;汪莎
【摘要】提出一种基于密度与分形维数的数据流聚类算法.采用在线/离线的两阶段框架,结合密度聚类和分形聚类的优点,克服传统数据流聚类算法的不足.针对数据流的时效性,在计算网格密度时对数据点使用衰减策略.实验结果表明,该算法能有效提高数据流聚类效率及聚类精度,且可以发现任意形状和距离非邻近的聚类.%Considering deficiencies of some popular data stream clustering algorithms, a data stream clustering algorithm based on density and fractal dimension is presented. It consists of two phases of online and offline processing, combined with the advantages of density clustering and fractal clustering. The deficiency of the traditional clustering algorithm is overcome. In the algorithm, a density decaying strategy to reflect the timelines of data stream is adopted. Experimental results show the algorithm improves the efficiency and accuracy of data stream clustering, and can find arbitrary shapes and non-neighboring clusters.
【期刊名称】《计算机工程》
【年(卷),期】2012(038)005
【总页数】3页(P38-40)
【关键词】数据流;聚类;分形维数;衰减系数;网格;网格密度
【作者】金建业;倪志伟;汪莎
【作者单位】合肥工业大学管理学院;合肥工业大学过程优化与智能决策教育部重点实验室,合肥230009;合肥工业大学管理学院;合肥工业大学过程优化与智能决策教育部重点实验室,合肥230009;合肥工业大学管理学院;合肥工业大学过程优化与智能决策教育部重点实验室,合肥230009
【正文语种】中文
【中图分类】TP391.1
1 概述
随着信息技术的发展,许多领域中出现了连续到达、持续增长、动态演化的数据——数据流。
数据流聚类问题是近年来国际上一个新的研究热点,许多学者已经提出多种数据流聚类算法。
文献[1]提出解决数据流聚类的一个优秀的算法框架CluStream,它用2个阶段解决数据流的聚类问题,可以较好地解决数据流聚类问题中实时要求与聚类质量间的矛盾。
首先,用一个在线的微聚类过程对数据流初步聚类,并按照一定的时间跨度将聚类结果按金字塔时间结构存储,以便进行离线分析。
同时,用一个离线的宏聚类过程,根据用户的要求对宏观聚类过程的聚类结果进行再分析。
但它采用距离作为相似度度量,当被用于任意形状及高维数据流的聚类时往往表现不佳。
文献[2]提出的 DenStream 算法,对CluStream算法有很大改进,能够支持对有噪声的动态进化的数据流进行任意形状的聚类。
但由于采用全局一致的绝对密度作参数,使聚类结果对参数值的选取非常敏感。
文献[3]根据基于时空划分的思想,设计的概要数据结构在线生成算法,能够平衡概要数据结构的内存需求和内外存之间的 I/O次数。
文献[4]提出基于密度和网格的实时数据流聚类算法D-Stream,解决了对任意形状的数据流聚类问题,同时也适合高维数据流的聚类问题,但D-Stream算法是基于密度网格的,在处理网格边界点时往往
会出现问题:边界点被当作噪声或者被归入不正确的类中从而影响聚类质量。
文献[5]提出的SDstream聚类算法,具有发现任意形状聚类及增量聚类的特点,但同
样不能解决边界点的聚类问题。
文献[6]提出基于分形的数据流聚类算法FClustream,采用 CluStream算法的数据流聚类框架[1],包括 2个过程,其中
在线聚类过程采用分形维数作为聚类度量,通过判断数据流中数据点对各个聚类的分形维数的影响程度,对数据流进行聚类和发现噪声点。
但是初始聚类选取传统的聚类算法,聚类质量不好进而影响增量聚类阶段和离线过程的聚类;同时高维数据空间会导致网格数目急剧增加,从而无法处理高维数据。
文献[7]提出基于网格与
分形维数的聚类算法 GFDS,但初始网格粒度的选取对结果有较大影响,存在如何选取网格粒度的问题;同时高维数据会导致网格数目的急剧增加,从而无法处理高维数据。
针对文献[2,4,6-7]算法存在的问题,本文根据CluStream的两阶段框架,提出一
种基于密度与分形维数的数据流聚类算法(DF-Stream)。
2 基本概念
定义 1(分形) 如果一个数据集在所有的观察尺度下都具有自相似性,即一个数据集的部分有着与整体分布自相似的结构或属性,称这个数据集是分形。
定义 2(分形维数) 一个数据集的分形维数体现子数据集的固有特征。
它是描述分形集合不规则形和复杂性程度的度量。
对于一个在区间[r1,r2]内呈现统计自相似特征的数据集,其分形维数Dq定义如下:
其中,r是覆盖数据空间所用的网格边长;为第i个网格中的数据点数。
当 q=0时,D0是 Hausdorff分形维数;当 q向1取极限时,D1是信息维数;当q=2时,
D2是相关维数。
本文使用D2作为分形维数的尺度。
定义 3(数据流) 数据流是一系列数据记录X1,X2,…,Xk,…,它们到达的时间分别为
T1,T2,…,Tk,…,数据流中的每一个记录Xi是d维的,Xi=(xi1,xi2,…,xid)。
d维数
据空间S=S1×S2×…×Sd,其中,维 Si为第 i维空间,每一维 Si被分成n个部分,Si=Si1∪Si2∪…∪Sin,数据空间S被划分为nd个网格。
每一个数据
Xi=(xi1,xi2,…,xid)映射到网格g(x)中。
定义 4(网格索引) 为了满足对网格进行存储及分形维数的计算需要,本文引入整型Z-ordering[8]编码技术对最底层网格编址,该技术可以实现从低层网格所包含信
息到上层网格所包含信息的映射工作,即上层网格信息可由下层网格信息线性组合而成。
网格索引就是使用类似多维数组采用的内存索引方式建立的网格单元编址信息。
定义 5(网格存储结构) 算法中只存储最小非空网格的位置索引、网格内的数据点数、网格密度和最近一次接收数据的时间,这种基于网格索引的存储方式只需要存储非空网格的信息,可以大大减少需要维护的网格的数目、节省内存空间和降低时间复杂度,能够更好地进行高维数据聚类,避免高维数据引起的维数灾难。
由于数据流是持续到达的,非空网格的数目会动态增加,在算法中使用 C++中的 hash_map 容器存储非空网格的信息,非空网格的索引作为hash_map容器的键,其余信息
作为hash_map容器的值,其检索数据的时间复杂度为O(n)=C(C>1)。
该网格
存储结构比文献[6]根据文献[9]提出的SID算法构建的分形树有较低的时间复杂度。
定义 6(衰减系数) 每个数据点的权值与时间的关系利用一个衰减系数来确定,本文用f(t)=2−λt作为衰减系数,其中λ>0。
如果数据点x到达的时刻为tc,则它t
时刻的权值w(x,t)定义如下:
定义 7(网格密度) 对于一个网格 g,若其加入链表的时间为ti1,网格内包含数据
序列(Pi1,Pi2,…,Pin),(ti1,ti2,…,tin)分别对应每个数据点的到达时间,则g的密度W(g,t)定义为:
定义 8(网格平均密度) 设从开始时刻到时刻 t到达的数据流元素分别为x1,x2,…,xn,到达时刻分别为t1,t2,…,tn,则有定义 6和定义 7可得所有元素密度之和满足:W <;设此时hash_map容器中有 N个网格,则网格的平均密度不会超过D:
定义 9(密集网格与稀疏网格) 一个非空网格定义为一个四元组(c,w,n,td),其中,c 为网格的索引;w为网格的密度;n为网格中包含的数据点数;td为非空网格最
近一次接收新数据的时间。
对于给定的权值密度μ(0<μ<D),若w≥μ,则该网
格为密集网格;若0<w<μ,则该网格为稀疏网格。
定义10(删格策略) 由于衰减系数的作用,网格密度随时间变化。
有些密集网格长
期无新数据加入,会衰减成稀疏网格;反之,一些稀疏网格加入了新数据,有可能变为密集网格。
为进一步减少需要维护的网格数目,每隔△t扫描hash_map,删
除保存的系数网格单元。
3 算法描述
本文算法通过只存储非空网格的索引来大幅度减少需要维护的网格数量,降低算法的时间和空间复杂度;通过计算分形维数的变化聚类新到来的数据点,解决网格边界点可能被作为噪声或划入错误的类中的问题;同时采用数据点权值衰减策略来反映数据流的时效性,以便精确反映数据流的变化情况。
DF-Stream算法满足数据
流聚类条件,提高了算法的处理速度和精度,并能在噪声条件下发现任意形状的类,能够发现数据流中隐藏的模式。
DF-Stream算法主要分为初始聚类、在线聚类和离线处理3个过程。
3.1 初始聚类
把数据空间S(S内的数据点维数为d)每一维分成r份等长区间,得到由一定粒度
的多维网格构成的数据空间。
第1步初始化一个空的hash_map容器。
第2步如果数据流不为空,则读入新数据x=(x1,x2,…,xd)。
第3步将数据x映射到网格单元g,如果网格单元g不在hash_map中,则将其摘要信息插入hash_map容器;如果数据点到达时刻t等于△t的倍数,则从hash_map检测并剔除稀疏网格单元。
第4步到达的数据点数未达到设定值,转向第2步,反之转向第5步。
第5步用基于网格密度的方法进行初始聚类,得到聚类C1,C2,…,Ck。
分别对初始聚类计算其分形维数,第i个类的分形维数记为Fd(Ci)(i=1,2,…,k)。
3.2 增量聚类阶段
增量聚类阶段步骤如下:
第1步从内存调入一组数据集W。
第2步对于每一个点p∈W。
第3步对于每一个类i=1,2,…,k。
第4步Ci’=Ci∪{p}。
第5步计算Ci’的分形维数。
第6步在k个类中找到该点加入后使得原来类的维数变化最小的一个类记为ii,ii=min(|Fd(Ci’)–Fd(Ci)|)。
第7步如果|Fd(Ci’)–Fd(Ci)|小于给定的一个阈值 e,则认为该点属于ii,否则,认为该点为离群点。
如果完成 W中的所有数据点的聚类,就将流过的数据流的摘要信息和
C1,C2,…,Ck存储到磁盘,并按照CluStream算法提出的金字塔时间框架组织这些信息。
3.3 离线处理
离线阶段用户可以根据自己设定的参数和查询时间跨度,由存储在磁盘上的数据流
快照得到与设定的参数对应的挖掘结果和给定时间段内到达的数据点的聚类情况,实现对数据流变化的分析和再聚类。
4 实验结果与分析
算法实验所用的所有代码,均采用C++实现,实验环境是一台E7500的联想电脑,具有2 GB主存。
采用了UCI的KDD CUP 1999数据集,该数据集共有数据点4898431个。
KDD CUP 1999数据集共有23类,每一数据有41个属性。
其中,Normal、Neptune 和Smurf这3类最多,占总数据集的98%。
取出这3类作为实验数据,每一个类取31000条和300个离群点。
首先从每类中取出1000条数据进行初始化,然后模拟数据流环境,将剩下的90300条数据每秒500条的流速让 DF-Stream 算法计算。
把判断是否为离群点的阈值ε设置为0.01,把对
hash_map的扫描周期△t设为1 s。
本文算法的聚类结果与FCluStream的聚类结果如表1所示。
表1 DF-Stream与FCluStream聚类情况类名实际记录数聚类后记录数错分点
数DF-Stream FCluStream DF-Stream FCluStream Normal 31000 29548 34873 1452 0 Neptune 31000 33580 28953 0 2047 Smurf 31000 29872 29174 1128 1826 Outlier 300 300 300 0 0
从表1可以看出,DF-Stream共错分数据记录2580条,约占总点数的 2.8%,那么聚类准确率约为97.2%;FClu-Stream共错分数据记录3873条,约占总点数
的4.1%那么聚类准确率约为95.9%,从而证明了DF-Stream算法的有效性。
如图 1所示,随着流入的数据点数的增加,DF-Stream的聚类精度呈上升趋势。
因为随着时间的推移,数据点数越来越多,数据量越大越能体现出自相似性;同时采用了数据点权值衰减策略来反映数据流的时效性,有利于反映数据流的真实变化情况。
图1 DF-Stream聚类精度与数据点数的关系
5 结束语
本文算法结合数据流的特点,运用分形技术,通过计算数据点对聚类的分形维数的扰动进行聚类,并提出在线聚类过程和离线分析过程,用户可以通过这2种方式
分析数据流的聚类结果。
同时在在线聚类过程中,考虑数据流的时效性,在计算网格密度时引入衰减系数,能够更好地反映数据流的变化过程。
通过实验分析发现,算法表现出很好的时间特性,聚类结果会随着时间的推移表现得更好。
在数据集上的实验表明,DF-Stream算法是一种简单、高效的数据流聚类算法,适用于高维、海量的数据流。
以后的研究工作将会对算法做进一步的改进以提高计算的精确度和速度。
参考文献
[1]Charu C A,Philip S Y,Han Jiawei,et al.A Frame Work for Clustering Evolving Data Stream[C]//Proc.of the 29th International Conference on Very Large Data Bases.Berlin,Germany: [s.n.],2003.
[2]Cao Feng,Estery M,Qian Weining,et a1.Density-based Clustering over an Evolving Data Stream with Noise[C]//Proc.of the 2006 SIAM Conference on Data Mining.Bethesda,USA: [s.n.],2006.
[3]袁正午,袁松彪.基于时空划分的数据流挖掘[J].计算机工程,2010,36(7): 61-63.
[4]Chen Yixin,Li Tu.Density-based Clustering for Real-time Stream
Data[C]//Proc.of the 2007 KDD Conference on Data s Vegas,USA: [s.n.],2007.
[5]蔡春丽,王惠玲,孙延明.进化数据流中基于密度的聚类算法[J].计算机工
程,2009,35(9): 57-59.
[6]罗义钦,倪志伟.一种新的数据流分形聚类算法[J].计算机工程与应用,2010,46(6): 136-139.
[7]林国平,陈磊松.一种网格和分形维数的数据流聚类算法[J].郑州大学学
报,2009,41(2): 24-28.
[8]Yan Guanghui,Li Zhanhuai,Liu Yuan.The Practical Method of Fractal Dimensionality Reduction Based on Z-ordering Technique[C]//Proc.of the 2nd International Conference on Advanced Data Mining and Applications.Xi’an,China: [s.n.],2006.
[9]窦志彤,倪雄健.使用分形维数实现不同区域密度的聚类[J].计算机研究与发展,2004,41(5): 213-219.。