基于最近邻优先的高效聚类算法

基于最近邻优先的高效聚类算法
基于最近邻优先的高效聚类算法

第36卷第6期四川大学学报(工程科学版)V ol.36N o.6 2004年11月JOURNA L OF SICH UAN UNIVERSITY(E NG INEERING SCIE NCE E DITION)N ov.2004文章编号:100923087(2004)0620093207

基于最近邻优先的高效聚类算法

胡建军1,唐常杰1,李 川1,彭 京1,2,元昌安1,3,陈安龙1,蒋永光4

(1.四川大学计算机学院,四川成都610064;2.成都市公安局科技处,四川成都610017;

3.广西师范学院信息技术系,广西南宁530001;

4.成都中医药大学,四川成都610075)

摘 要:针对高维空间中任意形状的多层次聚类问题,基于“同类相近”的思想,提出并实现了最近邻优先吸收聚类算法NNAF算法。证明了最近邻点搜索定理,基于这一定理又提出了S NN(Searching Nearest Neighbors)算法和G S NN

(G rid2based Searching Nearest Neighbors)算法,其时间复杂度为O(n3log(n)),当用扫描图像所得数据时,时间复杂

度会降为O(n);而使用传统的搜索算法,时间复杂度为O(n2);提出了实现任意形状高维空间聚类的NNAF算法,时间复杂度为O(n);提出了M LC A(Multi2layer Cluster Alg orithm)算法并证明了两个相关的定理,在改变阈值后重新聚类时,使用M LC A算法可以节省90%以上的时间。实验结果显示,以上算法适应于任意形状的高维空间数据的聚类,可以有效过滤噪声数据,且用户需要的先验知识少、可快速获得各种层次的聚类结果。

关键词:数据挖掘;聚类分析;最近邻优先吸收;多层次聚类

中图分类号:TP311.13文献标识码:A

An E fficient Multi2layer Clustering Algorithm B ased on N earest N eighbors First

H U Jian2jun1,T ANG Chang2jie1,LI Chuan1,PENG Jing1,2,YUAN Chang2an1,3,CHEN An2long1,JIANG Yong2guang4

(1.School of C om puter,S ichuan Univ.,Chengdu610064,China;2.Dept.of Sci.and T ech.,Chengdu Public Security Bureau,Chengdu610017,China;

3.Dept.of In fo.and T ech.,G uangxi T eachers Education Univ.,G uangxi Nanning530001,China;

4.Chengdu Univ.of T raditional Chinese M edicine,Chengdu610075,China)

Abstract:Nearest Neighbors Abs orbed First(NNAF)clustering alg orithm was proposed to res olve the problem of the mul2 ti2layer clustering for high dimensional data with arbitrary shape based on the idea that the data in same cluster must be near.A searching nearest neighbor theorem was proved.Based on the theorem,S NN(Searching Nearest Neighbors)and G S NN(G rid2based Searching Nearest Neighbors)alg orithms were proposed with time com plexity O(n3log(n))or O(n)if the data are gained by scanning image.They are much faster than the traditional searching nearest neighbors al2 g orithm with O(n2).A clustering alg orithm of NNAF to process multi2dimensional data with arbitrary shape was proposed with time com plexity O(n).Multi2layer Clustering Alg orithm(M LC A)was proposed and tw o interrelated theorems were proved.In the case for threshold adjusting,it saves time over90%.The experiments showed that the new alg orithms can efficiently process high dimensional data in arbitrary shape with noisy.They can produce multi2layer clustering quickly and need less field knowledge.

K ey w ords:data mining;clustering;nearest neighbor first;multi2layer clustering

收稿日期:2004206212

基金项目:国家自然科学基金资助项目(60473071;90409007);国家973计划资助项目(2002C B111504);高等学校博士学科点专项科研基金SRFDP资助项目(20020610007);广西自然科学基金资助项目(桂科自0339039)和国家中医药管理局基金S ATC M资助项目

(2003JP40)

作者简介:胡建军(19702),男,博士生.研究方向:数据库与知识工程;智能信息处理.

聚类分析是知识发现(K DD)中一项重要研究内容,旨在将数据集合划分为若干类的过程,使得类内差异小,类间差异大。通常用数据之间的距离来描述相似度,距离越大,相似度越小,反之则越大。理想的聚类算法应该具有可扩展性、能发现任意形状、用户输入参数少、对噪声不敏感、能处理高维数据、可解释性和可用性。国内外学者已经提出了不少相关的算法,大体上可分为划分方法、层次方法、基于密度的方法、基于网格的方法和基于模型的方法。典型算法分别有K2means算法[2]、C URE算法[3]、DB2 SC AN算法[4]、C LI QUE算法[5]和BIRCH算法[6,7],等等。这些算法以自己的特色和方式解决了一类特殊问题。然而,对于任意形状的高维数据的多层次聚类,仍是一个具有挑战性的研究内容。

基于“同类相近”的思想,提出了一种改进的最短距离聚类算法———最近邻优先吸收聚类算法NNAF(Nearest Neighbors Abs orbed First)。与其它聚类算法相比,NNAF算法具有以下优点:

1)适应于任意形状的聚类;

2)可快速处理高维数据;

3)可以快速获得各种层次的高质量聚类;

4)用户需要的先验知识少;

5)可以有效过滤噪声数据。

主要工作在于:

1)提出并证明了一个可以快速获得最近邻点的搜索定理;

2)提出了寻找最近邻点的S NN(Searching Near2 est Neighbors)算法和G S NN(G rid2based Searching Near2 est Neighbors)算法;

3)提出了NNAF(Nearest Neighbors Abs orbed First)聚类算法,实现基于最近邻点优先的聚类;

4)提出了快速进行多层次聚类的M LC A(Multi2 layer Cluster Alg orithm)算法和两个相关的定理,使得改变阈值后重新聚类的时间平均可以节约90%以上;

5)对相应算法进行了实验比较。

1 相关工作

层次聚类方法可分为自下而上和自上而下两种基本方法。自下而上方法是以数据对象作为原子类,然后将这些原子类进行聚合。逐步聚合成越来越大的类,直到满足终止条件。自上而下方法是首先将所有数据对象作为一类,然后逐步分解成越来越小的类,直到满足终止条件。典型的层次聚类算法有BIRCH算法、C URE算法、最短距离法[8]和CH AM A LE ON算法[9]等。

NNAF算法与最短距离法有很多相似之处。最短距离法又称最近邻连接法。其基本思想是把两个类的距离定义为两类中距离最近的元素之间的距离。并依此逐次选择最“靠近”的类聚集,直到满足终止条件。传统的最近邻搜索算法需要并比较数据点两两之间的距离,其时间复杂度为O(n2),计算量很大。因此传统的最近邻算法很难处理大数据量的聚类。对于噪声数据,该算法也将无能为力。针对这些不足,提出了可以高效处理以任意形状分布的具有噪声数据的聚类算法———NNAF算法。它继承了最短距离法的优点,可高效处理高维数据,且用户需要的先验知识少。

2 最近邻优先吸收(NNAF)算法

NNAF(Nearest Neighbors Abs orbed First)算法的基本思想是:空间中的每一点和与之最近的点属于同一类的可能性最大。如果两个距离最近的点之间的距离小于用户输入的距离阈值,那么就认为它们属于同一类。当某一聚类所包含的元素个数大于用户输入的数量阈值时,则该类数据成为一个真正的聚类;否则为噪声数据集合。

2.1 基本概念

定义1:设V是高维数据空间中的点集合,V= {p1,p2,…,p n},p1∈V,p2∈V,给定距离阈值d,d >0,则

1)p1和p2之间的距离记为D(p1,p2);

