1. 程式人生 > >聚類之meanshift演算法

聚類之meanshift演算法

在K-Means 演算法中,最終的聚類效果受初始的聚類中心的影響,K-Means++演算法的提出,為選擇較好的初始聚類中心提供了依據(選擇的的初始聚類中心儘可能的遠)
但是演算法中,聚類的類別個數K仍需事先確定,對於類別個數事先未知的資料集,K-Means和K-Means++將很難對其精確求解。
Mean Shift 演算法,又被稱作均值漂移演算法,與K-Means演算法一樣,都是基於聚類中心的聚類演算法。
優點:不需要提前指定聚類類別個數
缺點:計算量大

在Meanshift演算法中,聚類中心是通過在給定區域中的樣本的均值來確定的,通過不斷的迭代更新聚類中心,直到最終的聚類中心不再改變為止。

Mean Shift向量

對於給定的n位空間 R n R^n 中的m個樣本點 X ( i

) , i = 1 , 2 m
X^{(i)},i=1,2……m ,對於其中的一個樣本X,其Mean Shift向量為:
M h ( X ) = 1 k X ( i ) S h ( X ( i ) X ) M_h(X)=\frac{1}{k}\displaystyle\sum_{X^{(i)}∈S_h}(X^{(i)}-X)
其中, S h S_h 指的是一個半徑為 h h 的高維球區域
在這裡插入圖片描述
首先明確一點:每一個樣本點都會對應一個Mean Shift 向量。
在計算漂移均值向量的過程中,通過計算圓 S h S_h 中的每一個樣本點 X ( i ) X^{(i)} 相對於點X的偏移向量 ( X ( i ) X ) (X^{(i)}-X) ,再對所有的漂移均值向量求和然後再求平均。
根據漂移均值向量的計算公式可以得出一個顯然的結論:
樣本點會向樣本密集的地方“漂移”(向量加法)

如上的均值漂移向量的求解方法存在一個問題:即在 S h S_h 的區域內,每一個樣本點 X ( i ) X^{(i)} 對樣本X的貢獻是一樣的。

而在實際中,每一個樣本點 X ( i ) X^{(i)} 對於樣本X的貢獻是不一樣的,這樣的貢獻可以通過核函式來進行度量。

高斯核函式

在Mean Shift 演算法中引入核函式的目的是使得隨著樣本與被漂移點的距離不同,其漂移量對均值漂移向量的貢獻也不同。

高斯核函式是使用較多的一種核函式,其函式形式為:
K ( x 1 x 2 h ) = 1 s q r t ( 2 π ) h e x p ( ( x 1 x 2 ) 2 2 h 2 ) K(\frac{x_1-x_2}{h})=\frac{1}{sqrt(2π)h}exp(-\frac{(x_1-x_2)^2}{2h^2})
其中,h稱作頻寬,不同的頻寬的核函式如下如所示:
在這裡插入圖片描述
從圖中可以看出,
1)當頻寬一定時,樣本點之間的距離越近,其核函式的值越大;
2)當樣本點之間的距離相等,隨著高斯核函式的頻寬h的增大,核函式的值在減小。

Mean Shift 演算法原理

引入核函式的Mean shift 向量
假設在半徑為h的範圍 S h S_h 範圍內,為了使得每一個樣本點 X ( i ) X^{(i)} 對於樣本X的貢獻不一樣,向基本的Mean Shift向量形式中增加核函式,得到如下的改進的Mean Shift 向量形式。

M h ( X ) = X ( i ) S h [ K ( X ( i ) X h ) ( X ( i ) X ) ] X ( i ) S h [ K ( X ( i ) X h ) ] M_h(X)=\frac{\displaystyle\sum_{X^{(i)}∈S_h}[K(\frac{X^{(i)}-X}{h})*(X^{(i)}-X)]}{\displaystyle\sum_{X^{(i)}∈S_h}[K(\frac{X^{(i)}-X}{h})]}

其中, K ( X ( i ) X h ) K(\frac{X^{(i)}-X}{h}) 是高斯核函式。

Mean Shift演算法的基本原理
在 Mean Shift 演算法中,通過迭代的方式找到最終的聚類中心,即對每一個樣本點計算其漂移均值,以計算出來的漂移均值作為新的起始點,重複以上的步驟,直到滿足終止的條件,得到的最終的均值漂移點即為最終的聚類中心。

  1. 逐點迭代,設定為位置中心

  2. 計算所有點到位置中心的距離

  3. 計算位置的漂移中心(所有點座標的加權平均,權值是由距離和高斯核確定的)

  4. 位置中心的質心的距離夠小就停止,該位置中心點就屬於(質心)類。(使用質心來標記所屬類別)

  5. 位置中心的質心的距離不夠小,位置中心移動到質心,繼續

  6. 每個點都被標記了(標記為某個質心),統計一下,有幾種標記。聚類完成。