四种聚类方法之比较

四种聚类方法之比较
介绍了较为常见的k-means、层次聚类、SOM、FCM等四种聚类算法,阐述了各自的原理和使用步骤,利用国际通用测试数据集IRIS对这些算法进行了验证和比较。结果显示对该测试类型数据,FCM和k-means都具有较高的准确度,层次聚类准确度最差,而SOM则耗时最长。
关键词:聚类算法;k-means;层次聚类;SOM;FCM
聚类分析是一种重要的人类行为,早在孩提时代,一个人就通过不断改进下意识中的聚类模式来学会如何区分猫狗、动物植物。目前在许多领域都得到了广泛的研究和成功的应用,如用于模式识别、数据分析、图像处理、市场研究、客户分割、Web文档分类等[1]。
 聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。
 聚类技术[2]正在蓬勃发展,对此有贡献的研究领域包括数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等。各种聚类方法也被不断提出和改进,而不同的方法适合于不同类型的数据,因此对各种聚类方法、聚类效果的比较成为值得研究的课题。
1 聚类算法的分类
 目前,有大量的聚类算法[3]。而对于具体应用,聚类算法的选择取决于数据的类型、聚类的目的。如果聚类分析被用作描述或探查的工具,可以对同样的数据尝试多种算法,以发现数据可能揭示的结果。
 主要的聚类算法可以划分为如下几类:划分方法、层次方法、基于密度的方法、基于网格的方法以及基于模型的方法[4-6]。
 每一类中都存在着得到广泛应用的算法,例如:划分方法中的k-means[7]聚类算法、层次方法中的凝聚型层次聚类算法[8]、基于模型方法中的神经网络[9]聚类算法等。
 目前,聚类问题的研究不仅仅局限于上述的硬聚类,即每一个数据只能被归为一类,模糊聚类[10]也是聚类分析中研究较为广泛的一个分支。模糊聚类通过隶属函数来确定每个数据隶属于各个簇的程度,而不是将一个数据对象硬性地归类到某一簇中。目前已有很多关于模糊聚类的算法被提出,如著名的FCM算法等。
 本文主要对k-means聚类算法、凝聚型层次聚类算法、神经网络聚类算法之SOM,以及模糊聚类的FCM算法通过通用测试数据集进行聚类效果的比较和分析。
2 四种常用聚类算法研究
2.1 k-means聚类算法
 k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。
 k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如下:
 
 这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值[9]。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。k-means聚类算法的算法流程如下:
输入:包含n个对象的数据库和簇的数目k;
输出:k个簇,使平方误差准则最小。
步骤:
  (1) 任意选择k个对象作为初始的簇中心;
  (2) repeat;
  (3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;
  (4) 更新簇的平均值,即计算每个簇中对象的平均值;
  (5) until不再发生变化。
2.2 层次聚类算法
根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。
 凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。四种广泛采用的簇间距离度量方法如下:

这里给出采用最小距离的凝聚层次聚类算法流程:
 (1) 将每个对象看作一类,计算两两之间的最小距离;
 (2) 将距离最小的两个类合并成一个新类;
 (3) 重新计算新类与所有类之间的距离;
 (4) 重复(2)、(3),直到所有类最后合并成一类。
2.3 SOM聚类算法
 SOM神经网络[11]是由芬兰神经网络专家Kohonen教授提出的,该算法假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间(n维)到输出平面(2维)的降维映射,其映射具有拓扑特征保持性质,与实际的大脑处理有很强的理论联系。
 SOM网络包含输入层和输出层。输入层对应一个高维的输入向量,输出层由一系列组织在2维网格上的有序节点构成,输入节点与输出节点通过权重向量连接。学习过程中,找到与之距离最短的输出层单元,即获胜单元,对其更新。同时,将邻近区域的权值更新,使输出节点保持输入向量的拓扑特征。
 算法流程:
 (1) 网络初始化,对输出层每个节点权重赋初值;
 (2) 将输入样本中随机选取输入向量,找到与输入向量距离最小的权重向量;
 (3) 定义获胜单元,在获胜单元的邻近区域调整权重使其向输入向量靠拢;
 (4) 提供新样本、进行训练;
 (5) 收缩邻域半径、减小学习率、重复,直到小于允许值,输出聚类结果。
2.4 FCM聚类算法
 1965年美国加州大学柏克莱分校的扎德教授第一次提出了‘集合’的概念。经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面。为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析。用模糊数学的方法进行聚类分析,就是模糊聚类分析[12]。
  FCM算法是一种以隶属度来确定每个数据点属于某个聚类程度的算法。该聚类算法是传统硬聚类算法的一种改进。

算法流程:
 (1) 标准化数据矩阵;
 (2) 建立模糊相似矩阵,初始化隶属矩阵;
 (3) 算法开始迭代,直到目标函数收敛到极小值;
 (4) 根据迭代结果,由最后的隶属矩阵确定数据所属的类,显示最后的聚类结果。
3 四种聚类算法试验
3.1 试验数据
 实验中,选取专门用于测试分类、聚类算法的国际通用的UCI数据库中的IRIS[13]数据集,IRIS数据集包含150个样本数据,分别取自三种不同的莺尾属植物setosa、versicolor和virginica的花朵样本,每个数据含有4个属性,即萼片长度、萼片宽度、花瓣长度,单位为cm。在数据集上执行不同的聚类算法,可以得到不同精度的聚类结果。
3.2 试验结果说明
 文中基于前面所述各算法原理及算法流程,用matlab进行编程运算,得到表1所示聚类结果。

 如表1所示,对于四种聚类算法,按三方面进行比较:(1)聚错样本数:总的聚错的样本数,即各类中聚错的样本数的和;(2)运行时间:即聚类整个过程所耗费的时间,单位为s;(3)平均准确度:设原数据集有k个类,用ci表示第i类,ni为ci中样本的个数,mi为聚类正确的个数,则mi/ni为第i类中的精度,则平均精度为:

3.3 试验结果分析
四种聚类算法中,在运行时间及准确度方面综合考虑,k-means和FCM相对优于其他。但是,各个算法还是存在固定缺点:k-means聚类算法的初始点选择不稳定,是随机选取的,这就引起聚类结果的不稳定,本实验中虽是经过多次实验取的平均值,但是具体初始点的选择方法还需进一步研究;层次聚类虽然不需要确定分类数,但是一旦一个分裂或者合并被执行,就不能修正,聚类质量受限制;FCM对初始聚类中心敏感,需要人为确定聚类数,容易陷入局部最优解;SOM与实际大脑处理有很强的理论联系。但是处理时间较长,需要进一步研究使其适应大型数据库。
聚类分析因其在许多领域的成功应用而展现出诱人的应用前景,除经典聚类算法外,各种新的聚类方法正被不断被提出。

  • 鏁版嵁鎸栨帢鐨勫洓绉鍩烘湰鏂规硶
    绛旓細鏁版嵁鎸栨帢鐨鍥涚鍩烘湰鏂规硶鏈夛細鍒嗙被銆鑱氱被銆佸叧鑱旇鍒欏拰棰勬祴銆1銆佸垎绫伙細灏嗘暟鎹」鍒嗗埌宸叉湁鐨勭被鍒腑锛屽垎绫绘槸鏁版嵁鎸栨帢鐨勪竴涓噸瑕佷换鍔★紝涔熸槸鍏朵粬鍒嗘瀽鏂规硶鐨棰勫鐞嗘楠ゃ2銆佽仛绫伙細灏嗘暟鎹垎涓虹浉瀵圭被浼肩殑缁勬垨绨囷紝浣垮緱鍚屼竴缁勪腑鐨勫璞′箣闂村叿鏈夎緝楂樼殑鐩镐技搴︼紝鑰屼笉鍚岀粍涓殑瀵硅薄涔嬮棿鍏锋湁杈冮珮鐨勭浉寮傚害銆3銆佸叧鑱旇鍒欙細...
  • 瀛旈殭鐗瑰緛涓昏鐢ㄤ粈涔堝拰浠涔堜袱鏂归潰
    绛旓細鈶犵綏铔版江鏁欐巿鍒嗙被鏂规锛涒憽閭镐笘绁ユ暀鎺堝垎绫绘柟妗堬紱鈶㈠叾瀹冨垎绫绘柟妗堛3锛夊瓟闅欑粨鏋勫垎绫荤殑鏁板鍦拌川鏂规硶 甯哥敤鑱氱被鍒嗘瀽锛屼篃绉颁负鐐圭兢鍒嗘瀽銆佺兢鍒嗘瀽銆佷笡鍒嗘瀽銆佹棌鍒嗗垎鏋愮瓑銆傚畠鏄皢鍚勬牱鍝佺殑鍙橀噺锛岄氳繃鏌愮鏁板妯″瀷鏉ョ‘瀹氬畠浠箣闂寸殑浜茬枏鍏崇郴锛屽啀鎸夎繖绉嶄翰鐤忓叧绯昏繘琛屽綊绫汇傜洰鍓嶄富瑕佹湁绯荤粺鑱氱被銆佹ā绯婅仛绫汇佸浘璁鸿仛绫诲拰鍔ㄦ鑱氱被鍥涚...
  • 鐢╩atlab瀹炵幇鏈澶ф渶灏忚窛绂娉曡仛绫鍒嗘瀽
    绛旓細x=[75.2 0.14 1.86 0.91 5.21;75.15 0.16 2.11 0.74 4.93;72.19 0.13 1.52 0.69 4.65;72.35 0.13 1.37 0.83 4.87;72.74 0.10 1.41 0.72 4.99;73.29 0.033 1.07 0.17 3.15;73.72 0.033 0.77 0.28 2.78;];绯荤粺璺濈娉曞叡鍖呭惈鍥涚鍏蜂綋鑱氱被鏂规硶锛...
  • 鍒嗙被鏁版嵁鍒嗘瀽涓殑鎷熷悎浼樺害妫楠?
    绛旓細鐭ヨ瘑鍥捐氨 缁х画鎴戜滑鐨勭煡璇嗘荤粨锛屾湰鏂囨荤粨鍖呮嫭锛氬閫夐鐮旂┒銆鑱氱被鍒嗘瀽鐮旂┒銆佹潈閲嶇爺绌躲侀潪鍙傛暟妫楠屻佹暟鎹垎甯冦傛煡鐪嬫湰绯诲垪涔嬪墠鐨勬枃绔狅紝鍙偣鍑讳笅闈㈢殑閾炬帴锛氳鏂囬噷鐨勫垎鏋鏂规硶瑕佺敤鍝竴绉嶏紝SPSSAU鍛婅瘔浣犵瓟妗堣鏂囧父鐢ㄦ暟鎹垎鏋愭柟娉曞垎绫绘荤粨-2 11. 澶氶夐鐮旂┒ 澶氶夐鍒嗘瀽-SPSSAU 澶氶夐鍒嗘瀽鍙垎涓鍥涚绫诲瀷鍖呮嫭锛氬閫夐...
  • 涓璧锋潵鐖鑱氱被鏍!
    绛旓細杩欑鏂规硶鏄渶鍑嗙‘锛屼絾鍚屾椂涔熸渶鎱愯矊浼艰繖鏄蒋浠剁殑閫氱梾锛屾瘮濡傛瘮瀵硅蒋浠禨TAR涔熸槸濡傛銆戣蒋浠剁殑瀹樼綉鍦細 https://nbisweden.github.io/MrBayes/download.html 鎻愪緵浜唒df鐨勫畼鏂规暀绋嬨愬悗鍙板洖澶嶁渕b鈥濊幏鍙栥戣蒋浠跺畨瑁呭彲浠ラ夋嫨涓夊ぇ绯荤粺骞冲彴锛屼絾鏄垜杩樻槸姣旇緝鎺ㄨ崘linux锛岃兘鐢ㄦ湇鍔″櫒灏辩敤鏈嶅姟鍣ㄨ繍琛岋紝涓鏄妭鐪佹椂闂达紝浜屾槸...
  • 缁撳悎ArcGIS杞欢,瀵规爡鏍兼暟鎹笌鐭㈤噺鏁版嵁绌洪棿鍒嗘瀽鏂规硶杩涜姣旇緝銆
    绛旓細鏍呮牸鏁版嵁鐨勮仛绫鍒嗘瀽鏄牴鎹瀹氱殑鑱氱被鏉′欢瀵瑰師鏈夋暟鎹郴缁熻繘琛屾湁閫夋嫨鐨勪俊鎭彁鍙栬屽缓绔嬫柊鐨勬爡鏍兼暟鎹郴缁鐨勬柟娉銆傝矾寰勫垎鏋 鏄疓IS涓渶鍩烘湰鐨勫姛鑳戒箣涓锛屽叾鏍稿績鏄鏈浣宠矾寰勭殑姹傝В銆備粠缃戠粶妯″瀷鐨勮搴︾湅锛屾渶浣宠矾寰勭殑姹傝В灏辨槸鍦ㄦ寚瀹氱綉缁滅殑涓や釜缁撶偣涔嬮棿鎵句竴鏉¢樆鎶楀己搴︽渶灏忕殑璺緞銆備竴鑸儏鍐典笅锛屽彲鍒嗕负濡備笅鍥涚锛歛銆...
  • 杩鍥涚鎬ф牸绫诲瀷鏄湡鐨勫悧?
    绛旓細浣犲彲鑳芥槸骞冲潎姘村钩鐨 鐮旂┒浜哄憳閫氳繃浣跨敤涓绉嶇畻娉曟潵妫娴145388浜虹殑鎬ф牸娴嬭瘯缁撴灉涓殑妯″紡锛岃繖鍥涗釜鍒嗙被琚О涓衡滃浗闄呮ф牸椤圭洰搴撯濄傝捣鍒濓紝璇ョ畻娉曡繑鍥炰簡瀹屽叏浠や汉闅句互缃俊鐨勭粨鏋滐紝鍖呮嫭澶氳揪20涓笉鍚岀殑涓鑱氱被銆傜爺绌跺悎钁楄匨artin Gerlach璇达紝杩欎簺瀵逛汉鏍奸鍩熺殑涓撳鏉ヨ姣棤鎰忎箟锛屼唬琛ㄤ簡缁熻涓婄殑浼抗銆傜粡杩囩簿纭殑璁$畻锛...
  • 鎬庝箞鍋氬熀浜庢暟鎹殑fMRI鏁版嵁鍒嗘瀽
    绛旓細ica锛氫綔涓簆ca鐨勪竴鑸寲瀹炵幇銆傛槸涓绉嶇粨鏋勫寲鐨勬柟娉锛屽氨鍍忓拰灏忔尝銆佸倕绔嬪彾绫讳技銆傚彧涓嶈繃锛屾瘮浠栦滑瑕佹洿涓鑸寲銆傚皬娉㈠拰鍌呯珛鍙朵富瑕佹槸鍦ㄩ鐜囧煙鍋氬垎鏋愶紝鑰宨ca鎻愬彇鍑虹殑鎴愬垎鏄粺璁$嫭绔嬬殑銆傝繖浜涙垚鍒嗭紝鍙互鐞嗚В涓烘湰璐ㄤ笂鏈夋槸鐙珛鐨勬垚鍒嗐傝繖灏卞凡缁忚秴瓒婁簡棰戝煙鐩稿悓鐨勮寖鐣达紝鏇村姞涓鑸寲浜嗐鑱氱被锛氫粈涔堟剰鎬濆憿銆傚厛鎵炬寚鏍囷紝鐗瑰緛銆
  • 鏈哄櫒瀛︿範涓畻娉曠殑浼樼己鐐逛箣鏈杩戦偦绠楁硶
    绛旓細绗洓灏辨槸鏍锋湰涓嶅钩琛¢棶棰橈紙鍗虫湁浜涚被鍒殑鏍锋湰鏁伴噺寰堝锛岃屽叾瀹冩牱鏈殑鏁伴噺寰堝皯锛夋晥鏋滃樊銆傜浜斿氨鏄渶瑕佸ぇ閲忓唴瀛樸傜鍏氨鏄浜庢牱鏈閲忓ぇ鐨勬暟鎹泦璁$畻閲姣旇緝澶с傛鏄敱浜庤繖浜涗紭鐐瑰拰缂虹偣锛孠NN绠楁硶搴旂敤棰嗗煙姣旇緝骞挎硾锛屽湪鏂囨湰鍒嗙被銆佹ā寮忚瘑鍒鑱氱被鍒嗘瀽锛屽鍒嗙被棰嗗煙涓澶勬湁KNN绠楁硶鐨勮韩褰便傚湪杩欑瘒鏂囩珷涓垜浠粰澶у...
  • 寰姸鎬佲厾-鍘熺悊
    绛旓細鏈缁堣繖绉鏂规硶浼氬緱鍒颁竴涓粨鏋,濡傛灉瑕佽瀹氳绠楃粨鏋滅殑绫诲埆鏁扮洰,鍒欓渶瑕侀夋嫨鏈缁堢粨鏋滃墠鍑犱釜姝ラ鍗冲彲銆 ** AAHC & T-AAHC 鍜 K-means鐨勫姣:** 杩愯閫熷害姣擪-means蹇 鍦ㄤ娇鐢 K-means / AAHC / T-AAHC 寰楀埌姣忎釜琚瘯鐨4绉寰姸鎬(浠esting EEG 涓轰緥)涔嬪悗,鎸夌収鏉′欢鍐嶈繘琛鑱氱被灏卞彲浠ュ緱鍒颁笉鍚屾潯浠朵笅鐨勫井鐘舵佷簡(i.e...
  • 扩展阅读:四种典型的聚类算法 ... 四种常用聚类方法比较 ... 聚类分析的三种方法 ... 常见的四种聚合反应 ... 四种形态是指哪四种 ... 聚合反应的四种类型 ... 气质类型有哪四种 ... 几种常用的聚类方法 ... 常用的聚类准则有四种 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网