2)如果D(p1,p2)

3)如果MN(p1)=p2,并且D(p1,p2)≤d,那么p2与p1属于同一类。

NNAF算法的基本思想是试图把两个最近邻的点归为一类。假设M N(p1)=p2,且D(p1,p2)≤d,d是用户设定的距离阈值:当p1点属于第一类,而p2尚没有归类时,则把p2点也归为第一类;当p1尚没有归类,而p2点属于第一类时,则把p1点也归为第一类;当p1点属于第一类,而p2属于第二类时,则把第一类和第二类合并为一个新类,并把p1、p2点和分别属于原第一类和第二类的所有点都归于这个新类。

定义2:设V={p1,p2,…,p n}是一任意空间点集,点p i∈V,p h∈V。

49四川大学学报(工程科学版)第36卷

1)V中任一点p i都存在一个五元组的属性集合(Dir,Distance,Cluster,Neighbors,Anti2Neighbors),其中,Dir表示点p i的坐标;Distance表示点p i到其最近邻点之间的距离;Cluster表示点p i的类别;Neigh2 bors表示点p i的最近邻点的集合;Anti2Neighbors表示以点p i为最近邻点的点集合。

2)如果M N(p i)=p h,且M N(p h)=p i,则称点p i和p h为互最近邻点。

3)如果M N(p i)=p h,且p h点的属性Cluster 的值不为空,则称p h点为p i点的已归类近邻点。否则称为未归类近邻点。

显然,互近邻点其实是已归类近邻点的一种特例,即当某点的已归类邻点是以其为最近邻点的点时,已归类近邻点就变成了互近邻点。

出现互近邻点和已归类近邻点这两种情况是本文提出的NNAF中形成每个聚类的终止条件。

2.2 最近邻搜索(S NN)算法

度量两点之间距离的常用模型有欧氏距离、Manhattan距离、Minkowski距离[1]等,以及上述距离模型的加权版本。在NNAF算法中可以使用以上几种距离度量公式中的任何一种。本文中均采用欧氏距离。

在搜索某点的最近邻点时,为了避免比较其它所有点到它之间的距离,提出了S NN算法,它的目标是快速找到每一点的最近邻点。S NN(Searching Nearest Neighbors)算法只需计算每一点到它们的δ(用户设置的距离阈值)邻域附近的点之间的距离,然后通过比较得到距其最近的点。

定理1:设V={p1,p2,…,p i,…,p m}为n维空间中的点集,p i是集合V中的任一点,距离阈值为d,则到p i的距离小于d的点一定在每一维上都在p i 的相应维的d邻域内。

证明:设点集V中存在一点p,它到p i的距离小于d。p到p i的距离

D(p,p i)=((p1-p i1)2+(p2-p i2)2+…+

(p k-p ik)2+…+(p n-p in)2)1/2≤d 现在反设p在第k维上的投影不在p i的d邻域内,即|p k-p ik|>d,

则有(p k-p ik)2>d2,由此推出D(p,p i)>d,但这与题设矛盾,故定理成立。

算法1S NN算法

输入:点集V={p1,p2,…,p i,…,p m},其中数据点已按某一维(称为排序维)排序,距离阈值d。

输出:每一点的五元组属性值,其中,属性Clus2ter值为空,属性Neighbors和Anti2neighbors中的点分别是满足距离阈值的点。

Begin

 01.点集S=NU LL;

 02.for(i=1;i<=m;i++)

 03. {

 04. 找出在排序维上位于p i点的d邻域内的点

集S;

 05. if S中的某点在某一维上不在p i点的d邻

域内

then 从S中删除该点

 06. if S<>NU LL

then 计算S中所有的点到p i点的距离,然

后比较得出距p i点最近的点及其之间的距

离Distance;

 07. if Distance<=d

then 把p i的最近邻的点写入其Neighbors

属性,把Distance写入其Distance属性,把p i

写入其所有最近邻点的Anti2neighbors属性,

p i的Cluster=NU LL;

 08. else Distance=NU LL,Neighbors=NU LL,

Anti2neighbors=NU LL,Cluster=NU LL,认为

p i是孤立点;

 09. }

End.

S NN算法避免了求两两之间的距离,只需比较它的一个较小邻域内的点,从而大大提高了计算速度。其时间复杂度为O(n3log(n))。当数据是通过扫描空间图像所得时,因为扫描后数据自然已按某一维排序,所以其时间复杂度就会降为O(n)。而传统的逐点比较法的时间复杂度为O(n2)。当用户改变距离阈值d后,仅需用S NN算法搜索孤立点的最近邻点。

当数据在排序维上的坐标值比较集中,特别是当所有数据在排序维上的值相同时,S NN算法并不能提高搜索效率。因此,排序维的选取也是一个重要的问题。

可以先对数据随机取样,然后比较取样数据在每一维上的方差,选取方差最大的维作为排序维。也可以选取具有不同坐标值个数最多的维作为排序维。

选取排序维的时间复杂度是O(n)。所以S NN 算法总的时间复杂度还是O(n3log(n))或O(n)。

59

第6期胡建军,等:基于最近邻优先的高效聚类算法

2.3 基于网格的最近邻搜索(G S NN)算法

S NN算法只搜索满足用户设定阈值的最近邻点,对于不满足阈值条件的最近邻点,则在用户重新设定阈值后再用S NN算法搜索。这对于只设定一次阈值的情况效率无疑是最高的。然而,很多情况下用户并不能一次就能确定好合适的距离阈值,需要反复试验才行。这时就要多次调用S NN算法以及下文所述的M LC A算法。为了避免多次调用S NN 算法,可以采用G S NN(G rid2based Searching Nearest Neighbors)算法一次把所有点的最近邻点全部快速找出。

G S NN算法的基本思想是:首先用S NN算法求出满足阈值条件的最近邻点,对于还未搜索到最近邻点的点,则用2倍的用户阈值作为距离阈值,调用S NN算法,搜索满足2倍阈值的最近邻点。反复以2倍的速度提高阈值条件,直到所有点都搜索到最近邻点为止。

算法2G S NN算法

输入:点集V={p1,p2,…,p i,…,p m},距离阈值d。

输出:产生所有点的记录属性值。

Begin

 01While(没有找到最近邻点的点集不为空)

 02 {

 03 S NN();//调用S NN算法

 04 d=2d;

 05 }

End.

在G S NN算法中,每一次循环,都调用S NN算法搜索出满足当前距离阈值条件的最近邻点。如果在当前距离阈值条件下,还存在没有搜索到最近邻点的点,则把距离阈值加倍,重新调用S NN算法搜索其最近邻点。直到所有的点都搜索到最近邻点为止。

2.4 NNAF算法

NNAF算法是先把一个点作为一类,然后把这一点的所有的最近邻点和所有以这一点为最近邻点的点归于这一类;然后再把所有以新加入这一类的点为最近邻点的点和新加入这一类的点的所有最近邻点也归于这一类。反复这样操作,直到这一类的点不再增加为止,即所有以新加入这一类的点为最近邻点的点和新加入这一类的点的所有最近邻点全部都是已归类点。然后再以一个未归类点为下一个聚类,按上述方法进行聚类操作,直到把所的点都归入某一聚类,这时聚类过程完成。

算法3NNAF算法

输入:点集V={p1,p2,…,p n},距离阈值d,数量阈值q。

输出:每一点的Cluster属性的值。

Begin

 01.F or(i=1;n;i++)//调用S NN算法找每一

