1. 程式人生 > >k-means算法的優缺點以及改進

k-means算法的優缺點以及改進

效果 研究 聚類算法 www. 理解 隨機選擇 tle 距離度量 can

大家接觸的第一個聚類方法,十有八九都是K-means聚類啦。該算法十分容易理解,也很容易實現。其實幾乎所有的機器學習和數據挖掘算法都有其優點和缺點。那麽K-means的缺點是什麽呢?
總結為下:
(1)對於離群點和孤立點敏感;
(2)k值選擇;
(3)初始聚類中心的選擇;
(4)只能發現球狀簇。
對於這4點呢的原因,讀者可以自行思考下,不難理解。針對上述四個缺點,依次介紹改進措施。

改進1

首先針對(1),對於離群點和孤立點敏感,如何解決?筆者在前面的一篇博客中,提到過離群點檢測的LOF算法,通過去除離群點後再聚類,可以減少離群點和孤立點對於聚類效果的影響。

改進2

k值的選擇問題,在安徽大學李芳的碩士論文中提到了k-Means算法的k值自適應優化方法。下面將針對該方法進行總結。
首先該算法針對K-means算法的以下主要缺點進行了改進:
1)必須首先給出k(要生成的簇的數目),k值很難選擇。事先並不知道給定的數據應該被分成什麽類別才是最優的。
2)初始聚類中心的選擇是K-means的一個問題。
李芳設計的算法思路是這樣的:可以通過在一開始給定一個適合的數值給k,通過一次K-means算法得到一次聚類中心。對於得到的聚類中心,根據得到的k個聚類的距離情況,合並距離最近的類,因此聚類中心數減小,當將其用於下次聚類時,相應的聚類數目也減小了,最終得到合適數目的聚類數。可以通過一個評判值E來確定聚類數得到一個合適的位置停下來,而不繼續合並聚類中心。重復上述循環,直至評判函數收斂為止,最終得到較優聚類數的聚類結果。

參考資料

李芳. K-Means算法的k值自適應優化方法研究[D]. 安徽大學, 2015.

改進3

對初始聚類中心的選擇的優化。一句話概括為:選擇批次距離盡可能遠的K個點。具體選擇步驟如下。

首先隨機選擇一個點作為第一個初始類簇中心點,然後選擇距離該點最遠的那個點作為第二個初始類簇中心點,然後再選擇距離前兩個點的最近距離最大的點作為第三個初始類簇的中心點,以此類推,直至選出K個初始類簇中心點。

對於該問題還有個解決方案。之前我也使用過。熟悉weka的同學應該知道weka中的聚類有一個算法叫Canopy算法。
選用層次聚類或者Canopy算法進行初始聚類,然後利用這些類簇的中心點作為KMeans算法初始類簇中心點。該方法對於k值的選擇也是十分有效的。
點擊獲取參考資料

改進4

只能獲取球狀簇的根本原因在於,距離度量的方式。在李薈嬈的碩士論文K_means聚類方法的改進及其應用中提到了基於2種測度的改進,改進後,可以去發現非負、類橢圓形的數據。但是對於這一改進,個人認為,並沒有很好的解決K-means在這一缺點的問題,如果數據集中有不規則的數據,往往通過基於密度的聚類算法更加適合,比如DESCAN算法。

k-means算法的優缺點以及改進