均值漂移聚類是基于滑動(dòng)窗口的算法,來(lái)找到數(shù)據(jù)點(diǎn)的密集區(qū)域。這是一個(gè)基于質(zhì)心的算法,通過(guò)將中心點(diǎn)的候選點(diǎn)更新為滑動(dòng)窗口內(nèi)點(diǎn)的均值來(lái)完成,來(lái)定位每個(gè)組/類的中心點(diǎn)。然后對(duì)這些候選窗口進(jìn)行相似窗口進(jìn)行去除,最終形成中心點(diǎn)集及相應(yīng)的分組。
具體步驟:
- 確定滑動(dòng)窗口半徑r,以隨機(jī)選取的中心點(diǎn)C半徑為r的圓形滑動(dòng)窗口開(kāi)始滑動(dòng)。均值漂移類似一種爬山算法,在每一次迭代中向密度更高的區(qū)域移動(dòng),直到收斂。
- 每一次滑動(dòng)到新的區(qū)域,計(jì)算滑動(dòng)窗口內(nèi)的均值來(lái)作為中心點(diǎn),滑動(dòng)窗口內(nèi)的點(diǎn)的數(shù)量為窗口內(nèi)的密度。在每一次移動(dòng)中,窗口會(huì)想密度更高的區(qū)域移動(dòng)。
- 移動(dòng)窗口,計(jì)算窗口內(nèi)的中心點(diǎn)以及窗口內(nèi)的密度,知道沒(méi)有方向在窗口內(nèi)可以容納更多的點(diǎn),即一直移動(dòng)到圓內(nèi)密度不再增加為止。
-
步驟一到三會(huì)產(chǎn)生很多個(gè)滑動(dòng)窗口,當(dāng)多個(gè)滑動(dòng)窗口重疊時(shí),保留包含最多點(diǎn)的窗口,然后根據(jù)數(shù)據(jù)點(diǎn)所在的滑動(dòng)窗口進(jìn)行聚類。
下圖演示了均值漂移聚類的計(jì)算步驟:
下面顯示了所有滑動(dòng)窗口從頭到尾的整個(gè)過(guò)程。每個(gè)黑點(diǎn)代表滑動(dòng)窗口的質(zhì)心,每個(gè)灰點(diǎn)代表一個(gè)數(shù)據(jù)點(diǎn)。
優(yōu)點(diǎn):(1)不同于K-Means算法,均值漂移聚類算法不需要我們知道有多少類/組。
(2)基于密度的算法相比于K-Means受均值影響較小。
缺點(diǎn):(1)窗口半徑r的選擇可能是不重要的。