【数据挖掘】基于层次的聚类方法 ( 聚合层次聚类 | 划分层次聚类 | 族间距离 | 最小距离 | 最大距离 | 中心距离 | 平均距离 | 基于层次聚类步骤 | 族半径 )
文章目錄
- 基于層次的聚類方法 簡介
- 基于層次的聚類方法 概念
- 聚合層次聚類 圖示
- 劃分層次聚類 圖示
- 基于層次的聚類方法 切割點選取
- 族間距離 概念
- 族間距離 使用到的變量
- 族間距離 最小距離
- 族間距離 最大距離
- 族間距離 中心點距離
- 族間距離 平均距離
- 基于層次聚類 ( 聚合層次聚類 ) 步驟
- 基于層次聚類 ( 聚合層次聚類 ) 算法終止條件
- 族半徑 計算公式
- 基于層次聚類總結
基于層次的聚類方法 簡介
1 . 基于層次的聚類方法 : 將 數據集樣本對象 排列成 聚類樹 , 在 指定 的層次 ( 切割點 ) 進行切割 , 切割點 時刻 的聚類分組 , 就是 最終需要的聚類分組 ; 也就是這個切割點的切割的時刻 , 互相關聯的樣本 , 劃分到一個聚類分組中 ;
2 . 基于層次聚類方法 的兩種方式 :
① 聚合層次聚類 : 開始時 , 每個對象都是一個聚類分組 ( 原子聚類 ) , 根據 聚類之間的相似性 , 對原子聚類逐漸合并 , 最終會合并成一個聚類 ; 其 本質是 由 多個聚類分組 切割成 成少數 聚類分組 ;
② 劃分層次聚類 : 開始時 , 所有的樣本都在一個聚類中 , 根據聚類間相似性 , 對聚類進行劃分 , 最終 每個樣本 都會被劃分成一個聚類分組 ( 原子聚類 ) ; 本質是 由 少數 聚類分組 劃分成多個 聚類分組 ;
基于層次的聚類方法 概念
1 . 基于層次的聚類方法 概念 : 將數 據集樣本對象 排列成 樹結構 , 稱為 聚類樹 , 在指定的層次 ( 步驟 ) 上切割數據集樣本 , 切割后時刻的 聚類分組 就是 聚類算法的 聚類結果 ;
2 . 基于層次的聚類方法 : 一棵樹可以從葉子節點到根節點 , 也可以從根節點到葉子節點 , 基于這兩種順序 , 衍生出兩種方法分支 , 分別是 : 聚合層次聚類 , 劃分層次聚類 ;
3 . 聚合層次聚類 ( 葉子節點到根節點 ) : 開始時 , 每個樣本對象自己就是一個聚類 , 稱為 原子聚類 , 然后根據這些樣本之間的 相似性 , 將這些樣本對象 ( 原子聚類 ) 進行 合并 ;
常用的聚類算法 : 大多數的基于層次聚類的方法 , 都是 聚合層次聚類 類型的 ; 這些方法從葉子節點到根節點 , 逐步合并的原理相同 ; 區別只是聚類間的相似性計算方式不同 ;
4 . 劃分層次聚類 ( 根節點到葉子節點 ) : 開始時 , 整個數據集的樣本在一個總的聚類中 , 然后根據樣本之間的相似性 , 不停的切割 , 直到完成要求的聚類操作 ;
5 . 算法性能 : 基于層次的聚類方法的時間復雜度為 O(N2)O(N^2)O(N2) , 如果處理的樣本數量較大 , 性能存在瓶頸 ;
聚合層次聚類 圖示
1 . 聚合層次聚類 圖示 :
① 初始狀態 : 最左側 五個 數據對象 , 每個都是一個聚類 ;
② 第一步 : 分析相似度 , 發現 a,ba , ba,b 相似度很高 , 將 {a,b}\{a ,b\}{a,b} 分到一個聚類中 ;
③ 第二步 : 分析相似度 , 發現 d,ed, ed,e 相似度很高 , 將 {d,e}\{d, e\}{d,e} 分到一個聚類中 ;
④ 第三步 : 分析相似度 , 發現 ccc 與 d,ed,ed,e 相似度很高 , 將 ccc 數據放入 {d,e}\{d, e\}{d,e} 聚類中 , 組成 {c,d,e}\{c,d, e\}{c,d,e} 聚類 ;
⑤ 第四步 : 分析相似度 , 此時要求的相似度很低就可以將不同的樣本進行聚類 , 將前幾步生成的兩個聚類 , 合并成一個聚類 {a,b,c,d,e}\{a, b, c, d, e\}{a,b,c,d,e} ;
2 . 切割點說明 : 實際進行聚類分析時 , 不會將所有的步驟走完 , 這里提供四個切割點 , 聚類算法進行聚類時 , 可以在任何一個切割點停止 , 使用當前的聚類分組當做聚類結果 ;
① 切割點 111 : 在切割點 111 停止 , 會得到 555 個聚類分組 , {a}\{a\}{a} , {b}\{b\}{b}, {c}\{c\}{c}, ozvdkddzhkzd\{d\}{d} , {e}\{e\}{e} ;
② 切割點 222 : 在切割點 222 停止 , 會得到 444 個聚類分組 , {a,b}\{a, b\}{a,b} , {c}\{c\}{c}, ozvdkddzhkzd\{d\}{d} , {e}\{e\}{e} ;
③ 切割點 333 : 在切割點 333 停止 , 會得到 333 個聚類分組 , {a,b}\{a, b\}{a,b} , {c}\{c\}{c}, {d,e}\{d, e\}{d,e} ;
④ 切割點 444 : 在切割點 444 停止 , 會得到 222 個聚類分組 ; {a,b}\{a, b\}{a,b} , {c,d,e}\{c, d, e\}{c,d,e} ;
⑤ 走完整個流程 : 會得到 111 個聚類分組 , {a,b,c,d,e}\{a, b ,c, d, e\}{a,b,c,d,e} ;
劃分層次聚類 圖示
1 . 劃分層次聚類 圖示 :
① 初始狀態 : 最左側 五個 數據對象 , 屬于一個聚類 ;
② 第一步 : 分析相似度 , 切割聚類 , 將 {c,d,e}\{c,d, e\}{c,d,e} 與 {a,b}\{a ,b\}{a,b} 劃分成兩個聚類 ;
③ 第二步 : 分析相似度 , 將 {c,d,e}\{c,d, e\}{c,d,e} 中的 {c}\{c\}{c} 與 {d,e}\{d, e\}{d,e} 劃分成兩個聚類 ;
④ 第三步 : 分析相似度 , 將 {d,e}\{d, e\}{d,e} 拆分成 ozvdkddzhkzd\{d\}{d} 和 {e}\{e\}{e} 兩個聚類 ;
⑤ 第四步 : 分析相似度 , 將 {a,b}\{a ,b\}{a,b} 拆分成 {a}\{a\}{a} 和 {b}\{b\}{b} 兩個聚類 , 至此所有的數據對象都劃分成了單獨的聚類 ;
2 . 切割點說明 : 實際進行聚類分析時 , 不會將所有的步驟走完 , 這里提供四個切割點 , 聚類算法進行聚類時 , 可以在任何一個切割點停止 , 使用當前的聚類分組當做聚類結果 ;
① 切割點 111 : 在切割點 111 停止 , 會得到 111 個聚類分組 , {a,b,c,d,e}\{a, b ,c, d, e\}{a,b,c,d,e} ;
② 切割點 222 : 在切割點 222 停止 , 會得到 222 個聚類分組 ; {a,b}\{a, b\}{a,b} , {c,d,e}\{c, d, e\}{c,d,e} ;
③ 切割點 333 : 在切割點 333 停止 , 會得到 333 個聚類分組 , {a,b}\{a, b\}{a,b} , {c}\{c\}{c}, {d,e}\{d, e\}{d,e}$ ;
④ 切割點 444 : 在切割點 444 停止 , 會得到 444 個聚類分組 , {a,b}\{a, b\}{a,b} , {c}\{c\}{c}, ozvdkddzhkzd\{d\}{d} , {e}\{e\}{e} ;
⑤ 走完整個流程 : 會得到 555 個聚類分組 , {a}\{a\}{a} , {b}\{b\}{b}, {c}\{c\}{c}, ozvdkddzhkzd\{d\}{d} , {e}\{e\}{e} ;
基于層次的聚類方法 切割點選取
1 . 算法終止條件 ( 切割點 ) : 用戶可以指定聚類操作的算法終止條件 , 即上面圖示中的切割點 , 如 :
① 聚類的最低個數 : 聚合層次聚類中 , nnn 個樣本 , 開始有 nnn 個聚類 , 逐步合并 , 聚類個數逐漸減少 , 當聚類個數達到最低值 minminmin , 停止聚類算法 ;
② 聚類最高個數 : 劃分層次聚類中 , nnn 個樣本 , 開始有 111 個聚類 , 逐步劃分 , 聚類個數逐漸增加 , 當聚類個數達到最大值 maxmaxmax , 停止聚類算法 ;
③ 聚類樣本的最低半徑 : 聚類的數據樣本范圍不能無限擴大 , 指定一個閾值 , 只有將該閾值內的樣本放入一組 ; 半徑指的是所有對象距離其平均點的距離 ;
2 . 切割點回退問題 : 切割點一旦確定 , 便無法回退 ; 這里以聚合層次聚類為例 :
① 處于切割點 444 : 如已經執行到了步驟三 , 此時處于切割點 444 , 聚類分組為 {a,b}\{a, b\}{a,b} , {c,d,e}\{c, d, e\}{c,d,e} ;
② 試圖回退到 切割點 333 : 想要會回退到切割點 333 的狀態 , 視圖將聚類分組恢復成 {a,b}\{a, b\}{a,b} , {c}\{c\}{c}, {d,e}\{d, e\}{d,e} ;
③ 無法回退 : 該操作是無法實現的 , 聚類分組一旦 合并 或 分裂 , 此時就無法回退 ;
族間距離 概念
族間距離 :
① 作用: 族間距離 , 就是聚類分組之間的距離 , 之前的距離計算都是 樣本 之間的距離 , 這里的基于層次聚類時 , 不管是聚合層次聚類 , 還是劃分層次聚類 , 其都要進行 聚類分組 間的相似度比較 ,
② 聚合層次聚類 : 是 根據 聚類的族間距離 ( 聚類分組相似性 ) 將不同的聚類分組進行合并 ;
③ 劃分層次聚類 : 是 根據 聚類的族間距離 ( 聚類分組相似性 ) 將不同的聚類分組進行劃分 ( 拆分 ) ;
族間距離 使用到的變量
公式中 用到的 變量 :
① 樣本表示 : ppp 和 qqq 表示 分別 處于兩個聚類分組中的 兩個樣本 ;
② 樣本距離表示 : d(p,q)d(p, q)d(p,q) 表示 ppp 樣本對象 與 qqq 樣本對象的距離 ;
③ 聚類 ( 族 ) 表示 : CiC_iCi? 和 CjC_jCj? 分別表示兩個 聚類 / 族 / 聚類分組 ;
④ 聚類距離表示 : d(Ci,Cj)d(C_i, C_j)d(Ci?,Cj?) 表示 CiC_iCi? 聚類 與 CjC_jCj? 聚類 之間的距離 ;
⑤ 聚類中心點 : mim_imi? 是 CiC_iCi? 聚類的中心點 , mjm_jmj? 是 CjC_jCj? 聚類的中心點 ;
⑥ 樣本個數 : nin_ini? 是 CiC_iCi? 聚類的樣本個數 , njn_jnj? 是 CjC_jCj? 聚類的樣本個數 ;
族間距離 最小距離
Ci,CjC_i \,, C_jCi?,Cj? 族間距離 最小距離 公式 :
dmin(Ci,Cj)=minp∈Ci,q∈Cjd(p,q)d_{min}(C_i , C_j) = min _{p \in C_i , q \in C_j} d(p, q)dmin?(Ci?,Cj?)=minp∈Ci?,q∈Cj??d(p,q)
dmin(Ci,Cj)d_{min}(C_i , C_j)dmin?(Ci?,Cj?) 表示兩個聚類的最小距離 ;
ppp 是屬于 CiC_iCi? 聚類中的任意樣本 ;
qqq 是屬于 CjC_jCj? 聚類中的任意樣本 ;
總結 : 兩個聚類中兩個最近的樣本之間的距離就是 聚類間的 最小距離 ;
族間距離 最大距離
Ci,CjC_i \,, C_jCi?,Cj? 族間距離 最大距離 公式 :
dmax(Ci,Cj)=maxp∈Ci,q∈Cjd(p,q)d_{max }(C_i , C_j) = max _{p \in C_i , q \in C_j} d(p, q)dmax?(Ci?,Cj?)=maxp∈Ci?,q∈Cj??d(p,q)
dmax(Ci,Cj)d_{max }(C_i , C_j)dmax?(Ci?,Cj?) 表示兩個聚類的最大距離 ;
ppp 是屬于 CiC_iCi? 聚類中的任意樣本 ;
qqq 是屬于 CjC_jCj? 聚類中的任意樣本 ;
總結 : 兩個聚類中兩個最遠的樣本之間的距離就是 聚類間的 最大距離 ;
族間距離 中心點距離
Ci,CjC_i \,, C_jCi?,Cj? 族間距離 中心點距離 公式 :
dmean(Ci,Cj)=d(mi,mj)d_{mean }(C_i , C_j) = d(m_i, m_j)dmean?(Ci?,Cj?)=d(mi?,mj?)
dmean(Ci,Cj)d_{mean }(C_i , C_j)dmean?(Ci?,Cj?) 表示兩個聚類的 中心點距離 ;
mim_imi? 是 CiC_iCi? 聚類的中心點 ;
mjm_jmj? 是 CjC_jCj? 聚類的中心點 ;
d(mi,mj)d(m_i, m_j)d(mi?,mj?) 表示 mim_imi? 樣本 和 mjm_jmj? 樣本 之間的距離 ;
總結 : 兩個聚類中的中心點樣本之間的距離就是 聚類間的 中心點距離 ;
族間距離 平均距離
Ci,CjC_i \,, C_jCi?,Cj? 族間距離 平均距離 公式 :
davg(Ci,Cj)=1ninj∑p∈Ci∑q∈Cjd(p,q)d_{avg}(C_i , C_j) = \frac{1}{n_i n_j}\sum_{p \in C_i}\sum_{q \in C_j} d(p, q)davg?(Ci?,Cj?)=ni?nj?1?p∈Ci?∑?q∈Cj?∑?d(p,q)
dmean(Ci,Cj)d_{mean }(C_i , C_j)dmean?(Ci?,Cj?) 表示兩個聚類的 中心點距離 ;
ppp 是屬于 CiC_iCi? 聚類中的任意樣本 ;
qqq 是屬于 CjC_jCj? 聚類中的任意樣本 ;
nin_ini? 是 CiC_iCi? 聚類的樣本個數 ;
njn_jnj? 是 CjC_jCj? 聚類的樣本個數 ;
∑p∈Ci∑q∈Cjd(p,q)\sum_{p \in C_i}\sum_{q \in C_j} d(p, q)∑p∈Ci??∑q∈Cj??d(p,q) 表示 聚類 CiC_iCi? 中每一個點 到 聚類 CjC_jCj? 中所有點的距離 , 這里 CiC_iCi? 中每個點都對應 njn_jnj? 個距離 , nin_ini? 個點 , 對應 ni×njn_i \times n_jni?×nj? 個距離 ;
總結 : 兩個聚類中的 平均距離 就是 聚類間的 所有點的距離的平均距離 ;
基于層次聚類 ( 聚合層次聚類 ) 步驟
聚合層次聚類步驟 :
① 原理 : 根據 聚類分組 的 族間距離 對相似的 聚類分組 進行 逐步合并 ;
② 步驟一 : 每個樣本都構成 聚類分組 , 稱為 原子聚類 ;
③ 步驟二 : 計算所有 聚類 之間的距離 ; 可以采用 最小距離 , 最大距離 , 中心點距離 , 平均距離 中的一個 ;
④ 步驟三 : 將距離最近的兩個 聚類分組 合并 , 聚類的個數 減少 111 個 ;
⑤ 步驟四 : 轉到 步驟二 計算聚類間距離 , 步驟三 合并近距離聚類 ; 如果滿足算法終止條件 , 那么停止聚類 , 否則一直循環迭代 , 最終合并成一個聚類 ;
基于層次聚類 ( 聚合層次聚類 ) 算法終止條件
算法終止條件 : 是由 用戶 指定的 , 如 :
① 聚類分組 ( 族 ) 個數 : 當聚類的個數達到閾值 , 算法終止 ;
② 聚類半徑 : 每個 聚類的半徑 都超過某個閾值 ;
族半徑 計算公式
族 ( 聚類 ) 半徑計算公式 :
R=1n∑i=1nd(pi?m)R=\frac{1}{n}\sum _{i=1}^n d(p_i - m)R=n1?i=1∑n?d(pi??m)
RRR 表示聚類半徑 ;
nnn 表示聚類中的 樣本 個數 ;
mmm 代表聚類中心點 ;
d(pi?m)d(p_i - m)d(pi??m) 表示聚類中第 iii 個樣本距離中心點的距離 ;
基于層次聚類總結
1 . 基于層次聚類 的核心 : 是計算 兩個 聚類分組 ( 族 ) 之間的距離 , 根據 族間距離 進行 聚類合并 ;
2 . 適用場景 : 如果 每個 聚類 密度差不多 , 族間距離 分離的很清晰 , 那么使用不同的 族間距離 進行聚類 產生的聚類結果 基本一致 ;
3 . 算法缺陷 : 基于層次距離不適用于以下情況 ; 聚類分組 分離的不明顯 ; 形狀不是球形 , 凹形的 ; 聚類間大小不等 ; 各個聚類間樣本密度不同 ;
總結
以上是生活随笔為你收集整理的【数据挖掘】基于层次的聚类方法 ( 聚合层次聚类 | 划分层次聚类 | 族间距离 | 最小距离 | 最大距离 | 中心距离 | 平均距离 | 基于层次聚类步骤 | 族半径 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据挖掘】基于密度的聚类方法 - OP
- 下一篇: 【数据挖掘】基于方格的聚类方法 ( 概念