当前位置:文档之家› 1基于网格的数据流聚类算法

1基于网格的数据流聚类算法

1基于网格的数据流聚类算法
1基于网格的数据流聚类算法

3)国家自然科学基金(60172012)。刘青宝 博士生,副教授,主要研究方向为数据仓库技术和数据挖掘;戴超凡 博士,副教授,主要研究方向为数据仓库技术和数据挖掘;邓 苏 博士,教授,主要研究方向指挥自动化、信息综合处理与辅助决策;张维明 博士生导师,教授,主要研究方向为军事信息系统、信息综合处理与辅助决策。

计算机科学2007Vol 134№13

 

基于网格的数据流聚类算法3)

刘青宝 戴超凡 邓 苏 张维明

(国防科学技术大学信息系统与管理学院 长沙410073)

 

摘 要 本文提出的基于网格的数据流聚类算法,克服了算法CluStream 对非球形的聚类效果不好等缺陷,不仅能在

噪声干扰下发现任意形状的类,而且有效地解决了聚类算法参数敏感和聚类结果无法区分密度差异等问题。关键词 聚类,数据流,聚类参数,相对密度 

G rid 2based Data Stream Clustering Algorithm

L IU Qing 2Bao DA I Chao 2Fan DEN G Su ZHAN G Wei 2Ming

(College of Information System and Management ,National University of Defense Technology ,Changsha 410073)

 

Abstract With strong ability for discovering arbitrary shape clusters and handling noise ,grid 2based data stream cluste 2ring algorithm efficiently resolves these problem of being very sensitive to the user 2defined parameters and difficult to distinguish the density distinction of clusters.K eyw ords Clustering ,Data stream ,Clustering parameter ,Relative density 随着计算机和传感器技术的发展和应用,数据流挖掘技术在国内外得到广泛研究。它在网络监控、证券交易分析、电信记录分析等方面有着巨大的应用前景。特别在军事应用中,为了获得及时的战场态势信息,大量使用了各种传感器,对这些传感器数据流的分析处理已显得极为重要。针对数据流数据持续到达,且速度快、规模大等特点,数据流挖掘技术的研究重点是设计高效的单遍数据集扫描算法[12]。数据流聚类问题一直是吸引许多研究者关注的热点问题,已提出多种一次性扫描的方法和算法,如文[1~4]等等,但它们的聚类结果通常是球形的,不能支持对任意形状类的聚类[5]。

本文提出的基于网格的数据流聚类算法,在有限内存条件下,以单遍扫描方式,不仅能在噪声干扰下发现任意形状的类,而且有效地解决了基于绝对密度聚类算法所存在的高密度聚类结果被包含在相连的低密度聚类结果中的问题。

本文第1节简要介绍数据流聚类相关研究,并引出基于网格的数据流聚类算法的思路及其与相关研究的异同;第2节给出基于网格的数据流聚类算法所使用到的基本概念;第3节给出一个完整的基于网格的数据流聚类算法,详细解析算法的执行过程;第4节进行算法性能分析对比;最后总结本文的主要工作和贡献,并指出需要进一步研究和改进的工作。

1 相关研究

在有限内存约束下,一般方法很难对数据流进行任意形状的聚类。第一个增量式聚类挖掘方法是文[6]提出的In 2crementalDBSCAN 算法,它是一个用于数据仓库环境(相对稳定的数据流)的有效聚类算法,可以在有噪声的数据集中发现任意形状的类。但是,它为了形成任意形状的类,必须用类中的所有点来表示,要求获得整个数据流的全局信息,这在内存有限情况下是难以做到的。而且,它采用全局一致的绝对

密度作参数,使得聚类结果对参数值非常敏感,设置的细微不同即可能导致差别很大的聚类结果。

Aggarwal 在2003年提出的一个解决数据流聚类问题的框架CluStream [1]。它使用了两个过程来处理数据流聚类问题:首先,使用一个在线的micro 2cluster 过程对数据流进行初级聚类,并按一定的时间跨度将micro 2cluster 的结果按一种称为pyramid time f rame 的结构储存下来。同时,使用另一个离线的macro 2cluster 过程,根据用户的具体要求对micro 2cluster 聚类的结果进行再分析。但它采用距离作为度量参数,聚类结果通常是球形的,不能支持对任意形状类的聚类。而且,它维护的是micro 2cluster 的聚类特征向量(CF 2x ;CF 1x ;CF 2t ;CF 1t ;n ),这在噪声情况下,会产生干扰误差。

2006年,Feng Cao 等人在文[5]中提出了针对动态进化数据流的DenStream 算法。它相对CluStream 有很大的改进,继承了IncrementalDBSCAN 基于密度的优点,能够支持对有噪声的动态进化(非稳定)的数据流进行任意形状的聚类。但由于采用全局一致的绝对密度作参数,使得聚类结果对参数值非常敏感。同时,与CluStream 算法相比,它只能提供对当前数据流的一种描述,不能反映用户指定时间窗内的流数据的变化情况。

朱蔚恒等在文[13]中提出的基于密度与空间的ACluS 2tream 聚类算法,通过引入有严格空间的意义聚类块,在对数据流进行初步聚类的同时,尽量保留数据的空间特性,有效克服了CluStream 算法不能支持对任意形状聚类的缺陷。但它在处理不属于已有聚类块的新数据点时,使用一种类似“抛硬币”的方法来猜测是否为该点创建一个新的聚类块,误差较大。而且它以绝对密度做参考,所以在聚类结果中无法区分密度等级不同的簇[7]。

本文提出的基于网格的数据流聚类算法GClustream

(Grid Based Data Stream Clustering Algorithm),借鉴算法CluStream的两阶段聚类思想和pyramid time f rame的快照储存结构,采用相对密度作为聚类参数,通过对数据空间进行网格化处理,提高了算法处理速度,并能在噪声干扰条件下发现任意形状的类,同时解决了基于绝对密度聚类算法所存在的高密度聚类结果被包含在相连的低密度聚类结果中的问题[7]。

2 基本概念

定义1 网格单元

在各维上定义一个单位格长,采用网格方式将n维空间划分为若干个网格单元。一个网格单元是n维空间中各个维上具有单位格长的n维超立方体,即以n维向量o为起点,向各维的正方向延伸单位格长所形成的一个区间,记为Grid (o)。

定义2 聚合块

由若干个网格单元组成的超立方体,称为聚合块,记为Cub(o, r),其中 r为聚合块的各维边长组成的向量。

采用衰变窗口模型[5],数据流上的数据对象,其权重随时间衰减,即w p(t c)=2-λ(t-t)

cp,其中λ表示衰减速度,t c表示当前时间,t P表示数据对象p到达时间。设数据流在时刻t0, t1,t2,…,t c到达的数据对象数n0,n1,n2,…,n c,则数据流的当前时刻t c权重W(t c)为

W(t c)=∑c j=0n j2-λ(t c-t j)

定义3 网格单元特征向量

设起点为o i的网格单元包含n个分别在时刻t i1,t i2,…, t in到达的数据对象p i1,p i2,…,p in,在t c时刻网格单元的特征向量记为(o i,F1,F2,w,t c),其中

F1=∑n j=1p ij2-λ(t c-t ij)

F2=∑n j=1p2ij2-λ(t c-t ij)

w=∑n j=12-λ(t c-t ij)

定义4 密集网格单元和候选密集网格单元

对于给定的密度阈值ξ(0<ξ<1),设网格单元的特征向量为(o i,F1,F2,w,t c)。若w>ξW(t c),则称该网格单元在t c 时刻为密集网格单元,记为D—Grid(o i);若0

定义5 密集聚合块

对于给定的密度阈值ξ(0<ξ<1),设聚合块的特征向量为(o i,F1,F2,w,t c, r),若有w>ξW(t c)∏r i,则称该聚合块在t c时刻为密集的。

3 基于网格的数据流聚类算法

借鉴算法CluStream的思路[1],基于相对网格的数据流聚类算法GCluStream分为两个阶段:在线的进程和离线的进程。记录当前数据流聚类特征的在线进程称为GMic2Clus2 ter,而离线的响应查询的进程称为GMac2Cluste。

3.1 G Mic2Cluster过程描述

在线进程GMic2Cluster的具体步骤如下:

(1)初始化

初始时,对每个新到来的数据对象,计算出其所在网格单元的特征向量。积累一定数量的数据对象后,区分密集网格单元集合和候选密集网格单元集合。

(2)加入数据对象

对新到的数据对象p,若它属于一个已存在的密集网格单元或候选密集网格单元,则修改该网格单元的特征向量为(o i,F1+p,F2+p2,w+1,t c)。否则,直接定位其所在的网格单元,计算该网格单元的特征向量,并把它加入到候选密集网格单元集合。

(3)生成密集聚合块

在连续数据流条件下,非密集网格单元通过新数据对象的不断聚集,可以转换为密集网格单元。在内存空间有限的条件下,随着密集网格单元的数目增大,须把相邻且密度相近的密集网格单元进行聚合,以节省空间消耗。同样,可把相邻且密度相近的聚合块聚合为更大的块。这一步的聚合条件是要求相邻、密度相近、同体积大小的两个密集网格单元或两个初级聚类块才能聚合。

(4)密集聚合块的切分

聚合块在新数据对象的不断加入下,可能导致内部密度失衡。在每次加入数据对象时,更新聚合块特征向量,并计算方差,判断失衡程度。当超过一定阈值δ,则从失衡程度最大、边长超过1的那一维进行居中切分,对切分形成的两个新聚合块或两个新网格单元进行特征向量分割计算。

(5)密集聚合块、密集网格单元的退化

由于引进了衰减因子2-λt,若没有新数据对象的加入,初级聚类块特征向量修改为(o i,F132-λΔt,F232-λΔt,w3 2-λΔt,t c, r),密集网格单元特征向量修改为(o i,F132-λΔt, F232-λΔt,w32-λΔt,t c),其中Δt为特征向量上次修改到当前修改的时间间隔。一旦密集聚合块特征向量(o i,F1,F2, w,t c, r)的w<=ξW(t c)∏r

i

,则让该密集聚合块“土崩瓦解”成若干个候选密集网格单元。而若密集网格单元特征向量(o i,F1,F2,w,t c)的w<=ξW(t c),则直接退化候选密集网格单元。

虽然特征向量中的w在不断衰减,但为了节省时间开销,只需每隔一定时间对无新添数据对象的密集聚合块和密集网格单元进行一次特征向量计算。该时间间隔Δt通过方程ξW(t c)2-λΔt+1=ξW(t c)计算可得:

Δt=1/λlog(ξw(t

c)/

ξw(t c)-1)

(6)候选网格单元的筛选

不断到来的数据对象,要是不能被现有的初级聚类块、密集网格单元和候选网格单元所吸收,则会产生大量的候选密集网格单元,因此必须把无潜力升级为密集网格单元的候选网格单元进行清除,以节省内存空间。筛选的策略为:对没有新数据对象加入的候选网格单元更新其特征向量;对所有候选网格单元按其特征向量中w值进行从大到小排序;对特征向量中w值较小的进行清除,直到满足内存要求。

(7)把密集聚合块和密集网格单元的特征向量写入磁盘

按一定的时间跨度将GMic2Cluster过程的内存结果:密集聚合块和密集网格单元的特征向量,写入磁盘,并按CluS2 tream算法提出的pyramid time f rame的策略组织这些结果。Pyramid time f rame是一种按时间来组织数据流的初步描述的策略,它保证了对一个用户定义的时间窗h,在当前时刻的2h窗口内至少存在一个snapshot。关于pyramid f rame的思想和具体做法可见文[1]。GCluStream同样采取pyramid

f rame结构储存数据。

3.2 G Mic2Cluster过程描述

GMic2Cluster得到的结果以pyramid time f rame结构储

存在磁盘上,然后根据用户查询参数:当前查询时刻t c

和查

询的时间窗宽度h,得到这两个不同时刻的快照结果:snap2 shot(t c)和snap shot( h),其中snap shot( h)是当前时刻的2h 窗口中最接近t c-h时刻的快照。比较两个快照,可以得出3个集合:{新增的密集网格单元}、{消失的密集网格单元}和{保持的密集网格单元},据此可以分析数据流的变化情况。

由于网格单元具有严格的空间意义,在密集网格单元集合上进行聚类的过程类似GMic2cluster过程的步骤(3),只是这时的聚合条件放宽为相邻的、密度相近的两个密集网格单元或两个密集聚类块进行聚合,不要求它们体积大小相同。

3.3 算法描述

先积累一段时间的数据流,然后形成密集网格单元集合Dset和候选密集网格单元集合Cset,并设置密集聚合块集合DCubset为空集。

GMic2Cluster(λ,ξ,δ,DS)

B EGIN

REPEA T

p=G et Point(DS);

object=Find GridorCub(piont);

{根据点的空间位置,搜索是否存在一个包含该点的密集网格单元或候选密集网格单元或密集聚合块}

IF object〈〉NULL T H EN

UpdateFV(object);

{修改此网格单元或所在聚合块的特征向量}

IF object∈DCubset T H EN

 CheckDensity(obj);

 {检查密集聚合块的密度情况,步骤(4)}

END IF;

 EL SE

C—grid=NewCGrid(p);

{创建新的候选网格单元}

Get FV(C—grid);

{计算其特征向量}

InsertSet(Cset,C—grid);

{插入到候选密集网格单元集合Cset}

END IF;

Δt=1/λlog(ξw(t

c)/

ξw(t c)-1);

IF(t c modΔt)==0T H EN

FOR each obj∈Dset OR object∈DCubset DO

CheckDensity(obj);

{检查密集聚合块和密集网格单元的退化情况,步骤(5)}

END FOR;

 END IF;

 IF内存不够T H EN

FOR each obj∈Dset OR object∈DCubset DO

Aggr(obj,δ);

{进行聚合,步骤(3),参数δ(0<δ<1),是判断两对象密度是否相近的阈值}

END FOR;

