Kmeans聚類與層次聚類


聚類

聚類就是對大量未知標注的數據集,按數據的內在相似性將數據集划分為多個類別,使類別內的數據相似度較大而類別間的數據相似度較小.

數據聚類算法可以分為結構性或者分散性,許多聚類算法在執行之前,需要指定從輸入數據集中產生的分類個數。

1.分散式聚類算法,是一次性確定要產生的類別,這種算法也已應用於從下至上聚類算法。

2.結構性算法利用以前成功使用過的聚類器進行分類,而分散型算法則是一次確定所有分類。

結構性算法可以從上至下或者從下至上雙向進行計算。從下至上算法從每個對象作為單獨分類開始,不斷融合其中相近的對象。而從上至下算法則是把所有對象作為一個整體分類,然后逐漸分小。

3.基於密度的聚類算法,是為了挖掘有任意形狀特性的類別而發明的。此算法把一個類別視為數據集中大於某閾值的一個區域。DBSCAN和OPTICS是兩個典型的算法。

 

相似度/距離計算:

1.歐氏距離相似度

 

2.Jaccard相似度

 

3.余弦相似度

4.Pearson相似度

5.相對熵(K-L距離)

 

一.分散性聚類(kmeans)

K-均值算法表示以空間中k個點為中心進行聚類,對最靠近他們的對象歸類。

例如:數據集合為三維,聚類以兩點:X =(x1, x2, x3),Y =(y1, y2, y3)。中心點Z變為Z =(z1, z2, z3),其中z1 = (x1 + y1)/2,z2 = (x2 + y2)/2,z3 = (x3 + y3)/2。

 

算法流程:

1.選擇聚類的個數k.

2.任意產生k個聚類,然后確定聚類中心,或者直接生成k個中心。

3.對每個點確定其聚類中心點。

4.再計算其聚類新中心。

5.重復以上步驟直到滿足收斂要求。(通常就是確定的中心點不再改變。)

K-means是初值敏感的

 

優點:

1.是解決聚類問題的一種經典算法,簡單、快速

2.對處理大數據集,該算法保持可伸縮性和高效率

3.當結果簇是密集的,它的效果較好

缺點

1.在簇的平均值可被定義的情況下才能使用,可能不適用於某些應用

2.必須事先給出k(要生成的簇的數目),而且對初值敏感,對於不同的初始值,可能會導致不同結果。

3.不適合於發現非凸形狀的簇或者大小差別很大的簇

4.對躁聲和孤立點數據敏感

二.結構性聚類(層次聚類)

層次聚類方法對給定的數據集進行層次的分解,直到某種條件滿足為止。

在已經得到距離值之后,元素間可以被聯系起來。通過分離和融合可以構建一個結構。傳統上,表示的方法是樹形數據結構層次聚類算法,要么是自底向上聚集型的,即從葉子節點開始,最終匯聚到根節點;要么是自頂向下分裂型的,即從根節點開始,遞歸的向下分裂。

源數據:

 

 

層次聚類:

1.凝聚層次聚類:AGNES算法(自底向上)

首先將每個對象作為一個簇,然后合並這些原子簇為越來越大的簇,直到某個終結條件被滿足

2.分裂層次聚類:DIANA算法(自頂向下)

首先將所有對象置於一個簇中,然后逐漸細分為越來越小的簇,直到達到了某個終結條件。

 

k-means++算法選擇初始seeds的基本思想就是:初始的聚類中心之間的相互距離要盡可能的遠。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM