k means聚類分析

2021-09-08 16:18:32 字數 1319 閱讀 5943

k-means演算法是machine learning領域內比較常用的演算法之一。

首先從n個資料物件任意選擇 k 個物件作為初始聚類中心;而對於所剩下其它物件,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然 後再計算每個所獲新聚類的聚類中心(該聚類中所有物件的均值);不斷重複這一過程直到標準測度函式開始收斂為止。一般都採用均方差作為標準測度函式. k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。

以上就是k-means的演算法流程了,演算法的流程其實還是比較簡單的,今天我著重從數學的角度來講一下我所理解的k-means聚類演算法。

假設我們有n個樣本資料集,變數x的維數為d維,我們現在要將這些資料集分成k類(注意k已知變數)。我們將問題進行轉化,可以構造這樣的等式,引進d維向量μk,作為每個類的中心,我們所希望的是每個資料點與它最近的類中心的距離(這裡採用平方和)最小。

我們用數學語言來描述:

(1)rnk:rnk ∈ ,是乙個二分變數,描述的是第n個資料點是否屬於第k類,例如:rnk=1,表示第n個資料點屬於k類;rnk=0,表示第n個資料點不屬於k類。

j:為目標函式,描述的是每個資料點與它類中心的平方和。

所以整個問題就變為我們希望找到最佳,,使目標函式j最小。而我們通常是通過迭代程式,連續優化變數rnk,μk。在每一步迭代程式中,我們分成兩步來考慮:

1 固定住類中心μk,也就是已知值,j是關於變數rnk的目標函式。我們要使j函式最小,只要讓第n個資料點屬於離當前最近的類中心所屬類就行。用數學語言來表達就是:

2 固定住rnk,j是關於變數μk的目標函式,我們要是j函式最小,我們對函式j進行對μk的求導,令其等於0,即:

然後我們直接可以根據上面等式求解μk:

從等式的數學意義來看,μk就是該類資料的均值,

然後再將,進行下一次迭代,直至整個程式收斂停止。但是要注意我們在進行全域性最小化目標函式j的過程中,往往會陷入區域性收斂,至於k-means的收斂性我在就不具體討論了。最終求得的rnk,表達的也就是第n個資料點屬於哪一類,即完成了聚類操作。

需要注意的是一開始我們並不知道這k類的類中心μk值,一般的我們採取隨機在樣本資料中選取k個數作為類的中心,每個資料點只能屬於一類,而不能屬於多個類。在一般情況下,我們橫量資料點與類中心的距離(或者說是資料點與類中心點的不相似性)是採用歐式距離,橫量的方法也可以採用其他方法,那麼我們將k-means寫成一般化形式就為:

函式v()代表的就是資料點與類中心的距離。

其實,如果我們更深入地理解k-means演算法,其實應該算是mean-shift的一種特例。k-means演算法在每次迭代過程中,類中心收斂的過程其實就是相當與mean-shift往高斯山峰自動移動的過程。

K means聚類分析

主成分分析 pca pca n components 0.9 data pca.fit transform cross 降維x data 500 x.shape 對類別預設為4 km kmeans n clusters 4 km.fit x predict km.predict x 顯示聚類結果 p...

聚類分析 K Means演算法

k means演算法 這是基於劃分的聚類演算法,該演算法效率較高,對大規模資料進行聚類時被廣泛使用。基本思路 把資料集劃分成k 個簇,每個簇內部的樣本非常相似,不同簇之間的差異非常大。k means演算法是乙個迭代演算法,先隨機選擇 k個物件,每個物件代表了起中心,對於剩下的物件,將其賦給最近的簇,...

機器學習 K means聚類分析

1.k means聚類演算法原理 1 先丟擲乙個情景問題 航空公司怎麼樣對客戶分群,區分 值客戶 無價值客戶等,對不同的客戶群體實施個性化的營銷策略,實現利潤最大化?對於該類情景題,可使用聚類分析方法。2 聚類分析相關概念 在沒有給定劃分類別的情況下,根據資料的相似度進行分組的一種方法,分組的原則是...