kmeans優化方法簡介
在之前的文章中已經介紹了kmeans方法的原理和步驟,kmeans方法是一種常見的聚類方法,但是由於它的一些缺點導致聚類的效果一般,比如初值k的選取會影響聚類的效果。與此同時,由於kmeans適用於球形簇的資料分布,而當資料的分布是其他分布的時候,直接使用kmeans方法是不合適的,聚類的效果會非常差。
針對上述兩類的問題,本文主要介紹兩種方法進行某種程度上的優化,使得對於初值的選取和非球形簇的資料可以較好的處理,即對應kmeans++方法和核函式kmeans方法,下面將解藥介紹這兩個優化方法的原理。
首先是kmeans++方法,該方法就是針對一開始確定k個初始點的乙個優化方法,它的核心思想是將初始點在進行選取的時候,選擇互相距離更遠的點作為k均值聚類的初始點。該演算法的後續步驟和kmeans的步驟相同,在此處不展開說明。其中該演算法選擇初始點的步驟如下:
1)隨機選出1個點記作k1,把k1作為第乙個聚類的初始值
2)計算每個點與當前已有的聚類中心的距離的最短距離,將這個距離總和值記作mindist(x) ,這個值越大,那麼這個點被選為聚類點的概率就更大
3)重複步驟2,直到選取了k個初始點
下面我們舉個例子,假設我們有9組人體重量的資料(公斤),我們要將資料分為k=3的類,即要選出3個初始的聚類點。我們假設在此處計算距離使用絕對值距離,並假設上述的mindist(x)是完全正比於被選為聚類點的概率的id1
2345
6789
體重5811
5052
4692
95100
我們隨機選擇乙個初始點k1,選中了id=2的點作為第乙個聚類的初始值,在第二次選擇的時候,通過計算發現,id=9這個點的體重值和id=2這個點的距離最大,所以我們選擇id=9這個點作為第二個初始點k2。在第三次選擇的時候,通過計算剩餘7個點與k1和k2的距離最小值發現,id=5這個點的mindist(x)值是最大的,所以選擇id=5作為第三個初始點k3,在選出了上述三個聚類點後,進行kmeans聚類會非常快的收斂,因為我們發現資料的分布確實是呈明顯的3類,所以kmeans++方法大大提公升了聚類的效果以及聚類收斂速度,雖然在一開始選擇點會比較慢,但是後續的訓練會非常快,所以該方法的優化是比較合理的,初始選擇聚類初值的過程相當於是乙個預訓練的過程。
而對於非球形簇分布的資料,我們使用帶核函式的kmeans方法,該方法就是在拿到初始資料後,使用核函式進行資料對映,把原本糾纏在一起的資料對映到高維空間後,資料可能會變得較為分散,再使用kmeans方法進行聚類能得到較好的效果。一般常見的核函式都可以作為對映的函式,比如高斯核函式、sigmoid核函式、拉普拉斯核函式等,後續聚類的步驟就是kmeans的步驟,在此處也不詳細敘述。
總的來說,對於kmeans的方法可以進行更多的優化,比如使用kd樹加快搜尋速度,使用核函式提公升維度,使用預訓練的方法提公升收斂速度,初學者在接觸kmeans方法的時候要注意這些優化的技巧,在競賽或者專案上非常有用。
泛統計理論初探 均值漂移演算法初探
均值漂移聚類演算法簡介 本文主要是介紹均值漂移聚類演算法,又稱為mean shift cluster,該演算法屬於無監督學習的聚類方法。主要從演算法的使用場景 步驟 核心思路等角度去介紹演算法。之前其實也介紹過一些聚類的演算法,比如kmeans dbscan等方法,本次介紹的均值漂移聚類演算法是一種...
泛統計理論初探 初探遺傳演算法
遺傳演算法理解與思路 本文將會簡要的介紹遺傳演算法,該方法也是一種啟發式搜尋的演算法,它是 於生物學進化規律的經典概念,就是適者生存 優勝劣汰的思路。該演算法是上個世紀70年代被提出的,它不需要像神經網路之類的方法需要對函式的連續性有要求,而是可以使用基於概率的思路去進行搜尋,結合遺傳 變異 選擇的...
泛統計理論初探 初探XGBoost方法
初探xgboost方法 在本文中將會繼續介紹整合學習裡的boosting思路,並且會選用xgboost方法來介紹。xgboost是一種優化過的提公升學習方法,該方法在一些競賽或者專案中經常被使用,它的 正確率是比較高的,總體來說效能不錯。其實從該方法的名字我們可以發現,這是一種在gbdt方法的基礎上...