這是離開公司前做的最後乙個演算法,之前做的一些演算法,由於老大的指點,少走了很多彎路,密度峰值聚類這個是純粹自己做的,走了很多彎路,在這裡和大家分享借鑑一下,共勉!
一、簡單介紹及原理
顧名思義,這是一種基於密度的聚類演算法,以高密度區域作為判斷依據,這種非引數的方法,和傳統方法比,適用於處理任何形狀的資料集,而且無需提前設定簇的數量。
這裡提到乙個聚類中心的概念:類簇的中心是由一些區域性密度較低的點所圍繞,且這些點距離其他高密度的點的距離都比較遠,通過計算最近鄰的距離,得到聚類中心,並依據密度大小進行排列。
我在這裡借鑑了——馬春來,單洪,馬濤.一種基於簇中心點自動選擇策略的密度峰值聚類演算法.電腦科學.2016,43(7)。這個文獻中提供了一種自動選擇策略的方法,大家有興趣可以看一下。
對於乙個資料集d=的點pi,計算每個點的區域性密度ρi和相鄰密度點的距離di,這裡提出乙個概念,簇中心權值:γi= ρi * di 。
通過將簇中心權值降序排列,我們可以通過下降的趨勢(斜率)找出拐點所在。
下圖為選擇聚類中心的方法
二、一些遇到的問題及我的心得
1、有現成的**固然好,但是別人的**解決的問題終歸和你的問題不一樣。不如自己從頭到尾擼一遍,結合自己的情況進行修改。
2、傳統的密度峰值聚類需要自己設定引數,稍微加以改進可以扔掉引數,讓它自己迭代。
3、為什麼要將密度和距離相乘:這樣可以避免某一項的值過小,導致特徵不明顯
4、注意歸一化的問題,具體情況具體對待。(在歸一化這個問題坑了我蠻久)
5、拐點的確定問題,在演算法構建的初始階段,最好人工重複確認一下,避免盲目自信到後面找不到問題所在。
6、若某兩個或多個聚類點距離較近,將其歸為乙個同乙個聚類中心。
聚類演算法(四) 基於密度峰值的聚類演算法
主要思想是尋找被低密度區與分離的高密度區域,基於的假設為 1 類簇中心點的密度大於周圍鄰居點的密度 2 類簇中心點與更高密度點之間的距離相對較大 因此有兩個需要計算的量 區域性密度pi和高區域性密度點距離 與高密度點之間的距離 i pi理解 其中dc表示截斷距離,這個公式的意義就是找到與第i個資料點...
一種基於密度峰值的聚類演算法
2014年science刊發了一篇標題為clustering by fast search and find of density peaks的文章,文章中介紹了一種基於密度峰值的聚類演算法。傳統的聚類演算法k means,通常不適用於非球形的簇。這裡所謂的球形簇是根據k means演算法基本原理得...
聚類總結(中) 密度聚類
密度聚類是一種基於密度的聚類方法,基於密度的聚類方法的主要思想是尋找被低密度區域分離的高密度區域。密度度量 乙個點的區域性密度有不同的度量方式 1.畫個圈,數圈內其他點個數是一種方法。2.用圈內其他點和給點半徑的比值的高斯概率密度形式,對距離核心點距離近的給大權重。3.計算圈內距離最小的前n個點到核...