1. 程式人生 > >KMeans原理、調參及應用

KMeans原理、調參及應用

一、前言

KMeans是資料探勘十大演算法之一,在資料探勘實踐中,我們也常常將KMeans運用於各種場景,因為它原理簡單、易於實現、適合多種資料探勘情景。

二、原理

KMeans的原理較為簡單:以某種相似性度量為標準,確定樣本的結構,即樣本屬於哪一個簇取決於該樣本與哪一個簇的中心點最相似。

演算法步驟如下:

1.決定要將樣本分成幾個簇,設為K;

2.初始化K個簇的中心點;

3.遍歷每一個樣本,計算它與K個簇中心點的相似度,並將它分配到最相似的那個簇;

4.對K個簇重新計算中心點,每個簇的中心點為該簇中所有樣本的均值,若中心點不變或變化小於某個可接受的範圍,則結束,否則返回第3步。

常用的相似性度量包括歐氏距離、餘弦相似度等,當特徵向量為低維稠密向量時可使用歐氏距離,當特徵向量為高維稀疏向量時(例如文字)可使用餘弦相似度,當然,具體的相似性度量的選擇要根據具體的應用場景而定。

三、如何評價KMeans

使用任何一個演算法或模型都免不了對模型的評估,作為模型選擇、調優的依據。

KMeans的損失函式:


其中,代表樣本i,代表樣本i所屬的簇的中心點,損失函式即所有樣本離所在簇中心的距離,認為每個簇內部越緊密,聚類效果越好。

四、調參

KMeans演算法有兩個需要決策的地方,一個是K的選擇,另一個是初始中心點的選擇。

1.K的選擇

一般情況下,我們可以選取K=2,3,...,10進行多次試驗,並以K值為X軸,以損失函式作為Y軸進行畫圖,理論上,隨著K值的增大,損失函式會減小,選取圖中的拐點(圖中綠色的點)對應的K值為合適的K值,這意味著繼續增大K值的效果已經不明顯了。

但是也有可能曲線不存在明顯的拐點,也就是說損失函式是隨著K值的增大而穩步減小的,這時,我們還可以根據具體的應用擬定合適的指標作為Y值進行K值選取。


2.初始中心點的選擇

初始中心點的選擇最簡單的做法是隨機從樣本中選K個作為中心點,但由於中心點的選擇會影響KMeans的聚類效果,因此我們可以採取以下三種方式優化中心點的選取:

1.多次選取中心點進行多次試驗,並用損失函式來評估效果,選擇最優的一組;

2.選取距離儘量遠的K個樣本點作為中心點:隨機選取第一個樣本C1作為第一個中心點,遍歷所有樣本選取離C1最遠的樣本C2為第二個中心點,以此類推,選出K個初始中心點;

3.特別地,對於像文字這樣的高維稀疏向量,我們可以選取K個兩兩正交的特徵向量作為初始化中心點。

五、應用

KMeans的應用場景非常多,除了一般的聚類場景(例如對使用者進行分群組、對微博文字進行分群組等)以外,我們還可以用KMeans實現單變數的離散化,因為一般的等頻和等距的離散化方法往往會忽略變數中潛在的分佈特徵,而基於聚類的離散化可以一定程度地保留變數的分佈特徵。