点的最近邻点

 02. {

 03. 用S NN算法找点p i的所有最近邻点及其之

间的距离Distance,并在其最近邻点的属性

Anti2neighbors集合中加入p i;

 04. 建立点p i的属性集五元组;

 05. }

 06.j=1;//j为类别编号

 07.堆栈Stack=NU LL;

 08.P oint=NU LL;

 09.While(V<>NU LL)do

 10. {

 11. Push(V中任一个点),把该点赋给P oint,并

它从V中删除,把其Cluster置为j,;

 12. Repeat

 13. I f 点P oint的Neighbors和Anti2neighbors中

存在Cluster值为空的点

 14. Then Push(Neighbors和Anti2neighbors中

Cluster值为空的点),把压入堆栈的点的

Cluster置为j,并把这些点从V中删除;

 15. P oint=P op;

//栈顶点的最近邻点和以之为最近邻点的

点全为互近邻点和已归类近邻点

 16. Until (堆栈Stack=NU LL);

 17. j=j+1;

 18. }

 19.I f (某类包含的点的个数>q)

 20.Then 输出这些类别

End.

NNAF算法主要分为3个步骤:1)求出每一点的最近邻点;2)求出所有的聚类;3)输出满足阈值条件的聚类。

定理2:设集合V={p1,p2,…,p i,…,p m}为多维空间中的点集,如果按照NNAF算法把集合V中的部分点分成了n个聚类C1,C2,…,C n,则当进行第n+1个聚类C n+1时,属于第n+1个聚类C n+1的点不可能已属于前n个聚类C1,C2,…,C n。

69四川大学学报(工程科学版)第36卷

证明:设点p i属于第k类(k

定理2保证了当进行新的聚类时,只需在没有归类的点中进行就可以了,从而提高了效率。

定理3:对于集合V={p1,p2,…,p i,…,p m}中的任意点p i,1≤i≤m,其Distance属性的值一定小于其Anti2neighbors属性中的点到它之间的距离。

证明:设p i是n维空间集合V中任意一点,由定义2知点p i的Distance属性的值是点p i与其最近邻点之间的距离,若p i的Anti2neighbors属性中的点到p i之间的距离小于等于Distance,则p i的Anti2neigh2 bors属性中的点将成为其最近邻点,而不能出现在其Anti2neighbors属性中,只能在其Neighbors中。所以,p i的Distance属性的值一定小于其Anti2neighbors 属性中的点到它之间的距离。定理3证毕。

定理4:设集合V={p1,p2,…,p i,…,p m}为n 维空间中的点集,且已用NNAF算法把集合V中的点按距离阈值d1进行过聚类,当按距离阈值d2(d2 >d1)对V中的点重新聚类时,对于d1

证明:设p i点的Distance属性值满足d1

定理3和定理4保证了在加大阈值后重新聚类时,只需考虑满足新阈值的点的聚类即可,不必对已归类的点重新进行聚类。

2.5 多层次聚类(M LC A)算法

当用户对数据缺乏先验知识时,很难一下就确定好合适的阈值,往往是经过多次实验后,才能找到合适的阈值参数。在其它聚类算法中,当用户改变阈值后,往往需要重新进行聚类计算,每次所消耗的时间基本一样,这使得用户每修改一次阈值参数就要耗费大量时间。而使用本文提出的NNAF算法后,如果用户改变阈值,再使用M LC A(Multi2layer Cluster Alg orithm)算法,则可以节省90%以上的时间。从而可以快速得到不同层次的聚类,进而找到满足要求的阈值参数和聚类。在这里,假设新的距离阈值大于上次聚类的距离阈值。

算法4M LC A算法。

输入:点集V={p1,p2,…,p n}为未归类的点,上次的距离阈值d1和新的距离阈值d2(d2>d1);数量阈值q,已有最大类标号i。

输出:新的聚类。

Begin

 01.堆栈Stack=NU LL;

 02.P oint=NU LL;

 03.While(V<>NU LL)

 04. {

 05. Push(V中任一个点),把该点赋给P oint,并

把它从V中删除;

 06. Repeate

 07. I f point.Distance<=d2

 08. Then Case P oint的最近邻点的Cluster属性

值of

 09. 1.不为空且相同:P oint.Cluster=P oint的最

近邻点的Cluster属性值;

 10. 2.不为空且不相同:把这几类Cluster合并成

一类,并把P oint也归为这一类;

 11. 3.为空:P oint.Cluster=i+1;Push(点P oint

的最近邻点),并把这些点从V中删除;

 12. I f 点P oint的Anti2neighbors中存在Cluster

值为空的点

 13. Then Push(P oint.Anti2neighbors中Cluster值

为空的点),把压入堆栈的点的Cluster置为

P oint.cluster,并把这些点从V中删除;

 14. P oint=P op;

 15. Until(堆栈Stack=NU LL);

 16. i=i+1;

 17. }

 18.I f (某类包含的点的个数>q)

 19.Then 输出这些类别

End.

在M LC A算法中,而当用户输入的距离阈值增大时,需要已知满足距离阈值的最近邻点。对仅满足新的阈值条件的点进行聚类的过程中,第09-11

79

第6期胡建军,等:基于最近邻优先的高效聚类算法

行处理栈顶点,当其所有最近邻点归属于同一类,则该点也属于这一类;当其所有最近邻点分属于不同的类别,则因该数据的增加,需合并这些类别为同一类,并把该点归于这一类;当其所有最近邻点的Cluster为空时,则形成一个新类,并把该点归于这一新类。第12-13行把以栈顶点为最近邻点的点归于栈顶点这一类。第18、19行输出满足阈值条件的类别。

从以上算法可以看出,当用户改变阈值重新聚类时,已经归类的点无须重新聚类,只是在需要时合并不同的类别。因此,所需时间比重新开始聚类减少90%以上。所以,用M LC A算法可以快速获得不同层次的高质量聚类。

2.6 算法分析

使用本文提出的聚类算法,用户所需的先验知识少,仅输入两个阈值参数就可以了。对于阈值设定的大小,用户可以通过多次试验,直到得出满意的聚类为止。当用户改变阈值重新聚类时,使用M L2 C A算法可以快速得到各种不同粒度的聚类。

NNAF算法是根据数据点的最近邻点得出的聚类,它与聚类的形状无关,与选择的起始点无关,与数据的维度无关,较好地反映了事物之间的本质规律,而且需要的先验知识少,降低了用户选择参数的难度。因此该算法适合求任意维度、任意形状的聚类。该算法只需扫描一遍数据库,因而它的时间复杂度为O(n)。如果再加上寻找最近邻点的时间,则整个算法的时间复杂度为O(n3log(n))。如果是对图像数据进行扫描,则扫描后的数据就已排好序,从而省去了排序时间。这样,整个算法的时间复杂度就会降为O(n)。

3 实验结果

使用人工合成的数据,在赛扬1G/256M的PC 机上,使用Windows XP操作系统,用Delphi编写程序,对本文提出的算法进行了实验。首先使用二维数据进行实验,原始数据的分布如图1所示。

在这组数据中,采用了具有噪声的不同分布形状的数据。对于这样的数据分布,很多传统的聚类算法将无能为力。而采用NNAF算法,得到的聚类结果如图2所示。

实验结果表明,本文提出的算法可以有效处理具有噪声的以任意形状分布的数据的聚类问题。

为了说明S NN算法找最近邻点的高效性,用了两种不同的方法搜索最近邻点,一种是S NN方法,另一种就是传统的逐点比较法。实验结果如表1所示。其中第一列为使用的数据量,第二、三列分别是两种不同算法在不同数据量下所用的时间,时间单位是毫秒。可以看出,S NN算法远远优于传统算法,效率可以提高2-3数量级

图1 参考数据集

Fig.1 

Dataset

图2 NNAF算法聚类结果

Fig.2 The clustering result by NNAF

表1 寻找最近邻点的时间比较

T ab.1 Time of searching nearest neighbors

Data Quantity T ime of S NN/ms T ime of T raditional alg orithm/ms

2000395587

40006910825

600010017314

800012923052

1000016028892

1062417929161

在图3中,采用NNAF算法对二维数据进行聚类实验,所设距离阈值是2,数量阈值是30。横坐标是数据点的个数,单位是K;纵坐标是聚类所用时间,单位是ms。可以看出聚类所用时间与数据量成线性关系。在图3中,没有把NNAF算法与最短距离法相比较,是由于NNAF算法所用时间与其相比太少,很难画在一个图中。

89四川大学学报(工程科学版)第36卷

图3 NNAF 聚类算法所用时间与数据量的关系

Fig.3 The relationship of clustering time and qu antity of

objects by NNAF

很多聚类算法可以有效地处理低维数据,当维

度超过10维以后,其效率将显著降低,出现了维度灾难。而在本文所提的算法中,NNAF 算法和数据的维度无关,只有搜索最近邻点的S NN 算法和数据的维度相关。因此只对S NN 算法进行了高维数据的实验。

实验结果如图4所示。纵坐标是搜索最近邻点所用时间,单位是ms ,横坐标是使用数据的维度。所用数据量是4000个

图4 S NN 算法寻找最近邻点所用时间与维度的关系

Fig.4 The relationship of searching nearest neighbors time

and dimensionality by SNN

图4表明,S NN 算法搜索最近邻点所用时间随

着维度的增长增加并不明显。

4 结 论

提出了一系列处理高维空间数据聚类的算法,提出了相关定理并从理论上加以证明。实验表明该算法是有效的,可以快速产生不同层次的高质量聚类。参考文献:

[1]Han J W ,K ambr M.Data mining concepts and techniques

[M].Beijing :Higher Education Press ,2001.145~176.

[2]K au fan L ,R ousseeuw P J.Finding groups in data :an introduc 2tion to cluster analysis [M ].New Y ork :John Wiley &S ons ,1990.

[3]G uha S ,Rastogi R ,Shim K.C URE:an efficient clustering al 2g orithm for large databases[A].Haas L M ,T iwary A.Proceed 2ings of the AC M SIG M OD International C on ference on Manage 2

ment of Data[C].Seattle :AC M Press ,1998.73~84.[4]Ester M ,K riegel H P ,Sander J ,et al.A density based alg o 2rithm for discovering clusters in large spatial databases with noise [A].S im oudis E ,Han J W ,Fayyad U M.Proceedings of the 2nd International C on ference on K nowledge Discovery and Data Mining[C].P ortland :AAAI Press ,1996.226~231.[5]Agrawal R ,G ehrke J ,G unopolos D ,et al.Automatic subspace clustering of high dimensional data for data mining application [A].Haas L M ,T iwary A.Proceedings of the AC M SIG M OD International C on ference on Management of Data [C ].Seattle :AC M Press ,1998.94~105.

[6]Zhang T ,Ramakrishnan R ,Livny M.BIRCH :an efficient data clustering method for very large database[R].C omputer Sciences Dept ,Univ of Wisconsin 2Madis on ,1995.

[7]Zhang T ,Ramakrishnan R ,Livny M.BIRCH :an efficient data

clustering method for very large databases[A ].Jagadish H V ,Mumick I S.Proceedings of the 1996AC M SIG M OD Interna 2tional C on ference on Management of Data [C ].Quebec :AC M Press ,1996.103~114.

[8]Beyer K S ,G oldstein J ,Ramakrishnan R ,et al.When is ’near 2

est neighbor ’meaning ful ?[A ].Beeri C ,Buneman P.Proceed 2ings of the 7th International C on ference on Data Theory [C ].IC DT ’99.LNCS1540,Jerusalem ,Israel :S pringer ,1999.217

~235.

[9]K arypis G,Han E H ,K umar V.CH AME LE ON :a hierarchical clustering alg orithm using dynamic m odeling[J ].IEEE C omput 2er ,1999,32(8):68~75.

(编辑 杨 蓓)

9

9第6期胡建军,等:基于最近邻优先的高效聚类算法

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

数据挖掘聚类算法课程设计报告

数据挖掘聚类问题(Plants Data Set)实验报告 1.数据源描述 1.1数据特征 本实验用到的是关于植物信息的数据集,其中包含了每一种植物(种类和科属)以及它们生长的地区。数据集中总共有68个地区,主要分布在美国和加拿大。一条数据(对应于文件中的一行)包含一种植物(或者某一科属)及其在上述68个地区中的分布情况。可以这样理解,该数据集中每一条数据包含两部分内容,如下图所示。 图1 数据格式 例如一条数据:abronia fragrans,az,co,ks,mt,ne,nm,nd,ok,sd,tx,ut,wa,wy。其中abronia fragrans是植物名称(abronia是科属,fragrans是名称),从az一直到wy 是该植物的分布区域,采用缩写形式表示,如az代表的是美国Arizona州。植物名称和分布地区用逗号隔开,各地区之间也用逗号隔开。 1.2任务要求 聚类。采用聚类算法根据某种特征对所给数据集进行聚类分析,对于聚类形成的簇要使得簇内数据对象之间的差异尽可能小,簇之间的差距尽可能大。 2.数据预处理 2.1数据清理 所给数据集中包含一些对聚类过程无用的冗余数据。数据集中全部数据的组织结构是:先给出某一科属的植物及其所有分布地区,然后给出该科属下的具体植物及其分布地区。例如: ①abelmoschus,ct,dc,fl,hi,il,ky,la,md,mi,ms,nc,sc,va,pr,vi ②abelmoschus esculentus,ct,dc,fl,il,ky,la,md,mi,ms,nc,sc,va,pr,vi ③abelmoschus moschatus,hi,pr 上述数据中第①行给出了所有属于abelmoschus这一科属的植物的分布地区,接下来的②③两行分别列出了属于abelmoschus科属的两种具体植物及其分布地区。从中可以看出后两行给出的所有地区的并集正是第一行给出的地区集

模式识别最近邻和fisher分类matlab实验报告

一、Fisher 线性判别 Fisher 线性判别是统计模式识别的基本方法之一。它简单,容易实现,且计算量和存储量小,是实际应用中最常用的方法之一。Fisher 判别法Fisher 在1936年发表的论文中首次提出的线性判别法。Fisher 判别法的基本思想是寻找一个最好的投影,当特征向量x 从d 维空间映射到这个方向时,两类能最好的分开。这个方法实际上涉及到特征维数的压缩问题。 一维空间的Fisher 线性判别函数为: 2 1212 ()()F m m J w S S -= + (1) i m = ∑x N 1,i=1,2 (2) 2,1,)()(=--=∑∈i m x m x S T i x i i i ξ (3) 其中,1m 和2m 是两个样本的均值,1S ,2S 分别为各类样本的的类内离散度。投影方向w 为: )(211 m m S w w -=- (4) 12w S S S =+ (5) 在Fisher 判决函数中,分子反应了映射后两类中心的距离平方,该值越大,类间可分性越好;分母反应了两类的类内的离散度,其值越小越好;从总体上讲,()F J w 的值越大越好,在这种可分性评价标准下,使()F J w 达到最大值的w 即为最佳投影方向。

1.1、 Fisher线性判别实验流程图

1.2 Fisher线性判别mtalab代码 data=importdata('C:\Users\zzd\Desktop\data-ch5.mat'); data1=data.data; data2=https://www.360docs.net/doc/6416162384.html,bel; sample1=data1(1:25,:); sample2=data1(51:75,:); sample=[sample1 sample2]; sp_l=data2(26:75); test1=data1(26:50,:); test2=data1(76:100,:); test=[test1 test2]; lth=zeros(50,50); sample_m1=mean(sample1); sample_m2=mean(sample2); m1=sample_m1'; m2=sample_m2'; sb=(m1-m2)*(m1-m2)'; s1=zeros(2); for n=1:25 temp = (sample1(n,:)'-m1)*(sample1(n,:)'-m1)'; s1=s1+temp; end; s2=zeros(2); for n=1:25 temp = (sample2(n,:)'-m2)*(sample2(n,:)'-m2)'; s2 = s2+temp; end; sw=s1+s2; vw=inv(sw)*(m1-m2); a_m1 = vw'*m1; a_m2 = vw'*m2; w0 = (a_m1+a_m2)/2;

实验三 K-均值聚类算法实验报告

实验三 K-Means聚类算法 一、实验目的 1) 加深对非监督学习的理解和认识 2) 掌握动态聚类方法K-Means 算法的设计方法 二、实验环境 1) 具有相关编程软件的PC机 三、实验原理 1) 非监督学习的理论基础 2) 动态聚类分析的思想和理论依据 3) 聚类算法的评价指标 四、算法思想 K-均值算法的主要思想是先在需要分类的数据中寻找K组数据作为初始聚类中心,然后计算其他数据距离这三个聚类中心的距离,将数据归入与其距离最近的聚类中心,之后再对这K个聚类的数据计算均值,作为新的聚类中心,继续以上步骤,直到新的聚类中心与上一次的聚类中心值相等时结束算法。 实验代码 function km(k,A)%函数名里不要出现“-” warning off [n,p]=size(A);%输入数据有n个样本,p个属性 cid=ones(k,p+1);%聚类中心组成k行p列的矩阵,k表示第几类,p是属性 %A(:,p+1)=100; A(:,p+1)=0; for i=1:k %cid(i,:)=A(i,:); %直接取前三个元祖作为聚类中心 m=i*floor(n/k)-floor(rand(1,1)*(n/k)) cid(i,:)=A(m,:); cid; end Asum=0; Csum2=NaN; flags=1; times=1; while flags flags=0; times=times+1; %计算每个向量到聚类中心的欧氏距离 for i=1:n