SortCompress(Cset);

{步骤(6)}

END IF;

 UN TIL数据流结束;

END GMic2Cluster。

4 算法分析

这里只对算法的在线处理部分进行分析。我们从处理时间和参数选择等两个主要指标分析本文提出的基于网格的数据流聚类算法GClustream。

4.1 处理时间对比

由于对数据空间采用了网格化处理,每当新数据对象到达,则可直接定位其所属网格单元,时间复杂度为常数1。而算法CluStream则要通过计算新数据对象到各子聚类中心的距离,并比较之后才能决定其所属的子聚类,其时间复杂度为O(N),其中N为子聚类的数量。

在聚合密集网格单元步骤中,判断两个密集网格单元是否可以合并,主要看它们是否相邻,即两者之间是否存在一个公共的超平面,具体判断如下:

设两个密集网格单元为D—Grid(o1)和D—Grid(o2),若向量O1O2=(0,0,…,1,…,0)或O1O2=(0,0,…,-1,…,0),则D—Grid(o1)与D—Grid(o2)是相邻的。所以,判断两个密集网格单元之间是否相邻,只需进行一次减法运算,时间复杂度为常数1。而算法CluStream判断两子聚类是否可以合并,则要计算各子聚类中心之间的距离,并进行比较之后才能决定,时间复杂度为O(N log N)。

4.2 参数选择分析

基于网格的数据流聚类算法GClustream采用了具有实际意义的参数λ、ξ、δ,用户能很好地理解。衰减因子λ反映了历史数据对象对当前聚类结果的影响程度,即λ取值越大,衰减越快,历史数据对象对当前聚类结果的影响越小;密度阈值ξ决定了对噪声的过滤程度,即ξ取值越小,则被过滤的背景噪声数据越少;相对密度阈值δ,反映了用户对密度分辨率的要求程度,δ取值越接近1,聚类结果中密度分辨率越高,结果中类的数目越多。

而CluStream算法的micro2cluster过程使用的是类似BRICH算法所使用的聚类特征值来记录它所产生的子聚类, BRICH算法的缺点必然也带入micro2cluster过程中。BRICH算法记录聚类特征值的方法对球型的聚类效果好,但对其他形状的聚类,BRICH不能很好地工作[9]。而且,micro2 cluster对新数据的处理,利用数据与最近子聚类中心的距离以及一个预定的距离阈值来判断数据是否属于该子聚类。这种处理方法与算法GClustream相比有3个缺陷:一是计算量大,这点前面已经分析;二是聚类结果不好,因为距离某一子聚类中心近的点不一定就属于该子聚类;三是预定的距离阈值参数难以确定。为了改进CluStream算法的缺陷,ACluS2 tream算法采用基于密度的聚类方法进行在线记录当前数据流的特征,但由于是以绝对密度作参数,在聚类结果中无法区分密度等级不同的簇。

小结 基于网格的数据流聚类算法GClustream通过对数据空间采用网格化处理,大大提高了算法处理速度,并能在噪声干扰条件下发现任意形状的类,同时解决了基于绝对密度聚类算法所存在的高密度聚类结果被包含在相连的低密度聚类结果中的问题。不过,针对高维数据空间数据流聚类问题,无论是基于绝对密度还是基于相对密度的方法,皆因高维空间中对象分布稀疏、噪声难以区分等特性而失效,必须采用适当的降维处理才能适用,这将是我们下一步研究的方向。 (下转第180页)

4

McDermott D.PDDL 2t he planning domain definition language :[Technical Report ].CVC TR 2982003/DCS TR 21165.Yale Center for Computational Vision and Control ,1998

5

Fox M ,Long D.PDDL2.1:An extension to PDDL for expressing temporal planning domains.J Artificial Intelligence Res ,2003,20:61~124

6

Edelkamp S ,Hoff mann J.PDDL2.2:The language for t he Classic Part of t he 4t h International Planning Competition :[T.R.no.195].Institut f ¨ur Informatik ,Freiburg ,Germany ,2004

7

Hoff mann J ,Edelkamp S ,Englert R ,et al.Towards Realistic Benchmarks for Planning :t he Domains U sed in t he Classical Part of IPC 242Extended Abstract 1In :Proceedings of t he 4t h Interna 2tional Planning Competition (IPC 240),J une ,Whistler ,Canada ,2004,7~14

8Thielscher M.Ramification and causality.Artificial Intelligence ,1997,89:317~364

9

McCain N ,Turner H.A causal t heory of ramifications and quali 2fications.In :Proceedings I J CAI 295,Montreal ,Que ,199511978

~1984

10Davidson M ,Garagnani M.Pre 2processing planning domains con 2

taining Language Axioms.In :Grant T ,Witteveen ,C ,eds.Proc of t he 21st Workshop of t he U K Planning and Scheduling SIG (PlanSIG 202),2002.23~34

11Garagnani M.A correct algorit hm for efficient planning wit h pre 2

processed domain axioms.In :Bramer M ,Preece A ,Coenen F ,eds.Research and Development in Intelligent Systems XVII (Proc of ES 22000)120001363~374

12Vidal V 1A lookahead strategy for solving large planning prob 2lems.I J CAI 200311524~1525

13Hoff mann J ,Nebel B.The FF Planning System :Fast Plan Gen 2

eration Through Heuristic Search .Journal of Artificial Intelli 2gence Research

,2001,14:253~302

图7 放宽式规划的一个示例

带下划线的粗体部分表示目标状态的命题。蓝色粗线表示解路径。

(上接第161页)

参考文献

1Aggarwal CC ,Han J ,Wang J ,et al.A framework for clustering evolving data streams.In :Proc.of VLDB ,2003

2

Aggarwal C C ,Han J ,Wang J ,et al.A framework for projected clustering of high dimensional data streams.In :Proc.of VLDB ,20043Beringer J ,Hullermeier E.Online Clustering of Parallel Data Streams.Data &Knowledge Engineering ,2005

4

Guha S ,Meyerson A ,Mishra N ,et al.Clustering Data Streams :Theory and Practice.In :T KDE special issue on clustering ,Vol.15,20035

Cao F ,Estery M ,Qian W ,et al.Density 2based Clustering over an Evolving Data Stream wit h Noise.In :Proceedings of t he 2006SIAM Conference on Data Mining (SDM ’2006)6

Ester M ,Kriegel H 2P ,Sander J ,et al.Incremental clustering for mining in a data warehousing environment.In :Gupta A ,Shmue 2li O ,Widom J ,eds.Proceedings of t he 24th International Confer 2ence on Very Large Data Bases.New Y ork :Morgan Kauf mann Publishers Inc ,1998.323~3337

Liu Qing 2Bao ,Deng Su ,Lu Changhui ,et al.Relative Density

Based K 2nearest Neighbors Clustering Algorit hm.In :t he Second

International Conference on Machine Learning and Cybernetics ,China ,2003

8

Ester M ,Kriegel H 2P ,Sander J ,et al.A Density 2Based Algo 2rit hm for Discovering Clusters in Large Spatial Databases wit h Noise.In :Proc.2nd Int Conf on Knowledge Discovery and Data Mining ,Portland ,OR ,1996.226~231

