機器學習_學習筆記系列(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.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet