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實現單變量的離散化,因為一般的等頻和等距的離散化方法往往會忽略變量中潛在的分布特征,而基於聚類的離散化可以一定程度地保留變量的分布特征。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com