for j=1:k dist(i,j)=sqrt(sum((A(i,:)-cid(j,:)).^2));%欧氏距离 end %A(i,p+1)=min(dist(i,:));%与中心的最小距离 [x,y]=find(dist(i,:)==min(dist(i,:))); [c,d]=size(find(y==A(i,p+1))); if c==0 %说明聚类中心变了 flags=flags+1; A(i,p+1)=y(1,1); else continue; end end i flags for j=1:k Asum=0; [r,c]=find(A(:,p+1)==j); cid(j,:)=mean(A(r,:),1); for m=1:length(r) Asum=Asum+sqrt(sum((A(r(m),:)-cid(j,:)).^2)); end Csum(1,j)=Asum; end sum(Csum(1,:)) %if sum(Csum(1,:))>Csum2 % break; %end Csum2=sum(Csum(1,:)); Csum; cid; %得到新的聚类中心 end times display('A矩阵,最后一列是所属类别'); A for j=1:k [a,b]=size(find(A(:,p+1)==j)); numK(j)=a; end numK times xlswrite('data.xls',A);

聚类分析算法解析.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)

各种聚类算法及改进算法的研究

论文关键词:数据挖掘;聚类算法;聚类分析论文摘要:该文详细阐述了数据挖掘领域的常用聚类算法及改进算法,并比较分析了其优缺点,提出了数据挖掘对聚类的典型要求,指出各自的特点,以便于人们更快、更容易地选择一种聚类算法解决特定问题和对聚类算法作进一步的研究。并给出了相应的算法评价标准、改进建议和聚类分析研究的热点、难点。上述工作将为聚类分析和数据挖掘等研究提供有益的参考。 1 引言随着经济社会和科学技术的高速发展,各行各业积累的数据量急剧增长,如何从海量的数据中提取有用的信息成为当务之急。聚类是将数据划分成群组的过程,即把数据对象分成多个类或簇,在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。它对未知数据的划分和分析起着非常有效的作用。通过聚类,能够识别密集和稀疏的区域,发现全局的分布模式,以及数据属性之间的相互关系等。为了找到效率高、通用性强的聚类方法人们从不同角度提出了许多种聚类算法,一般可分为基于层次的,基于划分的,基于密度的,基于网格的和基于模型的五大类。 2 数据挖掘对聚类算法的要求(1)可兼容性:要求聚类算法能够适应并处理属性不同类型的数据。(2)可伸缩性:要求聚类算法对大型数据集和小数据集都适用。(3)对用户专业知识要求最小化。(4)对数据类别簇的包容性:即聚类算法不仅能在用基本几何形式表达的数据上运行得很好,还要在以其他更高维度形式表现的数据上同样也能实现。(5)能有效识别并处理数据库的大量数据中普遍包含的异常值,空缺值或错误的不符合现实的数据。(6)聚类结果既要满足特定约束条件,又要具有良好聚类特性,且不丢失数据的真实信息。(7)可读性和可视性:能利用各种属性如颜色等以直观形式向用户显示数据挖掘的结果。(8)处理噪声数据的能力。(9)算法能否与输入顺序无关。 3 各种聚类算法介绍随着人们对数据挖掘的深入研究和了解,各种聚类算法的改进算法也相继提出,很多新算法在前人提出的算法中做了某些方面的提高和改进,且很多算法是有针对性地为特定的领域而设计。某些算法可能对某类数据在可行性、效率、精度或简单性上具有一定的优越性,但对其它类型的数据或在其他领域应用中则不一定还有优势。所以,我们必须清楚地了解各种算法的优缺点和应用范围,根据实际问题选择合适的算法。 3.1 基于层次的聚类算法基于层次的聚类算法对给定数据对象进行层次上的分解,可分为凝聚算法和分裂算法。 (1)自底向上的凝聚聚类方法。这种策略是以数据对象作为原子类,然后将这些原子类进行聚合。逐步聚合成越来越大的类,直到满足终止条件。凝聚算法的过程为:在初始时,每一个成员都组成一个单独的簇,在以后的迭代过程中,再把那些相互邻近的簇合并成一个簇,直到所有的成员组成一个簇为止。其时间和空间复杂性均为O(n2)。通过凝聚式的方法将两簇合并后,无法再将其分离到之前的状态。在凝聚聚类时,选择合适的类的个数和画出原始数据的图像很重要。 [!--empirenews.page--] (2)自顶向下分裂聚类方法。与凝聚法相反,该法先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终结条件。其主要思想是将那些成员之间不是非常紧密的簇进行分裂。跟凝聚式方法的方向相反,从一个簇出发,一步一步细化。它的优点在于研究者可以把注意力集中在数据的结构上面。一般情况下不使用分裂型方法,因为在较高的层很难进行正确的拆分。 3.2 基于密度的聚类算法很多算法都使用距离来描述数据之间的相似性,但对于非凸数据集,只用距离来描述是不够的。此时可用密度来取代距离描述相似性,即基于密度的聚类算法。它不是基于各种各样的距离,所以能克服基于距离的算法只能发现“类圆形”的聚类的缺点。其指导思想是:只要一个区域中的点的密度(对象或数据点的数目)大过某个阈值,就把它加到与之相近的聚类中去。该法从数据对象的分布密度出发,把密度足够大的区域连接起来,从而可发现任意形状的簇,并可用来过滤“噪声”数据。常见算法有DBSCAN,DENCLUE 等。[1][2][3]下一页 3.3 基于划分的聚类算法给定一个N个对象的元组或数据库,根据给定要创建的划分的数目k,将数据划分为k个组,每个组表示一个簇类(<=N)时满足如下两点:(1)每个组至少包含一个对象;(2)每个对

