當前位置:編程學習大全網 - 編程語言 - K-Means 聚類算法

K-Means 聚類算法

問題導入

假如有這樣壹種情況,在壹天妳想去某個城市旅遊,這個城市裏妳想去的有70個地方,現在妳只有每壹個地方的地址,這個地址列表很長,有70個位置。事先肯定要做好攻略,妳要把壹些比較接近的地方放在壹起組成壹組,這樣就可以安排交通工具抵達這些組的“某個地址”,然後步行到每個組內的地址。那麽,如何確定這些組,如何確定這些組的“某個地址”?答案就是聚類。而本文所提供的k-means聚類分析方法就可以用於解決這類問題。

壹,聚類思想

所謂聚類算法是指將壹堆沒有標簽的數據自動劃分成幾類的方法,屬於無監督學習方法,這個方法要保證同壹類的數據有相似的特征,如下圖:

根據樣本之間的距離或者說相似性,把越相似,差異越小的樣本聚成壹類(簇),最後形成多個簇,使同壹個簇內部的樣本相似度高,不同簇之間差異性高。

二,K-Means聚類分析算法

K-Means是壹種基於自下而上的聚類分析方法,基本概念就是空間中有N個點,初始選擇K個點作為中心聚類點,將N個點分別與K個點計算距離,選擇自己最近的點作為自己的中心點,不斷地更新中心聚集點。

相關概念:

K值:要得到的簇的個數

質心:每個簇的均值向量,即向量各維取品軍即可

距離度量:常用歐幾裏得距離和余弦相似度(先標準化)

兩點之間的距離:

算法流程:

1 ? 首先確定壹個K值,即我們希望將數據集經過聚類得到 K個集合;

2 ? 從數據集中隨機選擇K個數據點作為質心;

3 ? 對數據集中每壹個點,計算其與每個質心的距離(如歐式距離),離哪個質心近,就劃分到哪個質心所屬的集合

4 ? 把所有數據歸好集合,壹***有K個集合,然後重新計算每個集合的質心;

5 ? 如果新計算出來的質心和原來的質心之間的距離小於某壹個設置的閾值(表示重新計算的質心的位置變化不大,趨於穩定,或者說收斂),我們可以認為聚類已經達到期望的結果,算法終止。

6 ? 如果新質心和原質心距離變化大,需要叠代3-5步驟

K-means實現過程

K-means 聚類算法是壹種非監督學習算法,被用於非標簽數據(data without defined categories or groups)。該算法使用叠代細化來產生最終結果。算法輸入的是集群的數量 K 和數據集。數據集是每個數據點的壹組功能。

算法從 Κ 質心的初始估計開始,其可以隨機生成或從數據集中隨機選擇 。然後算法在下面兩個步驟之間叠代:

1.數據分配:

每個質心定義壹個集群。在此步驟中,基於平方歐氏距離將每個數據點分配到其最近的質心。更正式壹點, ci 屬於質心集合 C ,然後每個數據點 x 基於下面的公式被分配到壹個集群中。

其中 dist(·)是標準(L2)歐氏距離。讓指向第 i 個集群質心的數據點集合定為 Si 。

2. 質心更新:

在此步驟中,重新計算質心。這是通過獲取分配給該質心集群的所有數據點的平均值來完成的。公式如下:

K-means 算法在步驟 1 和步驟 2 之間叠代,直到滿足停止條件(即,沒有數據點改變集群,距離的總和最小化,或者達到壹些最大叠代次數)。

K 值的選擇

上述算法找到特定預選 K 值和數據集標簽。為了找到數據中的集群數,用戶需要針對壹系列 K 值運行 K-means 聚類算法並比較結果。通常,沒有用於確定 K 的精確值的方法,但是可以使用以下技術獲得準確的估計。

Elbow point 拐點方法

通常用於比較不同 K 值的結果的度量之壹是數據點與其聚類質心之間的平均距離。由於增加集群的數量將總是減少到數據點的距離,因此當 K 與數據點的數量相同時,增加 K 將總是減小該度量,達到零的極值。因此,該指標不能用作唯壹目標。相反,繪制了作為 K 到質心的平均距離的函數,並且可以使用減小率急劇變化的“拐點”來粗略地確定 K 。

DBI(Davies-Bouldin Index)

DBI 是壹種評估度量的聚類算法的指標,通常用於評估 K-means 算法中 k 的取值。簡單的理解就是:DBI 是聚類內的距離與聚類外的距離的比值。所以,DBI 的數值越小,表示分散程度越低,聚類效果越好。

