層次聚類方法(我們做算法的用的很少)對給定的數據集進行層次的分解或者合並,直到滿足某種條件
為止,傳統的層次聚類算法主要分為兩大類算法:
●凝聚的層次聚類: AGNES算法(AGglomerative NESting)==>采用自底向.上的策略。
最初將每個對象作為一個簇,然后這些簇根據某些准則被一步一步合並, 兩個簇間的
距離可以由這兩個不同簇中距離最近的數據點的相似度來確定;聚類的合並過程反復
進行直到所有的對象滿足簇數目。凝聚類的用的比較多一些
●分裂的層次聚類: DIANA算法(DIvisive ANALysis)== >采用自頂向下的策略。首先將
所有對象置於一個簇中, 然后按照某種既定的規則逐漸細分為越來越小的簇(比如最大
的歐式距離),直到達到某個終結條件(簇數目或者簇距離達到閾值)。
優缺點:
簡單,理解容易.
合並點/分裂點選擇不太容易
合並/分裂的操作不能進行撤銷
大數據集不太適合(數據量大到內存中放不下)
執行效率較低O(t*n2),t為迭代次數, n為樣本點數
簇間距離:不止是層次聚類可以做簇的合並
層次聚類合並策略:ward為最小距離,complete為最大距離,average為平均距離
其中,上兩行為凸形數據。游離在凸形數據邊緣的異常點檢測用最大距離比較好
聚類的話用最小距離比較好
非凸形數據異常點檢測的話,層次聚類不合適。
層次聚類優化算法(說實話,沒什么用):
假設有x1,x2,x3,x4四個數據,給定一個閾值為5,隨機拿一個樣本,比如是x1,,那么左子樹上分為三個組,第一個組是樣本個數,1個樣本,第二個組是x1的坐標,第三個組是橫縱坐標平方和。
再隨機取個樣本,比如x2,計算和x1的距離,小於閾值5的話,那么在一個簇上,第一個組是2個樣本,第二個組是橫縱坐標分別相加,第三個組是所有橫縱坐標的平方和。
目的:求均值時方便,不就是第二個組除以第一個組么。第三個維度是為了計算下一個樣本點到簇中心的距離