9Han Jiawei ,Kamber M ,Fan Ming ,et al.Data Mining :Conceot s and Techniques.Beijing :China Mechine Press ,2001(in Chinese )10Ankerst M ,Breunig M ,Kriegel H 2P ,et al.OP TICS :Ordering

Point s To Identify t he Clustering Structure.In :Proc.ACM SIG 2MOD ’99,Int Conf.on Management of Data ,Philadelphia ,PA ,1999

11Zhou Y ong 2Feng ,Liu Qing 2Bao ,Deng Su ,et al.An Incremental

Outlier Factor Based Clustering Algorit hm.In :t he First Interna 2tional Conference on Machine Learning and Cybernetics Nov Chi 2na ,2002

12金澈,清卫宁,周傲英.流数据分析与管理综述.软件学报,2004,

15(8)

13朱蔚恒,印鉴,谢益煌.基于数据流的任意形状聚类算法.软件学

报,2006,17(3)

MATLAB实现FCM 聚类算法

本文在阐述聚类分析方法的基础上重点研究FCM 聚类算法。FCM 算法是一种基于划分的聚类算法,它的思想是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小。最后基于MATLAB实现了对图像信息的聚类。 第 1 章概述 聚类分析是数据挖掘的一项重要功能,而聚类算法是目前研究的核心,聚类分析就是使用聚类算法来发现有意义的聚类,即“物以类聚” 。虽然聚类也可起到分类的作用,但和大多数分类或预测不同。大多数分类方法都是演绎的,即人们事先确定某种事物分类的准则或各类别的标准,分类的过程就是比较分类的要素与各类别标准,然后将各要素划归于各类别中。确定事物的分类准则或各类别的标准或多或少带有主观色彩。 为获得基于划分聚类分析的全局最优结果,则需要穷举所有可能的对象划分,为此大多数应用采用的常用启发方法包括:k-均值算法,算法中的每一个聚类均用相应聚类中对象的均值来表示;k-medoid 算法,算法中的每一个聚类均用相应聚类中离聚类中心最近的对象来表示。这些启发聚类方法在分析中小规模数据集以发现圆形或球状聚类时工作得很好,但当分析处理大规模数据集或复杂数据类型时效果较差,需要对其进行扩展。 而模糊C均值(Fuzzy C-means, FCM)聚类方法,属于基于目标函数的模糊聚类算法的范畴。模糊C均值聚类方法是基于目标函数的模糊聚类算法理论中最为完善、应用最为广泛的一种算法。模糊c均值算法最早从硬聚类目标函数的优化中导出的。为了借助目标函数法求解聚类问题,人们利用均方逼近理论构造了带约束的非线性规划函数,以此来求解聚类问题,从此类内平方误差和WGSS(Within-Groups Sum of Squared Error)成为聚类目标函数的普遍形式。随着模糊划分概念的提出,Dunn [10] 首先将其推广到加权WGSS 函数,后来由Bezdek 扩展到加权WGSS 的无限族,形成了FCM 聚类算法的通用聚类准则。从此这类模糊聚类蓬勃发展起来,目前已经形成庞大的体系。 第 2 章聚类分析方法 2-1 聚类分析 聚类分析就是根据对象的相似性将其分群,聚类是一种无监督学习方法,它不需要先验的分类知识就能发现数据下的隐藏结构。它的目标是要对一个给定的数据集进行划分,这种划分应满足以下两个特性:①类内相似性:属于同一类的数据应尽可能相似。②类间相异性:属于不同类的数据应尽可能相异。图2.1是一个简单聚类分析的例子。

1基于网格的数据流聚类算法

3)国家自然科学基金(60172012)。刘青宝 博士生,副教授,主要研究方向为数据仓库技术和数据挖掘;戴超凡 博士,副教授,主要研究方向为数据仓库技术和数据挖掘;邓 苏 博士,教授,主要研究方向指挥自动化、信息综合处理与辅助决策;张维明 博士生导师,教授,主要研究方向为军事信息系统、信息综合处理与辅助决策。 计算机科学2007Vol 134№13   基于网格的数据流聚类算法3) 刘青宝 戴超凡 邓 苏 张维明 (国防科学技术大学信息系统与管理学院 长沙410073)   摘 要 本文提出的基于网格的数据流聚类算法,克服了算法CluStream 对非球形的聚类效果不好等缺陷,不仅能在 噪声干扰下发现任意形状的类,而且有效地解决了聚类算法参数敏感和聚类结果无法区分密度差异等问题。关键词 聚类,数据流,聚类参数,相对密度  G rid 2based Data Stream Clustering Algorithm L IU Qing 2Bao DA I Chao 2Fan DEN G Su ZHAN G Wei 2Ming (College of Information System and Management ,National University of Defense Technology ,Changsha 410073)   Abstract With strong ability for discovering arbitrary shape clusters and handling noise ,grid 2based data stream cluste 2ring algorithm efficiently resolves these problem of being very sensitive to the user 2defined parameters and difficult to distinguish the density distinction of clusters.K eyw ords Clustering ,Data stream ,Clustering parameter ,Relative density 随着计算机和传感器技术的发展和应用,数据流挖掘技术在国内外得到广泛研究。它在网络监控、证券交易分析、电信记录分析等方面有着巨大的应用前景。特别在军事应用中,为了获得及时的战场态势信息,大量使用了各种传感器,对这些传感器数据流的分析处理已显得极为重要。针对数据流数据持续到达,且速度快、规模大等特点,数据流挖掘技术的研究重点是设计高效的单遍数据集扫描算法[12]。数据流聚类问题一直是吸引许多研究者关注的热点问题,已提出多种一次性扫描的方法和算法,如文[1~4]等等,但它们的聚类结果通常是球形的,不能支持对任意形状类的聚类[5]。 本文提出的基于网格的数据流聚类算法,在有限内存条件下,以单遍扫描方式,不仅能在噪声干扰下发现任意形状的类,而且有效地解决了基于绝对密度聚类算法所存在的高密度聚类结果被包含在相连的低密度聚类结果中的问题。 本文第1节简要介绍数据流聚类相关研究,并引出基于网格的数据流聚类算法的思路及其与相关研究的异同;第2节给出基于网格的数据流聚类算法所使用到的基本概念;第3节给出一个完整的基于网格的数据流聚类算法,详细解析算法的执行过程;第4节进行算法性能分析对比;最后总结本文的主要工作和贡献,并指出需要进一步研究和改进的工作。 1 相关研究 在有限内存约束下,一般方法很难对数据流进行任意形状的聚类。第一个增量式聚类挖掘方法是文[6]提出的In 2crementalDBSCAN 算法,它是一个用于数据仓库环境(相对稳定的数据流)的有效聚类算法,可以在有噪声的数据集中发现任意形状的类。但是,它为了形成任意形状的类,必须用类中的所有点来表示,要求获得整个数据流的全局信息,这在内存有限情况下是难以做到的。而且,它采用全局一致的绝对 密度作参数,使得聚类结果对参数值非常敏感,设置的细微不同即可能导致差别很大的聚类结果。 Aggarwal 在2003年提出的一个解决数据流聚类问题的框架CluStream [1]。它使用了两个过程来处理数据流聚类问题:首先,使用一个在线的micro 2cluster 过程对数据流进行初级聚类,并按一定的时间跨度将micro 2cluster 的结果按一种称为pyramid time f rame 的结构储存下来。同时,使用另一个离线的macro 2cluster 过程,根据用户的具体要求对micro 2cluster 聚类的结果进行再分析。但它采用距离作为度量参数,聚类结果通常是球形的,不能支持对任意形状类的聚类。而且,它维护的是micro 2cluster 的聚类特征向量(CF 2x ;CF 1x ;CF 2t ;CF 1t ;n ),这在噪声情况下,会产生干扰误差。 2006年,Feng Cao 等人在文[5]中提出了针对动态进化数据流的DenStream 算法。它相对CluStream 有很大的改进,继承了IncrementalDBSCAN 基于密度的优点,能够支持对有噪声的动态进化(非稳定)的数据流进行任意形状的聚类。但由于采用全局一致的绝对密度作参数,使得聚类结果对参数值非常敏感。同时,与CluStream 算法相比,它只能提供对当前数据流的一种描述,不能反映用户指定时间窗内的流数据的变化情况。 朱蔚恒等在文[13]中提出的基于密度与空间的ACluS 2tream 聚类算法,通过引入有严格空间的意义聚类块,在对数据流进行初步聚类的同时,尽量保留数据的空间特性,有效克服了CluStream 算法不能支持对任意形状聚类的缺陷。但它在处理不属于已有聚类块的新数据点时,使用一种类似“抛硬币”的方法来猜测是否为该点创建一个新的聚类块,误差较大。而且它以绝对密度做参考,所以在聚类结果中无法区分密度等级不同的簇[7]。 本文提出的基于网格的数据流聚类算法GClustream

聚类分析算法解析.doc

聚类分析算法解析 一、不相似矩阵计算 1.加载数据 data(iris) str(iris) 分类分析是无指导的分类,所以删除数据中的原分类变量。 iris$Species<-NULL 2. 不相似矩阵计算 不相似矩阵计算,也就是距离矩阵计算,在R中采用dist()函数,或者cluster包中的daisy()函数。dist()函数的基本形式是 dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2) 其中x是数据框(数据集),而方法可以指定为欧式距离"euclidean", 最大距离"maximum", 绝对值距离"manhattan", "canberra", 二进制距离非对称"binary" 和明氏距离"minkowski"。默认是计算欧式距离,所有的属性必须是相同的类型。比如都是连续类型,或者都是二值类型。 dd<-dist(iris) str(dd) 距离矩阵可以使用as.matrix()函数转化了矩阵的形式,方便显示。Iris数据共150例样本间距离矩阵为150行列的方阵。下面显示了1~5号样本间的欧式距离。 dd<-as.matrix(dd)

二、用hclust()进行谱系聚类法(层次聚类) 1.聚类函数 R中自带的聚类函数是hclust(),为谱系聚类法。基本的函数指令是 结果对象 <- hclust(距离对象, method=方法) hclust()可以使用的类间距离计算方法包含离差法"ward",最短距离法"single",最大距离法"complete",平均距离法"average","mcquitty",中位数法 "median" 和重心法"centroid"。下面采用平均距离法聚类。 hc <- hclust(dist(iris), method="ave") 2.聚类函数的结果 聚类结果对象包含很多聚类分析的结果,可以使用数据分量的方法列出相应的计算结果。 str(hc) 下面列出了聚类结果对象hc包含的merge和height结果值的前6个。其行编号表示聚类过程的步骤,X1,X2表示在该步合并的两类,该编号为负代表原始的样本序号,编号为正代表新合成的类;变量height表示合并时两类类间距离。比如第1步,合并的是样本102和143,其样本间距离是0.0,合并后的类则使用该步的步数编号代表,即样本-102和-143合并为1类。再如第6行表示样本11和49合并,该两个样本的类间距离是0.1,合并后的类称为6类。 head (hc$merge,hc$height)

PAM聚类算法的分析与实现

毕业论文(设计)论文(设计)题目:PAM聚类算法的分析与实现 系别: 专业: 学号: 姓名: 指导教师: 时间:

毕业论文(设计)开题报告 系别:计算机与信息科学系专业:网络工程 学号姓名高华荣 论文(设计)题目PAM聚类算法的分析与实现 命题来源□√教师命题□学生自主命题□教师课题 选题意义(不少于300字): 随着计算机技术、网络技术的迅猛发展与广泛应用,人们面临着日益增多的业务数据,这些数据中往往隐含了大量的不易被人们察觉的宝贵信息,为了得到这些信息,人们想尽了一切办法。数据挖掘技术就是在这种状况下应运而生了。而聚类知识发现是数据挖掘中的一项重要的内容。 在日常生活、生产和科研工作中,经常要对被研究的对象经行分类。而聚类分析就是研究和处理给定对象的分类常用的数学方法。聚类就是将数据对象分组成多个簇,同一个簇中的对象之间具有较高的相似性,而不同簇中的对象具有较大的差异性。 在目前的许多聚类算法中,PAM算法的优势在于:PAM算法比较健壮,对“噪声”和孤立点数据不敏感;由它发现的族与测试数据的输入顺序无关;能够处理不同类型的数据点。 研究综述(前人的研究现状及进展情况,不少于600字): PAM(Partitioning Around Medoid,围绕中心点的划分)算法是是划分算法中一种很重要的算法,有时也称为k-中心点算法,是指用中心点来代表一个簇。PAM算法最早由Kaufman和Rousseevw提出,Medoid的意思就是位于中心位置的对象。PAM算法的目的是对n个数据对象给出k个划分。PAM算法的基本思想:PAM算法的目的是对成员集合D中的N个数据对象给出k个划分,形成k个簇,在每个簇中随机选取1个成员设置为中心点,然后在每一步中,对输入数据集中目前还不是中心点的成员根据其与中心点的相异度或者距离进行逐个比较,看是否可能成为中心点。用簇中的非中心点到簇的中心点的所有距离之和来度量聚类效果,其中成员总是被分配到离自身最近的簇中,以此来提高聚类的质量。 由于PAM算法对小数据集非常有效,但对大的数据集合没有良好的可伸缩性,就出现了结合PAM的CLARA(Cluster LARger Application)算法。CLARA是基于k-中心点类型的算法,能处理更大的数据集合。CLARA先抽取数据集合的多个样本,然后用PAM方法在抽取的样本中寻找最佳的k个中心点,返回最好的聚类结果作为输出。后来又出现了CLARNS(Cluster Larger Application based upon RANdomized

数据流聚类算法D-Stream

Density-Based Clustering for Real-Time Stream Data 基于密度的实时数据流聚类(D-Stream) 翻译by muyefei E-mail: muyefei@https://www.doczj.com/doc/0215187440.html, 注释:版权归作者所有,文档仅用于交流学习,可以用大纲视图查看文档结构 摘要:现有的聚类算法比如CluStream是基于k-means算法的。这些算法不能够发现任意形状的簇以及不能处理离群点。而且,它需要预先知道k值和用户指定的时间窗口。为了解决上述问题,本文提出了D-Stream算法,它是基于密度的算法。这个算法用一个在线部分将数据映射到一个网格,在离线部分计算网格的密度然后基于密度形成簇。算法采用了密度衰减技术来捕获数据流的动态变化。为了探索衰减因子、数据密度以及簇结构之间的关系,我们的算法能够有效的并且有效率地实时调整簇。而且,我们用理论证明了移除那些属于离群点的稀疏网格是合理的,从而提高了系统的时间和空间效率。该技术能聚类高速的数据流而不损失聚类质量。实验结果表明我们的算法在聚类质量和效率是有独特的优势,并且能够发现任意形状的簇,以及能准确地识别实时数据流的演化行为。 关键词 流数据挖掘基于密度的聚类D-Stream 分散的网格 1 介绍 实时聚类高维数据流是困难的但很重要。因为它在各个领域应用到。比如... 聚类是一项关键的数据挖掘任务。挖掘数据流有几项关键的挑战: (1)单遍扫描 (2)将数据流视为数据一个很长的向量在很多应用中捉襟见肘,用户更加关注簇的演化行为。 近来,出现了许多数据流聚类方法。比如STREAM、CluStream以及扩展(在多数据流,分布式数据流,并行数据流上的扩展)等。 CluStream以及扩展的算法有以下一些缺陷: 1、只能发现球形簇,不能发现任意形状的簇。 2、不能够识别噪声和离群点。 3、基于k-means的算法需要多次扫描数据(其实CluStream利用两阶段方法和微簇解决了该问题)。 基于密度的聚类算法介绍。基于密度的方法可以发现任意形状的簇,可以处理噪声,对原始数据集只需一次扫描。而且,它不需要像k-means算法那样预先设定k值。 文本提出了D-Stream,一种基于密度的数据流聚类框架。它不是简单用基于密度的算法替代k-means的数据流算法。它有两项主要的技术挑战: 首先,我们不大愿意将数据流视为静态数据很长的一个序列,因为我们对数据流演化的时间特征更加感兴趣。为了捕获簇的动态变化,我们提出了一个新颖的方案,它可以将衰减

机器学习聚类算法实现

《人工智能与机器学习》 实验报告 年级__ xxxx班____________ 专业___________xxxxx____ _____ 学号____________6315070301XX___________ 姓名_____________gllh________________ 日期___________2018-5-12 __

实验五聚类算法实现 一、实验目的 1、了解常用聚类算法及其优缺点 2、掌握k-means聚类算法对数据进行聚类分析的基本原理和划分方法 3、利用k-means聚类算法对已知数据集进行聚类分析 实验类型:验证性 计划课间:4学时 二、实验内容 1、利用python的sklearn库函数对给定的数据集进行聚类分析 2、分析k-means算法的实现流程 3、根据算法描述编程实现,调试运行 4、对所给数据集进行验证,得到分析结果 三、实验步骤 1、k-means算法原理 2、k-means算法流程 3、k-means算法实现 4、对已知数据集进行分析 四、实验结果分析 1.利用python的sklearn库函数对给定的数据集进行聚类分析: 其中数据集选取iris鸢尾花数据集 import numpy as np from sklearn.datasets import load_iris iris = load_iris() def dist(x,y):

return sum(x*y)/(sum(x**2)*sum(y**2))**0.5 def K_means(data=iris.data,k=3,ping=0,maxiter=100): n, m = data.shape centers = data[:k,:] while ping < maxiter: dis = np.zeros([n,k+1]) for i in range(n): for j in range(k): dis[i,j] = dist(data[i,:],centers[j,:]) dis[i,k] = dis[i,:k].argmax() centers_new = np.zeros([k,m]) for i in range(k): index = dis[:,k]==i centers_new[i,:] = np.mean(data[index,:],axis=0) if np.all(centers==centers_new): break centers = centers_new ping += 1 return dis if __name__ == '__main__': res = K_means() print(res) (1)、首先求出样本之间的余弦相似度: sum(x*y)/(sum(x**2)*sum(y**2))**0.5 (2)、设置k类别数为3,最大迭代次数为100 K_means(data=iris.data,k=3,ping=0,maxiter=100):

K 均值聚类算法(原理加程序代码)

K-均值聚类算法 1.初始化:选择c 个代表点,...,,321c p p p p 2.建立c 个空间聚类表:C K K K ...,21 3.按照最小距离法则逐个对样本X 进行分类: ),(),,(min arg J i i K x add p x j ?= 4.计算J 及用各聚类列表计算聚类均值,并用来作为各聚类新的代表点(更新代表点) 5.若J 不变或代表点未发生变化,则停止。否则转2. 6.),(1∑∑=∈=c i K x i i p x J δ 具体代码如下: clear all clc x=[0 1 0 1 2 1 2 3 6 7 8 6 7 8 9 7 8 9 8 9;0 0 1 1 1 2 2 2 6 6 6 7 7 7 7 8 8 8 9 9]; figure(1) plot(x(1,:),x(2,:),'r*') %%第一步选取聚类中心,即令K=2 Z1=[x(1,1);x(2,1)]; Z2=[x(1,2);x(2,2)]; R1=[]; R2=[]; t=1; K=1;%记录迭代的次数 dif1=inf; dif2=inf; %%第二步计算各点与聚类中心的距离 while (dif1>eps&dif2>eps) for i=1:20 dist1=sqrt((x(1,i)-Z1(1)).^2+(x(2,i)-Z1(2)).^2); dist2=sqrt((x(1,i)-Z2(1)).^2+(x(2,i)-Z2(2)).^2); temp=[x(1,i),x(2,i)]'; if dist1

K-MEANS聚类算法的实现及应用

内容摘要本文在分析和实现经典k-means算法的基础上,针对初始类中心选择问题,结合已有的工作,基于对象距离和密度对算法进行了改进。在算法实现部分使用vc6.0作为开发环境、sql sever2005作为后台数据库对算法进行了验证,实验表明,改进后的算法可以提高算法稳定性,并减少迭代次数。 关键字 k-means;随机聚类;优化聚类;记录的密度 1 引言 1.1聚类相关知识介绍 聚类分析是直接比较各事物之间性质,将性质相近的归为一类,将性质不同的归为一类,在医学实践中也经常需要做一些分类工作。如根据病人一系列症状、体征和生化检查的结果,将其划分成某几种方法适合用于甲类病的检查,另几种方法适合用于乙类病的检查,等等。聚类分析被广泛研究了许多年。基于聚类分析的工具已经被加入到许多统计分析软件或系统中,入s-plus,spss,以及sas。 大体上,聚类算法可以划分为如下几类: 1) 划分方法。 2) 层次方法。 3) 基于密度的算法。 4) 基于网格的方法。 5) 基于模型的方法。 1.2 研究聚类算法的意义 在很多情况下,研究的目标之间很难找到直接的联系,很难用理论的途径去解决。在各目标之间找不到明显的关联,所能得到的只是些模糊的认识,由长期的经验所形成的感知和由测量所积累的数据。因此,若能用计算机技术对以往的经验、观察、数据进行总结,寻找个目标间的各种联系或目标的优化区域、优化方向,则是对实际问题的解决具有指导意义和应用价值的。在无监督情况下,我们可以尝试多种方式描述问题,其中之一是将问题陈述为对数分组或聚类的处理。尽管得到的聚类算法没有明显的理论性,但它确实是模式识别研究中非常有用的一类技术。聚类是一个将数据集划分为若干聚类的过程,是同一聚类具有较高相似性,不同聚类不具相似性,相似或不相似根据数据的属性值来度量,通常使用基于距离的方法。通过聚类,可以发现数据密集和稀疏的区域,从而发现数据整体的分布模式,以及数据属性间有意义的关联。 2 k-means算法简介 2.1 k-means算法描述 k-means 算法接受输入量k,然后将n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高,而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”来进行计算的。k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数。 k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。 2.2 k-means算法实现步骤 在原始的k-means算法中,由于数据对象的分类被不断地调整,因此平均误差准则函数在每次迭代过程中的值必定在不断减小。当没有数据对象被调整时,e(e指每个对象到该类中心的距离平方之和)的值不再变化,说明算法运行结果已经达到最优,同时算法运行结束。

