泛統計理論初探——均值漂移算法初探

數據挖掘-均值漂移聚類算法

均值漂移聚類算法簡介
本文主要是介紹均值漂移聚類算法,又稱爲Mean-Shift-Cluster,該算法屬於無監督學習的聚類方法。主要從算法的使用場景、步驟、核心思路等角度去介紹算法。之前其實也介紹過一些聚類的算法,比如Kmeans、DBSCAN等方法,本次介紹的均值漂移聚類算法是一種基於質心的算法,該方法最終找出的是數據點密集的區域。
均值漂移聚類算法和本人之前文章介紹的聚類算法有一些不同,主要是該算法的核心理念是不停地向密度更高的方向,或者說是更密集的方向去移動,本質上對於那些顯著稀疏和密集的數據分佈有着良好的區分,但是對於一些稀疏和密集不顯著區分的數據,可能使用均值漂移聚類的算法效果就不是特別好。均值漂移聚類算法是一直移動,不停地修改每次質心點,它的思路就是:滑動-修改質心候選點-滑動-穩定後最終過濾處理 ,下面來介紹該算法的步驟。注意,步驟是以某一局部的數據做步驟的解釋,正常情況下是所有的數據進行均值漂移聚類,有N個初始點,下面的步驟爲了簡單說明,選取了1個初始點進行說明。
1)首先使用者需要決定滑動窗口的半徑R,然後隨機確定初始點A作爲質心,讓初始點A以半徑爲R的圓形區域進行滑動,每次移動均朝向密度更高,也就是數據樣本越多的地方移動。
2)每次在經過一次滑動以後,就要重新計算滑動窗口內部所有的點的均值作爲新的質心點,即有一定的質心偏移,也可以看作“漂移”,也是該算法的名稱的來源。重新計算確定質心後,繼續按上一步的步驟進行移動,即向着密度更高的區域進行移動。
3)反覆重複步驟1和步驟2,直到移動到密度最高的區域,即無論怎麼繼續移動,都不會在圓形區域內收下更多的數據樣本點,也就是說當前區域的密度是最高的,並且無法繼續增加密度了。
其實上述的三個步驟就是一個點的均值漂移聚類算法的步驟,實際情況是會有很多個初始點,一起進行滑動。當存在多個滑動圓形區域有重疊的時候,留下那個含有更多點的窗口,捨棄更少點的窗口,相對於聚類中的合併操作。並且以更多點的窗口進行質心的計算,並繼續進行滑動重複上述三個步驟。
在這裏插入圖片描述
其實均值漂移算法還是有優點的,即它無需事先指定類的數量,並且受異常值的影響非常小,這兩點相對於K-means算法是有優勢的,該算法要比K-means算法更合理,即完成的是“自動聚出N類”,而不是事先指定要N類。但是該算法的缺點在於要決定滑動窗口半徑R,如果R定的過大或者太小,都會對聚類結果造成顯著的影響。
對於該算法其實還可以進一步進行優化,比如可以使用中位數而不是平均值來進行質心的漂移;或者在選取初始點之前可以進行一次分層抽樣,拿到每個區域的具有代表性的數據,而不是隨機選擇初始點。
總的來說,均值漂移聚類在各個聚類場景都可以使用,不會拘泥於數據是球形簇狀的分佈等條件,建議在使用該算法的時候和其他聚類算法一起使用,或者對該算法在使用前先進行抽樣等操作,可以進一步提升該算法的聚類效果。另外,初學者需要區分多種聚類方法的區別以及使用的前提和使用場景,不能隨意使用某種聚類算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章