K-Means是最為經典的無監督聚類(Unsupervised Clustering)演算法,其主要目的是將n個樣本點劃分為k個簇,使得相似的樣本盡量被分到同一個聚簇。K-Means衡量相似度的計算方法為歐氏距離(Euclid Distance)。
本文將會介紹以下幾個部分的內容:
- K-Means迭代求解
- K-Means缺點和優化
- Speed up K-Means with Random Approximation
- 實驗部分
1. K-Means迭代求解
數據集 有 個樣本點 ,假設現在要將這些樣本點聚類為 個簇, 個簇中心為 。定義指示變數 ,如果第 個樣本被聚類到第 個簇,那麼 ,否則 。在K-Means中每個樣本只能屬於一個簇,這是Hard-Clustering,也稱為Non-fuzzy Clustering,與之對應的是Soft-Clustering或者Fuzzy-Clustering,指的是一個樣本可以被歸為多個簇。在K-Means裡面有 ,那麼K-Means的優化目標為:
目標需要優化的變數有
和
,由於
是01離散變數,優化起來是NP-Hard問題。所以採用啟發式的求解,即Lloyds algorithm
。求解過程分為Assignment和Update兩步。
Assignment Step:
Update Step:
在Assignment Step,把樣本歸為最近的簇中心所代表的簇,很明顯,這一步更新會減小目標函數的值;在Update Step中,更新聚簇中心,用這個簇的所有樣本的中心點當作新的聚簇中心,不難證明這一步是最小化簇內樣本到聚簇中心歐式距離平方和的最優解。所以,按照上述兩步,只要有 和 被更新了,那麼目標函數值肯定會下降。由於將 個樣本點分配到 個聚簇中心最多隻有 個劃分方案,每一種劃分方案對應一個目標函數值。採用上述兩步演算法,每步更新都會使得目標函數值減少,故上述演算法流程肯定會收斂。但是由於是採用的啟發式演算法,不一定能保證收斂到全局最優解。
事實上,K-Means的兩步更新可以看作是EM演算法的兩步,即Expectation和Maximization兩步,這裡不再詳細介紹。
2. K-Means缺點和優化
K-Means有以下幾個缺點:
- 需要確定K的值。K的取值需要事先確定,然而在無監督聚類任務上,由於並不知道數據集究竟有多少類別,所以很難確定K的取值。舉例來說,利用K-Means做 彩色圖像分割(Segmentation)任務,如果圖像只有一個物體和背景,那麼很容易確定將K設置為2,並且較容易得到比較好的分割效果,但是對於一副有更多物體的圖像,K的設定就很難了,因為我們並不總能人工去判斷這幅圖像裡面有幾個類別。對於文檔聚類更是如此,比如一批新聞 數據集,可以按照主題聚類,但是有多少主題呢,這個不能事先獲得。
- 對異常點敏感。K-Means很容易受到異常點(outliers)的影響,由於K-Means在Update Step取得是簇內樣本均值,那麼就會很容易受到異常點的影響,比如某個簇內樣本在某個維度上的值特別大,這就使得聚簇中心偏向於異常點,從而導致不太好的聚類效果。
- 凸形聚類。K-Means由於採用歐氏距離來衡量樣本之間相似度,所以得到的聚簇都是凸的,就不能解決「S型」數據分佈的聚類,這就使得K-Means的應用範圍受限,難以發現數據集中一些非凸的性質。
- 聚簇中心初始化,收斂到局部最優,未考慮密度分佈等等。
對於以上給出的很多問題,有很多相應的解決方案,從而得到了很多K-Means衍生出來的演算法以及一些其餘的聚類演算法,下面大致列舉一下:
K-Medians。不同於K-Means使用歐式距離計算目標函數,K-Medians使用曼哈頓距離(Manhattan Distance),對應的則是 範數。在目標求解的Update過程中,用簇內樣本每個維度的中位數來當作聚簇中心在該維度的值(K-Means使用的是平均值),K-Medians的Median就是這個意思;在Assignment過程中,使用曼哈頓距離將每個樣本劃歸為最近的聚簇。K-Medians可以很好地解決異常點問題,比如Figure 1所示,ABCD是一個簇內的四個點,D是異常點,現在執行Update Step更新聚簇中心,使用K-Means得到紅色的聚簇中心L2,使用K-Medians得到藍色的聚簇中心L1。不難發現,在異常點D的影響下,K-Medians更魯棒,能較好的代表ABC三點。