日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据挖掘】基于层次的聚类方法 ( 聚合层次聚类 | 划分层次聚类 | 族间距离 | 最小距离 | 最大距离 | 中心距离 | 平均距离 | 基于层次聚类步骤 | 族半径 )

發布時間:2025/6/17 编程问答 26 豆豆

文章目錄

        • 基于層次的聚類方法 簡介
        • 基于層次的聚類方法 概念
        • 聚合層次聚類 圖示
        • 劃分層次聚類 圖示
        • 基于層次的聚類方法 切割點選取
        • 族間距離 概念
        • 族間距離 使用到的變量
        • 族間距離 最小距離
        • 族間距離 最大距離
        • 族間距離 中心點距離
        • 族間距離 平均距離
        • 基于層次聚類 ( 聚合層次聚類 ) 步驟
        • 基于層次聚類 ( 聚合層次聚類 ) 算法終止條件
        • 族半徑 計算公式
        • 基于層次聚類總結



基于層次的聚類方法 簡介



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} 分到一個聚類中 ;

④ 第三步 : 分析相似度 , 發現 cccd,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} ;

③ 無法回退 : 該操作是無法實現的 , 聚類分組一旦 合并 或 分裂 , 此時就無法回退 ;



族間距離 概念



族間距離 :


① 作用: 族間距離 , 就是聚類分組之間的距離 , 之前的距離計算都是 樣本 之間的距離 , 這里的基于層次聚類時 , 不管是聚合層次聚類 , 還是劃分層次聚類 , 其都要進行 聚類分組 間的相似度比較 ,

② 聚合層次聚類 : 是 根據 聚類的族間距離 ( 聚類分組相似性 ) 將不同的聚類分組進行合并 ;

③ 劃分層次聚類 : 是 根據 聚類的族間距離 ( 聚類分組相似性 ) 將不同的聚類分組進行劃分 ( 拆分 ) ;



族間距離 使用到的變量



公式中 用到的 變量 :


① 樣本表示 : pppqqq 表示 分別 處于兩個聚類分組中的 兩個樣本 ;

② 樣本距離表示 : 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?)=minpCi?,qCj??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?)=maxpCi?,qCj??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?pCi??qCj??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)pCi??qCj??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=1n?d(pi??m)


RRR 表示聚類半徑 ;

nnn 表示聚類中的 樣本 個數 ;

mmm 代表聚類中心點 ;

d(pi?m)d(p_i - m)d(pi??m) 表示聚類中第 iii 個樣本距離中心點的距離 ;



基于層次聚類總結



1 . 基于層次聚類 的核心 : 是計算 兩個 聚類分組 ( 族 ) 之間的距離 , 根據 族間距離 進行 聚類合并 ;


2 . 適用場景 : 如果 每個 聚類 密度差不多 , 族間距離 分離的很清晰 , 那么使用不同的 族間距離 進行聚類 產生的聚類結果 基本一致 ;


3 . 算法缺陷 : 基于層次距離不適用于以下情況 ; 聚類分組 分離的不明顯 ; 形狀不是球形 , 凹形的 ; 聚類間大小不等 ; 各個聚類間樣本密度不同 ;

總結

以上是生活随笔為你收集整理的【数据挖掘】基于层次的聚类方法 ( 聚合层次聚类 | 划分层次聚类 | 族间距离 | 最小距离 | 最大距离 | 中心距离 | 平均距离 | 基于层次聚类步骤 | 族半径 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。