matlab实现Kmeans聚类算法

matlab实现Kmeans聚类算法 1.简介: Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans 的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。 Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift 是所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。Kmeans和EM算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是特殊的核函数(uniform kernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。 k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些点应该分在点,也可以对高维的空间(3维,4维,等等)的点进行聚类,任意高维的空间都可以。 上图中的彩色部分是一些二维空间点。上图中已经把这些点分组了,并使用了不同的颜色对各组进行了标记。这就是聚类算法要做的事情。 这个算法的输入是: 1:点的数据(这里并不一定指的是坐标,其实可以说是向量)

2:K,聚类中心的个数(即要把这一堆数据分成几组) 所以,在处理之前,你先要决定将要把这一堆数据分成几组,即聚成几类。但并不是在所有情况下,你都事先就能知道需要把数据聚成几类的。意味着使用k-means就不能处理这种情况,下文中会有讲解。 把相应的输入数据,传入k-means算法后,当k-means算法运行完后,该算法的输出是: 1:标签(每一个点都有一个标签,因为最终任何一个点,总会被分到某个类,类的id号就是标签) 2:每个类的中心点。 标签,是表示某个点是被分到哪个类了。例如,在上图中,实际上有4中“标签”,每个“标签”使用不同的颜色来表示。所有黄色点我们可以用标签以看出,有3个类离的比较远,有两个类离得比较近,几乎要混合在一起了。 当然,数据集不一定是坐标,假如你要对彩色图像进行聚类,那么你的向量就可以是(b,g,r),如果使用的是hsv颜色空间,那还可以使用(h,s,v),当然肯定可以有不同的组合例如(b*b,g*r,r*b) ,(h*b,s*g,v*v)等等。 在本文中,初始的类的中心点是随机产生的。如上图的红色点所示,是本文随机产生的初始点。注意观察那两个离得比较近的类,它们几乎要混合在一起,看看算法是如何将它们分开的。 类的初始中心点是随机产生的。算法会不断迭代来矫正这些中心点,并最终得到比较靠5个中心点的距离,选出一个距离最小的(例如该点与第2个中心点的距离是5个距离中最小的),那么该点就归属于该类.上图是点的归类结果示意图. 经过步骤3后,每一个中心center(i)点都有它的”管辖范围”,由于这个中心点不一定是这个管辖范围的真正中心点,所以要重新计算中心点,计算的方法有很多种,最简单的一种是,直接计算该管辖范围内所有点的均值,做为心的中心点new_center(i). 如果重新计算的中心点new_center(i)与原来的中心点center(i)的距离大于一定的阈值(该阈值可以设定),那么认为算法尚未收敛,使用new_center(i)代替center(i)(如图,中心点从红色点

聚类分析法总结

聚类分析法 先用一个例子引出聚类分析 一、聚类分析法的概念 聚类分析又叫群分析、点群分析或者簇分析,是研究多要素事物分类问题的数量,并根据研究对象特征对研究对象进行分类的多元分析技术,它将样本或变量按照亲疏的程度,把性质相近的归为一类,使得同一类中的个体都具有高度的同质性,不同类之间的个体都具有高度的异质性。 聚类分析的基本原理是根据样本自身的属性,用数学方法按照某种相似性或差异性指标,定量地确定样本之间的亲疏关系,并按这种亲疏关系程度对样本进行聚类。 描述亲属程度通常有两种方法:一种是把样本或变量看出那个p维向量,样本点看成P 维空间的一个点,定义点与点之间的距离;另一种是用样本间的相似系数来描述其亲疏程度。有了距离和相似系数就可定量地对样本进行分组,根据分类函数将差异最小的归为一组,组与组之间再按分类函数进一步归类,直到所有样本归为一类为止。 聚类分析根据分类对象的不同分为Q型和R型两类,Q--型聚类是对样本进行分类处理,R--型聚类是对变量进行分类处理。 聚类分析的基本思想是,对于位置类别的样本或变量,依据相应的定义把它们分为若干类,分类过程是一个逐步减少类别的过程,在每一个聚类层次,必须满足“类内差异小,类间差异大”原则,直至归为一类。评价聚类效果的指标一般是方差,距离小的样品所组成的类方差较小。 常见的聚类分析方法有系统聚类法、动态聚类法(逐步聚类法)、有序样本聚类法、图论聚类法和模糊聚类法等。 二、对聚类分析法的评价 聚类分析也是一种分类技术。与多元分析的其他方法相比,该方法较为粗糙,理论上还不完善,但应用方面取得了很大成功。与回归分析、判别分析一起被称为多元分析的三大方法。 聚类的目的:根据已知数据,计算各观察个体或变量之间亲疏关系的统计量(距离或相关系数)。根据某种准则(最短距离法、最长距离法、中间距离法、重心法),使同一类内的

FCMClust(模糊c均值聚类算法MATLAB实现)

function [center, U, obj_fcn] = FCMClust(data, cluster_n, options) % FCMClust.m 采用模糊C均值对数据集data聚为cluster_n类 % 用法: % 1. [center,U,obj_fcn] = FCMClust(Data,N_cluster,options); % 2. [center,U,obj_fcn] = FCMClust(Data,N_cluster); % 输入: % data ---- nxm矩阵,表示n个样本,每个样本具有m的维特征值 % N_cluster ---- 标量,表示聚合中心数目,即类别数 % options ---- 4x1矩阵,其中 % options(1): 隶属度矩阵U的指数,>1 (缺省值: 2.0) % options(2): 最大迭代次数(缺省值: 100) % options(3): 隶属度最小变化量,迭代终止条件(缺省值: 1e-5) % options(4): 每次迭代是否输出信息标志(缺省值: 1) % 输出: % center ---- 聚类中心 % U ---- 隶属度矩阵 % obj_fcn ---- 目标函数值 % Example: % data = rand(100,2); % [center,U,obj_fcn] = FCMClust(data,2); % plot(data(:,1), data(:,2),'o'); % hold on; % maxU = max(U); % index1 = find(U(1,:) == maxU); % index2 = find(U(2,:) == maxU); % line(data(index1,1),data(index1,2),'marker','*','color','g'); % line(data(index2,1),data(index2,2),'marker','*','color','r'); % plot([center([1 2],1)],[center([1 2],2)],'*','color','k') % hold off; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% if nargin ~= 2 & nargin ~= 3, %判断输入参数个数只能是2个或3个 error('Too many or too few input arguments!'); end data_n = size(data, 1); % 求出data的第一维(rows)数,即样本个数 in_n = size(data, 2); % 求出data的第二维(columns)数,即特征值长度 % 默认操作参数 default_options = [2; % 隶属度矩阵U的指数 100; % 最大迭代次数 1e-5; % 隶属度最小变化量,迭代终止条件

聚类算法matlab程序

clear all close all disp('The only input needed is a distance matrix file') disp('The format of this file should be: ') disp('Column 1: id of element i') disp('Column 2: id of element j') disp('Column 3: dist(i,j)') mdist=input('example_distances');%name of the distance matrix file (with single quotes)?\n disp('Reading input distance matrix') xx=load(mdist); ND=max(xx(:,2)); NL=max(xx(:,1)); if (NL>ND) ND=NL; end N=size(xx,1); for i=1:ND for j=1:ND dist(i,j)=0; end end for i=1:N ii=xx(i,1); jj=xx(i,2); dist(ii,jj)=xx(i,3); dist(jj,ii)=xx(i,3); end percent=2.0; fprintf('average percentage of neighbours (hard coded): %5.6f\n', percent); position=round(N*percent/100); sda=sort(xx(:,3)); dc=sda(position); fprintf('Computing Rho with gaussian kernel of radius: %12.6f\n', dc); for i=1:ND rho(i)=0.; end % % Gaussian kernel % for i=1:ND-1 for j=i+1:ND rho(i)=rho(i)+exp(-(dist(i,j)/dc)*(dist(i,j)/dc)); rho(j)=rho(j)+exp(-(dist(i,j)/dc)*(dist(i,j)/dc)); end end %

数据流聚类算法研究

第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-),男,河南浚县人,硕士,通化师范学院工程师,主要研究领域为数据仓库与数据挖掘.

CURE聚类算法的实现

CURE聚类算法的实现 任务背景 聚类(clustering)就是将数据对象分组成为多个类或簇(cluster),在同一簇中的对象之间具有较高的相似度,而不同的簇中对象差别较大。相异度是根据描述对象的属性值来计算的。距离是经常采用的度量方式。聚类分析源于许多研究领域,包括数据挖掘,统计学,生物学,以及机器学习。 作为统计学的一个分支,聚类分析已经被广泛的研究了许多年,主要集中在基于距离的聚类分析。基于k-means(k-平均值),k-medoids(k-中心点)和其他一些方法的聚类分析工具已经被加入到许多统计分析软件包或系统中,例如 S-Plus,SPSS,以及SAS。 CURE(Clustering Using Representatives)是一种针对大型数据库的高效的聚类算法。基于划分的传统的聚类算法得到的是球状的,相等大小的聚类,对异常数据比较脆弱。CURE采用了用多个点代表一个簇的方法,可以较好的处理以上问题。并且在处理大数据量的时候采用了随机取样,分区的方法,来提高其效率,使得其可以高效的处理大量数据。 基本目标 聚类算法CURE的算法实现。对图形进行聚类,在时间,结果方面对其性能进行评估。 算法流程 CURE的算法在开始时,每个点都是一个簇,然后将距离最近的簇结合,一直到簇的个数为要求的K。它是一种分裂的层次聚类。算法分为以下6步: 1)从源数据对象中抽取一个随机样本S。 2)将样本S分割为一组划分。 3)对划分局部的聚类。 4)通过随机取样提出孤立点。如果一个簇增长得太慢,就去掉它。

