在k-means 演算法中,最終的聚類效果受初始的聚類中心的影響,k-means++演算法的提出,為選擇較好的初始聚類中心提供了依據(選擇的的初始聚類中心盡可能的遠)
但是演算法中,聚類的類別個數k仍需事先確定,對於類別個數事先未知的資料集,k-means和k-means++將很難對其精確求解。
mean shift 演算法,又被稱作均值漂移演算法,與k-means演算法一樣,都是基於聚類中心的聚類演算法。
優點:不需要提前指定聚類類別個數
缺點:計算量大
在meanshift演算法中,聚類中心是通過在給定區域中的樣本的均值來確定的,通過不斷的迭代更新聚類中心,直到最終的聚類中心不再改變為止。
對於給定的n位空間r
nr^n
rn中的m個樣本點x(i
),i=
1,2…
…mx^,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\displaystyle\sum_∈s_h}(x^-x)
mh(x)
=k1
x(i)
∈sh
∑(x
(i)−
x)其中,s
hs_h
sh指的是乙個半徑為h
hh的高維球區域
首先明確一點:每乙個樣本點都會對應乙個mean shift 向量。
在計算漂移均值向量的過程中,通過計算圓s
hs_h
sh中的每乙個樣本點x(i
)x^x(i)
相對於點x的偏移向量(x(
i)−x
)(x^-x)
(x(i)−
x),再對所有的漂移均值向量求和然後再求平均。
根據漂移均值向量的計算公式可以得出乙個顯然的結論:
樣本點會向樣本密集的地方「漂移」(向量加法)
如上的均值漂移向量的求解方法存在乙個問題:即在s
hs_h
sh的區域內,每乙個樣本點x(i
)x^x(i)
對樣本x的貢獻是一樣的。
而在實際中,每乙個樣本點x(i
)x^x(i)
對於樣本x的貢獻是不一樣的,這樣的貢獻可以通過核函式來進行度量。
在mean shift 演算法中引入核函式的目的是使得隨著樣本與被漂移點的距離不同,其漂移量對均值漂移向量的貢獻也不同。
高斯核函式是使用較多的一種核函式,其函式形式為:
k (x
1−x2
h)=1
sqrt
(2π)
hexp
(−(x
1−x2
)22h
2)k(\frac)=\fracexp(-\frac)
k(hx1
−x2
)=s
qrt(
2π)h
1ex
p(−2
h2(x
1−x
2)2
)其中,h稱作頻寬,不同的頻寬的核函式如下如所示:
從圖中可以看出,
1)當頻寬一定時,樣本點之間的距離越近,其核函式的值越大;
2)當樣本點之間的距離相等,隨著高斯核函式的頻寬h的增大,核函式的值在減小。
引入核函式的mean shift 向量
假設在半徑為h的範圍s
hs_h
sh範圍內,為了使得每乙個樣本點x(i
)x^x(i)
對於樣本x的貢獻不一樣,向基本的mean shift向量形式中增加核函式,得到如下的改進的mean shift 向量形式。
m h(
x)=∑
x(i)
∈sh[
k(x(
i)−x
h)∗(
x(i)
−x)]
∑x(i
)∈sh
[k(x
(i)−
xh)]
m_h(x)=\frac∈s_h}[k(\frac-x})*(x^-x)]}∈s_h}[k(\frac-x})]}
mh(x)
=x(i
)∈sh
∑[
k(hx
(i)−
x)]
x(i)
∈sh
∑[k
(hx(
i)−x
)∗(
x(i)
−x)]
其中,k(x
(i)−
xh)k(\frac-x})
k(hx(i
)−x
)是高斯核函式。
mean shift演算法的基本原理
在 mean shift 演算法中,通過迭代的方式找到最終的聚類中心,即對每乙個樣本點計算其漂移均值,以計算出來的漂移均值作為新的起始點,重複以上的步驟,直到滿足終止的條件,得到的最終的均值漂移點即為最終的聚類中心。
逐點迭代,設定為位置中心
計算所有點到位置中心的距離
計算位置的漂移中心(所有點座標的加權平均,權值是由距離和高斯核確定的)
位置中心的質心的距離夠小就停止,該位置中心點就屬於(質心)類。(使用質心來標記所屬類別)
位置中心的質心的距離不夠小,位置中心移動到質心,繼續
每個點都被標記了(標記為某個質心),統計一下,有幾種標記。聚類完成。
Mean Shift 聚類演算法
原文 一 mean shift 演算法理論 mean shift 演算法是基於核密度估計的爬山演算法,可用於聚類 影象分割 跟蹤等,因為最近搞乙個專案,涉及到這個演算法的影象聚類實現,因此這裡做下筆記。1 均值漂移的基本形式 給定d維空間的n個資料點集x,那麼對於空間中的任意點x的mean shif...
meanshift聚類演算法跟蹤原理
這幾天學習 學習opencv 中的第十章運動跟蹤,裡面講到了meanshift演算法,根據書上所講實在難以理解,meanshift在運動跟蹤這個過程中到底起到什麼作用,於是經過幾天不斷地看相關資料和別人的部落格文章,慢慢思路清晰了,也終於知道了meanshift這個演算法它到底是什麼作用,起到什麼樣...
文字挖掘之聚類演算法之CLARA聚類演算法
clara 大型應用中的聚類方法 kaufmann and rousseeuw in 1990 不考慮整個資料集,而是選擇資料的一小部分作為樣本.clara演算法的步驟 它從資料集中抽取多個樣本集,對每個樣本集使用pam,並以最好的聚類作為輸出 clara 演算法的步驟 1 for i 1 to v...