ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:54.34KB ,
资源ID:24229132      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24229132.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CURE聚类算法的实现.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

CURE聚类算法的实现.docx

1、CURE聚类算法的实现CURE聚类算法的实现任务背景聚类(clustering)就是将数据对象分组成为多个类或簇(cluster),在同一簇中的对象之间具有较高的相似度,而不同的簇中对象差别较大。相异度是根据描述对象的属性值来计算的。距离是经常采用的度量方式。聚类分析源于许多研究领域,包括数据挖掘,统计学,生物学,以及机器学习。 作为统计学的一个分支,聚类分析已经被广泛的研究了许多年,主要集中在基于距离的聚类分析。基于k-means(k-平均值),k-medoids(k-中心点)和其他一些方法的聚类分析工具已经被加入到许多统计分析软件包或系统中,例如S-Plus,SPSS,以及SAS。 CUR

2、E(Clustering Using Representatives)是一种针对大型数据库的高效的聚类算法。基于划分的传统的聚类算法得到的是球状的,相等大小的聚类,对异常数据比较脆弱。CURE采用了用多个点代表一个簇的方法,可以较好的处理以上问题。并且在处理大数据量的时候采用了随机取样,分区的方法,来提高其效率,使得其可以高效的处理大量数据。 基本目标聚类算法CURE的算法实现。对图形进行聚类,在时间,结果方面对其性能进行评估。 算法流程CURE的算法在开始时,每个点都是一个簇,然后将距离最近的簇结合,一直到簇的个数为要求的K。它是一种分裂的层次聚类。算法分为以下6步: 1)从源数据对象中抽取

3、一个随机样本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_m

4、in(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 xQ do /*调节因合并带来的T和Q的变化*/ 11. if (dist(w,x) dist(w,w.cloest) 12. w.cloest := x 13. if x.cl

5、oest is either u or v 14. if dist(x, x.cloest) dist(x, w) 21. x.cloest := w 22. relocate(Q, x) 23. 24. 25. insert(Q, w) 26. end 此程序段用到的数据结构有Heap,和K-DTree。为了合并距离最短的两个聚类,需要构建一个K-DTree来找到空间中的一聚类最近的一个聚类,之后把K-DTree 中的聚类按照其与最近的聚类的距离进行排序(用的是堆排序),找到最近的两个的聚类,将它们合并(对应函数merge()。 (2)Merge算法 procedure merge(u, v

6、) /*合并两个簇,并确定新簇的中心点和代表点*/ begin 1. w := u v 2. w.mean := /* 求新簇w的中心点*/ 3. tmpSet := /*用来存c个代表点的集合*/ 4. for i := 1 to c do /*选出c个代表点*/ 5. maxDist := 0 /*距中心点或代表点最远的点作为代表点*/ 6. foreach point p in cluster w do 7. if i = 1 8. minDist := dist( p, w.mean ) 9. else 10. minDist := min dist( p, q ) : q tmpSe

7、t 11. if( minDist = maxDist ) 12. maxDist := minDist 13. maxPoint := p 14. 15. 16. tmpSet := tmpSet maxPoint 17. 18. foreach point p in tmpSet do /*按照收缩因子处理代表点*/ 19. w.rep := w.rep p + *( w.mean p ) 20. return w end 此程序段同时描述了如何选取代表点: 对每个簇选择c个分布较好的点,通过系数向中心收缩,其中0 1。小,收缩小,可以区分拉长的簇;大,靠近中心点,得到的簇更紧凑。 显然,

8、如果=1,聚类w的代表点就是w.mean,即其中心点,此时类似于Centroid-base approach,即中心点代表簇,当=0,此时类似于All-points approach,即所有点代表簇。 簇之间的距离定义为:两个簇的代表点之间的最小距离,即: 点到簇的距离与此类似,是该点到最近的簇的代表点的距离。 c个代表点体现了簇的物理几何形状;向中心收缩可以降低异常点的影响。两个簇组合后的新簇,则重新选择c个点作为簇的代表。 (3)数据取样: 在对大规模数据库进行聚类分析时,数据取样是一种常用的提高聚类效率的方法,即对整个数据库进行数据取样,然后对取样数据库进行聚类分析,而对未被取样的数据进

9、行聚类标注。这样,对大规模数据库的聚类分析就转化为对较小规模的取样数据库的聚类分析。由于没有考虑到整个数据库的数据,聚类质量必然会受到影响。但是,只要取样均匀且取样率适当,则取样数据库也可以较好地反映整个数据库状况,从而在保证聚类质量的同时提高聚类效率。 定理1:对一个簇u,如果取样大小s满足: 那么,样本中属于簇u的点的个数小于f|u|的概率小于, 0= 1。或者指定一个距离阈值,当最近簇距离大于阈值,则停止。在CURE算法中, First pass 每个分区: Second pass 总聚类: p,q的最好选值:使n/pq为k的23倍。 其优点是:减少执行时间;减少输入数据,保证可以在内存

10、中存放所有聚类的代表点。 (5)标记数据所属的簇 因为CURE用c个点来代表一个聚类,因此在聚类完成后,对未参加聚类的数据或新增的数据进行标注从而计算聚类的可信度时,其可以准确的识别非球状数据集,使得标注更加准确。 (6)异常点的处理 1随机取样,过滤了大多数的异常点; 2异常点所在的簇的点个数少于正常簇的点的个数,此时分两个阶段消除异常点。 a. 第一阶段:增长速度慢的簇作为异常,以点的个数作为阈值。Fraction(簇的个数为初始簇个数的比例;比如:1/3)的取值很重要;当簇的个数减少到fraction时,开始作消除异常点的操作。 b. 第二阶段:在第一阶段中,可能有些相近的异常点已经组合

11、,所以进行第二阶段中异常点形成的簇非常小,很容易鉴别。 数据取样算法:在对大规模数据库进行聚类分析时,数据取样是一种常用的提高聚类效率的方法,即对整个数据库进行数据取样,然后对取样数据库进行聚类分析,而对未被取样的数据进行聚类标注。这样,对大规模数据库的聚类分析就转化为对较小规模的取样数据库的聚类分析。由于没有考虑到整个数据库的数据,聚类质量必然会受到影响。但是,只要取样均匀且取样率适当,则取样数据库也可以较好地反映整个数据库状况,从而在保证聚类质量的同时提高聚类效率。与以前的基于取样的聚类算法相比。 取样算法:这种算法只需扫描一遍被取样数据库,而且使用恒定的内存空间,便可以从N个记录中随机取

12、出n个取样记录。其基本思想是:从第N-n+1条记录开始,做下列操作。设当前处理的是第t个记录(n+1tN),u是产生的一个随机数(u0,t-1),若un,则把第u个记录替换成第t个记录。可以证明该算法能够得到均匀的取样结果。确定取样率很重要。为保证聚类质量,取样数据库应该能够有效地代表原数据库。若取样率太低,取样数据库必然会丢失原数据库的某些特质,导致聚类效果失真。 测试方法:对图形(事实上相当于2维的数据库数据)进行聚类。 输入:左图 输出:类似右图,即把两组点分开,可以用颜色的不同来表示 一个图形约有几万个点,取样数目在k*500至k*1000(k为分组的数目),左右,可以自己掌握。 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1