数据挖掘实验报告

《数据挖掘》Weka实验报告 姓名_学号_ 指导教师 开课学期2015 至2016 学年 2 学期完成日期2015年6月12日

1.实验目的 基于https://www.360docs.net/doc/6416162384.html,/ml/datasets/Breast+Cancer+WiscOnsin+%28Ori- ginal%29的数据,使用数据挖掘中的分类算法,运用Weka平台的基本功能对数据集进行分类,对算法结果进行性能比较,画出性能比较图,另外针对不同数量的训练集进行对比实验,并画出性能比较图训练并测试。 2.实验环境 实验采用Weka平台,数据使用来自https://www.360docs.net/doc/6416162384.html,/ml/Datasets/Br- east+Cancer+WiscOnsin+%28Original%29,主要使用其中的Breast Cancer Wisc- onsin (Original) Data Set数据。Weka是怀卡托智能分析系统的缩写,该系统由新西兰怀卡托大学开发。Weka使用Java写成的,并且限制在GNU通用公共证书的条件下发布。它可以运行于几乎所有操作平台,是一款免费的,非商业化的机器学习以及数据挖掘软件。Weka提供了一个统一界面,可结合预处理以及后处理方法,将许多不同的学习算法应用于任何所给的数据集,并评估由不同的学习方案所得出的结果。 3.实验步骤 3.1数据预处理 本实验是针对威斯康辛州(原始)的乳腺癌数据集进行分类,该表含有Sample code number(样本代码),Clump Thickness(丛厚度),Uniformity of Cell Size (均匀的细胞大小),Uniformity of Cell Shape (均匀的细胞形状),Marginal Adhesion(边际粘连),Single Epithelial Cell Size(单一的上皮细胞大小),Bare Nuclei(裸核),Bland Chromatin(平淡的染色质),Normal Nucleoli(正常的核仁),Mitoses(有丝分裂),Class(分类),其中第二项到第十项取值均为1-10,分类中2代表良性,4代表恶性。通过实验,希望能找出患乳腺癌客户各指标的分布情况。 该数据的数据属性如下: 1. Sample code number(numeric),样本代码; 2. Clump Thickness(numeric),丛厚度;

聚类算法总结

聚类算法的种类:

--------------------------------------------------------- 几种常用的聚类算法从可伸缩性、适合的数据类型、高维性(处理高维数据的能力)、异常数据的抗干扰度、聚类形状和算法效率6个方面进行了综合性能评价,评价结果如表1所示:

--------------------------------------------------------- 目前聚类分析研究的主要内容: 对聚类进行研究是数据挖掘中的一个热门方向,由于以上所介绍的聚类方法都 存在着某些缺点,因此近些年对于聚类分析的研究很多都专注于改进现有的聚 类方法或者是提出一种新的聚类方法。以下将对传统聚类方法中存在的问题以 及人们在这些问题上所做的努力做一个简单的总结: 1 从以上对传统的聚类分析方法所做的总结来看,不管是k-means方法,还是CURE方法,在进行聚类之前都需要用户事先确定要得到的聚类的数目。然而在 现实数据中,聚类的数目是未知的,通常要经过不断的实验来获得合适的聚类 数目,得到较好的聚类结果。 2 传统的聚类方法一般都是适合于某种情况的聚类,没有一种方法能够满足各 种情况下的聚类,比如BIRCH方法对于球状簇有很好的聚类性能,但是对于不 规则的聚类,则不能很好的工作;K-medoids方法不太受孤立点的影响,但是 其计算代价又很大。因此如何解决这个问题成为当前的一个研究热点,有学者 提出将不同的聚类思想进行融合以形成新的聚类算法,从而综合利用不同聚类 算法的优点,在一次聚类过程中综合利用多种聚类方法,能够有效的缓解这个 问题。 3 随着信息时代的到来,对大量的数据进行分析处理是一个很庞大的工作,这 就关系到一个计算效率的问题。有文献提出了一种基于最小生成树的聚类算法,该算法通过逐渐丢弃最长的边来实现聚类结果,当某条边的长度超过了某个阈值,那么更长边就不需要计算而直接丢弃,这样就极大地提高了计算效率,降 低了计算成本。 4 处理大规模数据和高维数据的能力有待于提高。目前许多聚类方法处理小规 模数据和低维数据时性能比较好,但是当数据规模增大,维度升高时,性能就 会急剧下降,比如k-medoids方法处理小规模数据时性能很好,但是随着数据 量增多,效率就逐渐下降,而现实生活中的数据大部分又都属于规模比较大、 维度比较高的数据集。有文献提出了一种在高维空间挖掘映射聚类的方法PCKA (Projected Clustering based on the K-Means Algorithm),它从多个维度中选择属性相关的维度,去除不相关的维度,沿着相关维度进行聚类,以此对 高维数据进行聚类。 5 目前的许多算法都只是理论上的,经常处于某种假设之下,比如聚类能很好 的被分离,没有突出的孤立点等,但是现实数据通常是很复杂的,噪声很大, 因此如何有效的消除噪声的影响,提高处理现实数据的能力还有待进一步的提高。

对数据进行聚类分析实验报告

对数据进行聚类分析实验报告 1.方法背景 聚类分析又称群分析,是多元统计分析中研究样本或指标的一种主要的分类方法,在古老的分类学中,人们主要靠经验和专业知识,很少利用数学方法。随着生产技术和科学的发展,分类越来越细,以致有时仅凭经验和专业知识还不能进行确切分类,于是数学这个有用的工具逐渐被引进到分类学中,形成了数值分类学。近些年来,数理统计的多元分析方法有了迅速的发展,多元分析的技术自然被引用到分类学中,于是从数值分类学中逐渐的分离出聚类分析这个新的分支。结合了更为强大的数学工具的聚类分析方法已经越来越多应用到经济分析和社会工作分析中。在经济领域中,主要是根据影响国家、地区及至单个企业的经济效益、发展水平的各项指标进行聚类分析,然后很据分析结果进行综合评价,以便得出科学的结论。 2.基本要求 用FAMALE.TXT、MALE.TXT和/或test2.txt的数据作为本次实验使用的样本集,利用C均值和分级聚类方法对样本集进行聚类分析,对结果进行分析,从而加深对所学内容的理解和感性认识。 3.实验要求 (1)把FAMALE.TXT和MALE.TXT两个文件合并成一个,同时采用身高和体重数据作为特征,设类别数为2,利用C均值聚类方法对数据进行聚类,并将聚类结果表示在二维平面上。尝试不同初始值对此数据集是否会造成不同的结果。 (2)对1中的数据利用C均值聚类方法分别进行两类、三类、四类、五类聚类,画出聚类指标与类别数之间的关系曲线,探讨是否可以确定出合理的类别数目。 (3)对1中的数据利用分级聚类方法进行聚类,分析聚类结果,体会分级聚类方法。。(4)利用test2.txt数据或者把test2.txt的数据与上述1中的数据合并在一起,重复上述实验,考察结果是否有变化,对观察到的现象进行分析,写出体会 4.实验步骤及流程图 根据以上实验要求,本次试验我们将分为两组:一、首先对FEMALE 与MALE中数据组成的样本按照上面要求用C均值法进行聚类分析,然后对FEMALE、MALE、test2中数据组成的样本集用C均值法进行聚类分析,比较二者结果。二、将上述两个样本用分即聚类方法进行聚类,观察聚类结果。并将两种聚类结果进行比较。 (1)、C均值算法思想

