数据流聚类算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第27卷第2期通化师范学院学报Vol.27No.2 2006年3月JOURNAL OF TON GHUA TEACHERS’COLL EGE Mar.2006
数据流聚类算法研究①
赵法信1,刘俊岭2
(1.通化师范学院网络中心,吉林通化134002;2.沈阳建筑大学计算中心辽宁沈阳110004)
摘 要:数据流是一类新的数据对象,流挖掘是数据库领域的研究热点,有很大的应用前景.本文
首先综述了传统聚类算法的分类及其各自特点,并对它们进行了分析评价.然后结合流聚类分析的要
求,对目前最新的几个数据流聚类研究成果进行了分析,并对数据流聚类进一步的研究方向进行了讨
论.
关键词:数据挖掘;聚类分析;数据流;数据流聚类
中图分类号:TP311.13 文献标识码:A 文章编号:1008-7974(2006)02-0029-04
近年来,越来越多的应用产生数据流,它不同于传统的存储在磁盘上的静态的数据,而是一类新的数据对象,它是连续的、有序的、快速变化的、海量的数据[1].典型的数据流包括网络与道路交通监测系统的监测信息数据、电信部门的通话记录数据、由传感器传回的各种监测数据、股票交易所的股票价格信息数据以及环境温度的监测数据等.数据流分析是数据流研究的一个重要方向,目前的研究主要包括数据流聚类、分类、频繁模式以及数据流OLAP等[3][4][5].数据流本身的特点决定了数据流聚类与传统数据聚类的不同,本文根据数据流本身的特点分析了数据流对聚类的要求以及数据流聚类方面的最新研究成果,并对数据流聚类下一步的研究方向进行了讨论.
1 传统聚类分析
随着数据聚类的蓬勃发展,各种聚类算法相继提出,每一种算法都是针对不同的情况而设计的,在数据挖掘领域对聚类算法的要求主要有以下几个方面[2]:算法的可伸缩性、对所处理属性值的要求、对数据分布的适应性、最少的参数和确定参数值的领域知识、有效地识别噪声数据、对于输入顺序的敏感性、高维性、基于约束的聚类以及聚类结果的可解释性和可用性.许多聚类算法都是为特定的领域设计的,都有各自的特点和应用范围,因而任何聚类算法都不可能在每个标准上都优越于其它算法.传统的聚类算法主要分为基于划分的方法(如K-means[6])、基于层次的方法(如BIRCH[7])、基于密度的方法(如DB2 SCAN[8])、基于网格的方法(如CL IQU E[9])及基于模型的方法(如COBWEB[10]).本文对这些算法进行了研究,对它们的性能在以下几个方面进行了比较分析:
表1 聚类算法的比较
类别算法聚类
质量
可伸缩性聚类形状
输 入
敏感性
噪声处
理能力
数据
类型
基于划分K-means差球状是差数值
PAM差球状是好数值
CLARANS好球状是好数值基于层次A GN ES差球状不差数值
BIRCH好好球状是好数值
CURE好好任意不好数值
ROCK好好任意不好分类
Chameleon较好好任意不好数值基于密度DBSCAN好好任意不好数值
OPTICS好好任意不好数值
DENCLU E较好一般任意不好数值基于网格STIN G一般好任意不好数值
CL IQU E一般好任意不好数值
WaveCluster一般好任意不好数值基于模型COBWEB好差特定不好分类
CLASSIT好差特定不好数值
①收稿日期:2005-05-08
作者简介:赵法信(1974-),男,河南浚县人,硕士,通化师范学院工程师,主要研究领域为数据仓库与数据挖掘.
2 数据流聚类分析算法
数据流是数据点x1,x2,……,x n的一个有序的序列,它只能被按顺序访问,而且仅能被扫描一次或有限的几次[10].数据流是快速变化的,因而,流聚类算法要能够跟上流的速度并抓住流的特征;数据流是连续的,所以对数据流聚类要能随时间而不断地进行;数据流是海量而有序的,不可能保证存贮整个数据集,只能分析一定范围内的数据,因而要有效地利用有限的空间与时间.本文首先介绍了数据流聚类分析的特点,然后介绍了现有的流聚类算法,并对这些算法进行了分析与评价.
2.1 数据流聚类分析特点
数据流本身所具有的特征使得传统的聚类算法不可能(甚至不能)直接应用于数据流聚类.因而,与传统的聚类算法相比,数据流聚类算法还应当具有以下特点[1]:
①一遍扫描:在满足聚类要求的情况下,要尽可能少的扫描数据集,最好是一遍扫描;②有限的内存及存贮空间:由于数据流具有无限连续性,不可能存贮如此海量的数据,因而要对数据流进行概化或有选择的舍弃;③实时性:每一个记录的处理时间要尽可能的少,要能够跟上流的速度.
2.2 数据流聚类算法
目前,学术界对数据流的研究刚刚起步,数据流的聚类算法也处于初始阶段.现有的算法主要有数据流聚类理论与实践[11][12],通过数据流窗口维护方差和中值[13],聚类演变数据流的一个框架[14],用K平均聚类二进制数据流[15].这些都是基于划分的流聚类算法,下面将对这些算法进行介绍.
(1)数据流聚类理论与实践.
分而治之(divide-and-conquer)的策略可以解决流聚类的空间代价问题(小空间聚类),该算法的运行时间是O(n1+ε),使用O(nε)(0<ε<1)的内存并扫描一遍数据集.该聚类算法特点是一次扫描数据,并在限定的空间、时间内聚类.
分而治之算法思想如图1所示:首先将数据集S分为大小相等的n个不相交的片段x1,x2,...x n,然后将每个片段聚为k 个类,最后将各个片段的聚类结果(nk个带权重的中值点)聚成k个带权重的中值点,即k个类.
图1 分而治之思想示意图
分而治之思想在流聚类中的应用的基本算法:
①输入第一批m个点,将其聚为2k个中值点,每个点的权重是赋于它的点的个数;②重复上述过程直到已输入m2/(2k)个原始点,此时可以得到m个中值点;③将这m个第一层中值点聚类成2k个第二层中值点并处理;④通常,维护最多m个i层中值点,点数一达到m,就产生2k个i+1层的中值点;⑤当所有的数据都到达(或需要仅对截止到目前的所有点进行聚类)时,将所有中值点聚类为最后k个中值点.
(2)通过数据流窗口维护方差和k-Medians.利用滑动窗口解决数据流中的数据过时问题,并在滑动窗口中维护方差和k -Medians.该算法是一个在线维护聚类的算法,更能真实反映数据流的特征.
滑动窗口模型:设N为窗口的大小,那么始终只有来自于数据流的最后N个元素才被认为和查询相关.最近的N个元素被称为活动的数据元素,其余的元素被称为废弃元素(expired elements),且不能再用于回答查询或参与数据集统计.一旦一个数据元素已经被处理过就不再将其保存在内存里,在以后的时间里它就不能被重新获取用于进一步的计算.应注意的是,在要求存贮整个活动数据集的算法中不能使用此模型.
图2 数据流滑动窗口示意图
如图2所示,在这个模型中,滑动窗口大小为N,并将窗口N分为m个桶,B m3称之为后缀桶,它包含了在桶B m之后到达的所有元素的信息.后缀桶中的信息是在需要时临时计算的,无需在线维护.该算法通过在线维护不等式f(B i,i-1)>