5)对局部的簇进行聚类。 6)用相应的簇标签标记数据。 算法设计 (1)基本聚类算法 procedure cluster(S, k) /*将数据集S聚类成为k个簇*/ begin 1. T := build_kd_tree(S) /*对应数据集S建立一个K-DTree T*/ 2. Q := build_heap(S) /*对应数据集S建立一个堆Q*/ 3. while size(Q) > k do { /*聚类直至簇的个数为k */ 4. u := extract_min(Q) /*找到最近的两个簇u,v */ 5. v := u.cloest 6. delete(Q, v) 7. w := merge(u, v) /*将u,v合并为簇w */ 8. delete_rep(T, u);delete_rep(T, v);insert_rep(T, w) 9. w.cloest := x /* x is an arbitrary cluster in Q*/ 10. for each x∈Q do{ /*调节因合并带来的T和Q的变化*/ 11. if (dist(w,x) < dist(w,w.cloest)) 12. w.cloest := x 13. if x.cloest is either u or v { 14. if dist(x, x.cloest) < dist(x.w) 15. x.cloest := cloest_cluster(T, x, dist(x,w)) 16. else 17. x.cloest := w

K-均值聚类法实例解析

例: 为了更深入了解我国环境的污染程度状况,现利用2009 年数据对全国31个省、自治区、直辖市进行聚类分析。 解:现在要分析我国各个地区的环境污染程度,案例中选择了各地区“工业废气排放总量”、“工业废水排放总量”和“二氧化硫排放总量”三个指标来反映不同污染程度的环境状况,同时选择了北京等省市的数据加以研究。这个问题属于典型的多元分析问题,需要利用多个指标来分析各省市之间环境污染程度的差异。因此,可以考虑利用快速聚类分析来研究各省市之间的差异性,具体操作步骤如下。 1)打随书光盘中的数据文件9-2.sav,选择菜单栏中的【A nalyze(分析)】→【Classify(分 类)】→【K-Means Cluster(K均值聚类)】命令,弹出【K-Means Cluster Analysis(K均值聚类分析)】对话框。 2)在左侧的候选变量列表框中将X1、X2和X3变量设定为聚类分析变量,将其添加至 【Variables(变量)】列表框中;同时选择Y作为标识变量,将其移入【Label Cases by (个案标记依据)】列表框中。 3)在【Number of Clusters(聚类数)】文本框中输入数值“3”,表示将样品利用聚类分析 分为三类,如下图所示。 4)单击【Save(保存)】按钮,弹出【K-Means Cluster Analysis:Save(K均值聚类分析: 保存)】对话框;勾选【Cluster membership(聚类新成员)】和【Distanc e from cluster center (与聚类中心的距离)】复选框,表示输出样品的聚类类别及距离,其他选项保持系统默认设置,如下图所示,单击【Continue(继续)】按钮返回主对话框。

相关主题
文本预览
相关文档 最新文档