数据挖掘中的聚类分析方法

计算机工程应用技术本栏目责任编辑:贾薇薇 数据挖掘中的聚类分析方法 黄利文 (泉州师范学院理工学院,福建泉州362000) 摘要:聚类分析是多元统计分析的重要方法之一,该方法在许多领域都有广泛的应用。本文首先对聚类的分类做简要的介绍,然后给出了常用的聚类分析方法的基本思想和优缺点,并对常用的聚类方法作比较分析,以便人们根据实际的问题选择合适的聚类方法。 关键词:聚类分析;数据挖掘 中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)12-20564-02 ClusterAnlaysisMethodsofDataMining HUANGLi-wen (SchoolofScience,QuanzhouNormalUniversity,Quanzhou362000,China) Abstract:Clusteranalysisisoneoftheimportantmethodsofmultivariatestatisticalanalysis,andthismethodhasawiderangeofapplica-tionsinmanyfields.Inthispaper,theclassificationoftheclusterisintroducedbriefly,andthengivessomecommonmethodsofclusteranalysisandtheadvantagesanddisadvantagesofthesemethods,andtheseclusteringmethodwerecomparedandanslyzedsothatpeoplecanchosesuitableclusteringmethodsaccordingtotheactualissues. Keywords:ClusterAnalysis;DataMining 1引言 聚类分析是数据挖掘中的重要方法之一,它把一个没有类别标记的样本集按某种准则划分成若干个子类,使相似的样品尽可能归为一类,而不相似的样品尽量划分到不同的类中。目前,该方法已经被广泛地应用于生物、气候学、经济学和遥感等许多领域,其目的在于区别不同事物并认识事物间的相似性。因此,聚类分析的研究具有重要的意义。 本文主要介绍常用的一些聚类方法,并从聚类的可伸缩性、类的形状识别、抗“噪声”能力、处理高维能力和算法效率五个方面对其进行比较分析,以便人们根据实际的问题选择合适的聚类方法。 2聚类的分类 聚类分析给人们提供了丰富多彩的分类方法,这些方法大致可归纳为以下几种[1,2,3,4]:划分方法、层次方法、基于密度的聚类方法、基于网格的聚类方法和基于模型的聚类方法。 2.1划分法(partitiongingmethods) 给定一个含有n个对象(或元组)的数据库,采用一个划分方法构建数据的k个划分,每个划分表示一个聚簇,且k≤n。在聚类的过程中,需预先给定划分的数目k,并初始化k个划分,然后采用迭代的方法进行改进划分,使得在同一类中的对象之间尽可能地相似,而不同类的中的对象之间尽可能地相异。这种聚类方法适用于中小数据集,对大规模的数据集进行聚类时需要作进一步的改进。 2.2层次法(hietarchicalmethods) 层次法对给定数据对象集合按层次进行分解,分解的结果形成一颗以数据子集为节点的聚类树,它表明类与类之间的相互关系。根据层次分解是自低向上还是自顶向下,可分为凝聚聚类法和分解聚类法:凝聚聚类法的主要思想是将每个对象作为一个单独的一个类,然后相继地合并相近的对象和类,直到所有的类合并为一个,或者符合预先给定的终止条件;分裂聚类法的主要思想是将所有的对象置于一个簇中,在迭代的每一步中,一个簇被分裂为更小的簇,直到最终每个对象在单独的一个簇中,或者符合预先给定的终止条件。在层次聚类法中,当数据对象集很大,且划分的类别数较少时,其速度较快,但是,该方法常常有这样的缺点:一个步骤(合并或分裂)完成,它就不能被取消,也就是说,开始错分的对象,以后无法再改变,从而使错分的对象不断增加,影响聚类的精度,此外,其抗“噪声”的能力也较弱,但是若把层次聚类和其他的聚类技术集成,形成多阶段聚类,聚类的效果有很大的提高。2.3基于密度的方法(density-basedmethods) 该方法的主要思想是只要临近区域的密度(对象或数据点的数目)超过某个阈值,就继续聚类。也就是说,对于给定的每个数据点,在一个给定范围的区域中必须至少包含某个数目的点。这样的方法就可以用来滤处"噪声"孤立点数据,发现任意形状的簇。2.4基于网格的方法(grid-basedmethods) 这种方法是把对象空间量化为有限数目的单元,形成一个网格结构。所有的聚类操作都在这个网格结构上进行。用这种方法进行聚类处理速度很快,其处理时间独立于数据对象的数目,只与量化空间中每一维的单元数目有关。 2.5基于模型的方法(model-basedmethod) 基于模型的方法为每个簇假定一个模型,寻找数据对给定模型的最佳拟合。该方法经常基于这样的假设:数据是根据潜在的概 收稿日期:2008-02-17 作者简介:黄利文(1979-),男,助教。

Parzen窗估计与KN近邻估计实验报告

模式识别实验报告 题目:Parzen 窗估计与KN 近邻估计 学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 xxxx 指导教师 xxxx 20xx 年xx 月xx 日 Parzen 窗估计与KN 近邻估计 装 订 线

一、实验目的 本实验的目的是学习Parzen窗估计和k最近邻估计方法。在之前的模式识别研究中,我们假设概率密度函数的参数形式已知,即判别函数J(.)的参数是已知的。本节使用非参数化的方法来处理任意形式的概率分布而不必事先考虑概率密度的参数形式。在模式识别中有躲在令人感兴趣的非参数化方法,Parzen窗估计和k最近邻估计就是两种经典的估计法。二、实验原理 1.非参数化概率密度的估计 对于未知概率密度函数的估计方法,其核心思想是:一个向量x落在区域R中的概率可表示为: 其中,P是概率密度函数p(x)的平滑版本,因此可以通过计算P来估计概率密度函数p(x),假设n个样本x1,x2,…,xn,是根据概率密度函数p(x)独立同分布的抽取得到,这样,有k个样本落在区域R中的概率服从以下分布: 其中k的期望值为: k的分布在均值附近有着非常显著的波峰,因此若样本个数n足够大时,使用k/n作为概率P的一个估计将非常准确。假设p(x)是连续的,且区域R足够小,则有: 如下图所示,以上公式产生一个特定值的相对概率,当n趋近于无穷大时,曲线的形状逼近一个δ函数,该函数即是真实的概率。公式中的V是区域R所包含的体积。综上所述,可以得到关于概率密度函数p(x)的估计为:

在实际中,为了估计x处的概率密度函数,需要构造包含点x的区域R1,R2,…,Rn。第一个区域使用1个样本,第二个区域使用2个样本,以此类推。记Vn为Rn的体积。kn为落在区间Rn中的样本个数,而pn (x)表示为对p(x)的第n次估计: 欲满足pn(x)收敛:pn(x)→p(x),需要满足以下三个条件: 有两种经常采用的获得这种区域序列的途径,如下图所示。其中“Parzen窗方法”就是根据某一个确定的体积函数,比如Vn=1/√n来逐渐收缩一个给定的初始区间。这就要求随机变量kn和kn/n能够保证pn (x)能收敛到p(x)。第二种“k-近邻法”则是先确定kn为n的某个函数,如kn=√n。这样,体积需要逐渐生长,直到最后能包含进x的kn个相邻点。

聚类分析K-means算法综述

