機器學習_學習筆記系列(81):均值偏移(Mean-Shift)
前幾回我們提到k-mean clustering演算法,而我們今天要來講一個與其概念相似的演算法「Mean-Shift」。
Mean-Shift
對於Mean-Shift演算法,其是由Cheng, Yizong所提出,論文名稱叫做
Mean Shift, Mode Seeking, and Clustering
這個演算法的概念就是,假使我們拿到一組資料集,我們會先設定我們的初始值,如果想要分成k個種類就把初始值設k組,接下來我們會給定半徑,計算以初始值為圓心,半徑內所有資料的均值,而這裡的均值我們把他定義為
而這裡N(x)代表分布方程式,也就是說我們summation只會計算落在半徑內的資料。而K代表kernel function通常我們會設為Gaussian Kernels
接著我們算出m(x)後,我們就以m(x)為圓心,計算半徑內所有資料的均值,就這樣依此類推,值到m(x)收斂為止。
最後我們就可以用這樣的方式得到k個均值,看我們的資料離哪個均值比較近,就分到哪一類。
Example
接下我們一樣以MNIST手寫辨識為例子,這裡我們挑選10個seed
我們可以看到對於mean-shift效能算是蠻不錯的,準確率比k-mean好,運算速度也蠻快的。
Python Sample Code:
Github:
Reference:
[1] Cheng, Y. (1995). Mean shift, mode seeking, and clustering. IEEE transactions on pattern analysis and machine intelligence, 17(8), 790–799.