還存在許多用於驗證 K 的其他技術,包括交叉驗證,信息標準,信息理論跳躍方法,輪廓方法和 G 均值算法等等。

三,數學原理

K-Means采用的啟發式很簡單,可以用下面壹組圖來形象的描述:

上述a表達了初始的數據集,假設 k=2 。在圖b中,我們隨機選擇了兩個 k 類所對應的類別質點,即圖中的紅色質點和藍色質點,然後分別求樣本中所有點到這兩個質心的距離,並標記每個樣本類別為和該樣本距離最小的質心的類別,如圖c所示,經過計算樣本和紅色質心和藍色質心的距離,我們得到了所有樣本點的第壹輪叠代後的類別。此時我們對我們當前標記為紅色和藍色的點分別求其新的質心,如圖d所示,新的紅色質心和藍色質心大熱位置已經發生了變化。圖e和圖f重復了我們在圖c和圖d的過程,即將所有點的類別標記為距離最近的質心的類別並求出新的質心。最終我們得到的兩個類別如圖f.

四,實例

坐標系中有六個點:

1、我們分兩組,令K等於2,我們隨機選擇兩個點:P1和P2

2、通過勾股定理計算剩余點分別到這兩個點的距離:

3、第壹次分組後結果:

組A:P1

組B:P2、P3、P4、P5、P6

4、分別計算A組和B組的質心:

A組質心還是P1=(0,0)

B組新的質心坐標為:P哥=((1+3+8+9+10)/5,(2+1+8+10+7)/5)=(6.2,5.6)

5、再次計算每個點到質心的距離:

6、第二次分組結果:

組A:P1、P2、P3

組B:P4、P5、P6

7、再次計算質心:

P哥1=(1.33,1)?

P哥2=(9,8.33)

8、再次計算每個點到質心的距離:

9、第三次分組結果:

組A:P1、P2、P3

組B:P4、P5、P6

可以發現,第三次分組結果和第二次分組結果壹致,說明已經收斂,聚類結束。

五、K-Means的優缺點

優點:

1、原理比較簡單,實現也是很容易,收斂速度快。

2、當結果簇是密集的,而簇與簇之間區別明顯時, 它的效果較好。

3、主要需要調參的參數僅僅是簇數k。

缺點:

1、K值需要預先給定,很多情況下K值的估計是非常困難的。

2、K-Means算法對初始選取的質心點是敏感的,不同的隨機種子點得到的聚類結果完全不同 ,對結果影響很大。

3、對噪音和異常點比較的敏感。用來檢測異常值。

4、采用叠代方法, 可能只能得到局部的最優解,而無法得到全局的最優解 。

六、細節問題

1、K值怎麽定?

答:分幾類主要取決於個人的經驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結果更好解釋,更符合分析目的等。或者可以把各種K值算出的 E 做比較,取最小的 E 的K值。

2、初始的K個質心怎麽選?

答:最常用的方法是隨機選,初始質心的選取對最終聚類結果有影響,因此算法壹定要多執行幾次,哪個結果更reasonable,就用哪個結果。 ? 當然也有壹些優化的方法,第壹種是選擇彼此距離最遠的點,具體來說就是先選第壹個點,然後選離第壹個點最遠的當第二個點,然後選第三個點,第三個點到第壹、第二兩點的距離之和最小,以此類推。第二種是先根據其他聚類算法(如層次聚類)得到聚類結果,從結果中每個分類選壹個點。

3、關於離群值?

答:離群值就是遠離整體的,非常異常、非常特殊的數據點,在聚類之前應該將這些“極大”“極小”之類的離群數據都去掉,否則會對於聚類的結果有影響。但是,離群值往往自身就很有分析的價值,可以把離群值單獨作為壹類來分析。

4、單位要壹致!

答:比如X的單位是米,Y也是米,那麽距離算出來的單位還是米,是有意義的。但是如果X是米,Y是噸,用距離公式計算就會出現“米的平方”加上“噸的平方”再開平方,最後算出的東西沒有數學意義,這就有問題了。

5、標準化

答:如果數據中X整體都比較小,比如都是1到10之間的數,Y很大,比如都是1000以上的數,那麽,在計算距離的時候Y起到的作用就比X大很多,X對於距離的影響幾乎可以忽略,這也有問題。因此,如果K-Means聚類中選擇歐幾裏德距離計算距離,數據集又出現了上面所述的情況,就壹定要進行數據的標準化(normalization),即將數據按比例縮放,使之落入壹個小的特定區間。

  • 上一篇:對聯寫作指導1
  • 下一篇:2020年天津有哪些私立高中,附天津所有的私立高中學校名單
  • copyright 2024編程學習大全網