聚类分析K-means算法综述 摘要:介绍K-means聚类算法的概念,初步了解算法的基本步骤,通过对算法缺点的分析,对算法已有的优化方法进行简单分析,以及对算法的应用领域、算法未来的研究方向及应用发展趋势作恰当的介绍。 关键词:K-means聚类算法基本步骤优化方法应用领域研究方向应用发展趋势 算法概述 K-means聚类算法是一种基于质心的划分方法,输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类。 评定标准:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算。 解释:基于质心的划分方法就是将簇中的所有对象的平均值看做簇的质心,然后根据一个数据对象与簇质心的距离,再将该对象赋予最近的簇。 k-means 算法基本步骤 (1)从n个数据对象任意选择k 个对象作为初始聚类中心 (2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分 (3)重新计算每个(有变化)聚类的均值(中心对象) (4)计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2) 形式化描述 输入:数据集D,划分簇的个数k 输出:k个簇的集合 (1)从数据集D中任意选择k个对象作为初始簇的中心; (2)Repeat (3)For数据集D中每个对象P do (4)计算对象P到k个簇中心的距离 (5)将对象P指派到与其最近(距离最短)的簇;

(6)End For (7)计算每个簇中对象的均值,作为新的簇的中心; (8)Until k个簇的簇中心不再发生变化 对算法已有优化方法的分析 (1)K-means算法中聚类个数K需要预先给定 这个K值的选定是非常难以估计的,很多时候,我们事先并不知道给定的数据集应该分成多少个类别才最合适,这也是K一means算法的一个不足"有的算法是通过类的自动合并和分裂得到较为合理的类型数目k,例如Is0DAIA算法"关于K一means算法中聚类数目K 值的确定,在文献中,根据了方差分析理论,应用混合F统计量来确定最佳分类数,并应用了模糊划分嫡来验证最佳分类数的正确性。在文献中,使用了一种结合全协方差矩阵RPCL算法,并逐步删除那些只包含少量训练数据的类。文献中针对“聚类的有效性问题”提出武汉理工大学硕士学位论文了一种新的有效性指标:V(k km) = Intra(k) + Inter(k) / Inter(k max),其中k max是可聚类的最大数目,目的是选择最佳聚类个数使得有效性指标达到最小。文献中使用的是一种称为次胜者受罚的竞争学习规则来自动决定类的适当数目"它的思想是:对每个输入而言不仅竞争获胜单元的权值被修正以适应输入值,而且对次胜单元采用惩罚的方法使之远离输入值。 (2)算法对初始值的选取依赖性极大以及算法常陷入局部极小解 不同的初始值,结果往往不同。K-means算法首先随机地选取k个点作为初始聚类种子,再利用迭代的重定位技术直到算法收敛。因此,初值的不同可能导致算法聚类效果的不稳定,并且,K-means算法常采用误差平方和准则函数作为聚类准则函数(目标函数)。目标函数往往存在很多个局部极小值,只有一个属于全局最小,由于算法每次开始选取的初始聚类中心落入非凸函数曲面的“位置”往往偏离全局最优解的搜索范围,因此通过迭代运算,目标函数常常达到局部最小,得不到全局最小。对于这个问题的解决,许多算法采用遗传算法(GA),例如文献中采用遗传算法GA进行初始化,以内部聚类准则作为评价指标。 (3)从K-means算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大 所以需要对算法的时间复杂度进行分析,改进提高算法应用范围。在文献中从该算法的时间复杂度进行分析考虑,通过一定的相似性准则来去掉聚类中心的候选集,而在文献中,使用的K-meanS算法是对样本数据进行聚类。无论是初始点的选择还是一次迭代完成时对数据的调整,都是建立在随机选取的样本数据的基础之上,这样可以提高算法的收敛速度。

k均值聚类报告

K-均值聚类算法报告 摘要 K-均值是聚类方法中长用的一种划分方法,有很多优点,本文主要对K-均值是聚类方法的产生,工作原理,一般步骤,以及它的源码进行简单的介绍,了解K-均值是聚类!!! (一)课题名称:K-均值聚类(K-means clustering) (二)课题分析: J.B.MacQueen 在 1967 年提出的K-means算法[22]到目前为止用于科学和工业应用的诸多聚类算法中一种极有影响的技术。它是聚类方法中一个基本的划分方法,常常采用误差平方和准则函数作为聚类准则函数,误差平方和准则函数定义为: K-means 算法的特点——采用两阶段反复循环过程算法,结束的条件是不再有数据元素被重新分配: ① 指定聚类,即指定数据到某一个聚类,使得它与这个聚类中心的距离比它到其它聚类中心的距离要近。 ② 修改聚类中心。 优点:本算法确定的K 个划分到达平方误差最小。当聚类是密集的,且类与类之间区别明显时,效果较好。对于处理大数据集,这个算法是相对可伸缩和高效的,计算的复杂度为O(NKt),其中N是数据对象的数目,t是迭代的次数。一般来说,K<

(1)从 n个数据对象任意选择 k 个对象作为初始聚类中心; (2)循环(3)到(4)直到每个聚类不再发生变化为止; (3)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分; (4)重新计算每个(有变化)聚类的均值(中心对象) k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。 k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。 (三)总体检索思路: 利用goole,百度,搜狗等搜索引擎及校内的一些数据库进行相关内容的检索。主要检索内容为K-均值聚类算法的工作原理,一般步骤,源码。 (四)检索过程记录: 关键词:K-均值聚类算法 搜索引擎:百度 检索内容:①K-均值聚类算法工作原理 ②K-均值聚类算法的一般步骤 ③K-均值聚类算法的源码

基于k—means聚类算法的试卷成绩分析研究

基于k—means聚类算法的试卷成绩分析研 究 第39卷第4期 2009年7月 河南大学(自然科学版) JournalofHenanUniversity(NaturalScience) V o1.39NO.4 Ju1.2009 基于k—means聚类算法的试卷成绩分析研究 谭庆' (洛阳师范学院信息技术学院,河南洛阳471022) 摘要:研究_rk-means聚类算法,并将此算法应用于高校学生试卷成绩分析中.首先对数据进行了预处理,然后 使用k-means算法,对学生试卷成绩进行分类评价.用所获得的结果指导学生的学习和今后的教学工作. 关键词:数据挖掘;聚类;k-means算法;试卷成绩 中圈分类号:TP311文献标志码:A文章编号:1003—4978(2009)04—0412—04 AnalysisandResearchofGradesofExaminationPaper BasedonK—meansClusteringAlgorithm TANQing (Acaderny.l,InformationTechnologY,LuoyangNormalUniversity,LuoyangHenan47102 2,China) Abstract:Thispaperresearcheslhekmeansclusteringalgorithmandappliesittotheanalysiso fthegradedataof examinationpaperofhighereducationschoolSstudents.Firstly,itpreprocessesthedatabefor eminingThen,it usesthek—

KNN算法实验报告

KNN算法实验报告 一试验原理 K最近邻(k-NearestNeighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。 该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决 定待分样本所属的类别。KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。 KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。 该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量

并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。 二试验步骤 那么根据以上的描述,我把结合使用反余弦匹配和kNN结合的过程分成以下几个步骤: 1.计算出样本数据和待分类数据的距离 2.为待分类数据选择k个与其距离最小的样本 3.统计出k个样本中大多数样本所属的分类 4.这个分类就是待分类数据所属的分类 数学表达:目标函数值可以是离散值(分类问题),也可以是连续值(回归问题).函数形势为f:n维空间R—〉一维空间R。 第一步:将数据集分为训练集(DTrn)和测试集(DTES)。 第二步:在测试集给定一个实例Xq;在训练集(DTrn)中找到与这个实例Xq的K-最近邻子集{X1、、、、XK},即:DKNN。 第三步:计算这K-最近邻子集得目标值,经过加权平均: ^f(Xq)=(f(X1)+...+f(XK))/k作为f(Xq)的近似估计。改进的地方:对

相关文档
最新文档