Hierarchical and Density Clustering 基於層次和密度的聚類
Created: Apr 24, 2020 4:56 PM
K-Means的弊端
K-Meas算法並不是使用所以情況,K均值算法綜述試圖尋找高維領域呈原形、球形或超球面的類,對與下圖三個類別,K-Means算法就無法正確區分三個類別,
Hierarchical Clustering 層次聚類
agglomerative clustering 凝聚聚類
AgglomerativeClustering是層次聚類的一種,使用自底向上方法執行分層聚類:每個觀察都從其自己的聚類開始,並且聚類被連續合併在一起,分為單鏈接聚類、全鏈接聚類、平均距離鏈接、word'method離差平方和
單鏈單鏈接聚類
層次聚類的結果能讓我們直觀的瞭解類之間的關係。我們通過示例來分析
假如一家披薩店想對它的客戶位置做一個聚類處理,以便更好的確定在哪裡開分店,
我們使用單鏈接聚類法將它做聚類處理。
第一步,我們假設每一個點是一個類,併為每個點標記。
第二步,計算任意兩點之間的距離,然後選擇兩個類之間的最短距離(4,5),並用括號把它們鏈接起來,然後繼續尋找(1,2)(6,8),這樣我們就得到三個類,並把它標記在右邊。
現在問題就有點不同,7號點和黃色的類的距離是多少呢,是7到6的距離還是到8的距離?還是平均距離?這是區分不同層次聚類的方法的一個標準,單連接聚類關注的是類的最短距離,也就是6到7的距離,因為6是距離7最近的點,所以這個新類中含有另外一個類作為子類,然後就可以據此生成系統樹圖。
那麼我們分為幾個類別呢,如果我們輸入的類的數量是2,我們就可以從最上邊切割。
衡量類之間的距離,是區分不同層次聚類的一種方法,單連接聚類法關注的是兩個類之間的最短聚類,然後比較,選擇最短聚類,然後把這兩個類放到一個類中,這容易導致形成狹長的類,大多數情況下,我們還是想要緊湊的類。
我們可以看以下K-Means和單鏈接層次聚類的對比:
全鏈接聚類
在上圖的情況下,全連接聚類法關注的是兩個類中兩點之間的最遠距離,全連接聚類法中,這樣的距離衡量方法使得產生的類比較緊湊。
平均值聚類
平均值,計算兩類中任意兩點的聚類,然後取平均值,
Ward' Method離差平方和
先計算出兩個類所有點的中心點,也就是計算兩個類所有點的平均值,然後計算出兩個類距離中心點的距離C,再減去兩個類分別距離其的中心點距離A、B
優缺點
優點
- - 得到的層次表達信息豐富
- - 把數據集的聚類結構視覺化
- - 數據內部有層次關係時,更有用,例如生物學
缺點
- - 對噪音和離群值很敏感,所以需要提前清理噪音、離群值
- - 計算量大
Density Clustering 密度聚類
指的是具有噪聲的基於密度的聚類方法,對於有噪聲的數據有很強的使用性,它一般是將密集分佈的點聚類,其它剩餘的點標記為噪音
DBSCAN在開始時任意選擇一點,周圍沒有一個點,所以標記為噪聲點。
在選擇下一個點,周圍只有兩個點,這個數量不夠我們定義為一個類(5個點),所以標記為噪聲點。
我們看下一個點,週五有5個點,所以我們就把它標記為第一個類,並標記中心點。
繼續執行此步驟,找到類後繼續以它的邊界點作為核心點尋找,並標記最後的邊界點。
K-Means和DBSCAN對比
DBSCAN可視化
https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
優缺點
優點:
- - 不需要指明類的數量
- - 能靈活的找到並分離各種形狀和大小的類
- - 可以處理噪聲點和離散點
缺點:
- - 第一個是將兩個聚類中可到達的邊界點分配給首先找到它們的聚類,並且由於以任意順序訪問了這些點,因此在這種情況下,不能保證DBSCAN返回相同的聚類
- - 找到不同密度的類方面有一些困難
示例
<code>dataset_2 = pd.read_csv('varied.csv')[:300].values
helper.plot_dataset(dataset_2, xlim=(-14, 5), ylim=(-12, 7))/<code>
<code>eps_values = [0.3, 0.5, 1, 1.3, 1.5]
min_samples_values = [2, 5, 10, 20, 80]
helper.plot_dbscan_grid(dataset_2, eps_values, min_samples_values)/<code>
參數調整方法
許多小集群。 超出了數據集的預期。可以增加min_samples和epsilon
大多數點屬於一個類,減少epsilon並增加min_samples
大多數/所有數據點都標記為噪聲,增加epsilon並減少min_samples
除了極度密集的區域外,大多數/所有數據點都是標記為噪音。 (或者所有點都標記為噪聲)。減少min_samples和epsilon
閱讀更多 從零單排推薦系統 的文章