【數據挖掘】第8章 聚類分析: 基本概念和算法

8 聚類分析: 基本概念和算法


一、聚類分析概述

1)什麼是聚類分析

聚類分析僅根據在數據中發現的描述對象及其關係的信息,將數據對象分組。其目標是, 組內的對象之間是相似的(相關的),而不同的組中的對象是不同的(不相關的)。
組內的相似性(同質性)越大,組間差別越大,聚類就越好。

在這裏插入圖片描述
聚類分析的應用
在這裏插入圖片描述

2)不同的簇類型

簇(Cluster)的定義是不精確的
在這裏插入圖片描述
不同的簇類型

  • Well-separated clusters(明顯分離的簇)
  • Center-based clusters(基於中心的簇)
  • Contiguous clusters(基於鄰近的簇)
  • Density-based clusters (基於密度的簇)
  • Property or Conceptual (概念簇)
    在這裏插入圖片描述

3)聚類算法的分類

大體上,主要的聚類算法可以劃分爲如下幾類:劃分方法層次方法基於密度的方法基於網格的方法

1–劃分方法
▪ 給定一個有N個元組或者記錄的數據集,劃分方法將構造K個分組,每一個分組就代表一個聚類,K<N。而且這K分組滿足下列條件:
1)每一個分組至少包含一個數據記錄;
2)每一個數據記錄隸屬於且僅屬於一個分組;
▪ 對於給定的K,算法首先給出一個初始的分組方法,以後通過反覆迭代的方法改變分組,使得每一次改進之後分組方案都較前一次好,所謂的“好”的標準就是同一分組的記錄越相似越好,而不同分組中的記錄則越相異越好。
▪ 最著名與最常用的劃分方法是 k-均值方法 和 k-中心點方法。

2–基於層次的方法
▪ 一個層次的聚類方法是將數據對象組成一棵聚類的樹。根據層次分解是自底向上還是自頂向下形成,層次的聚類方法可以進一步分爲聚合式層次聚類(agglomerative)和分裂式層次聚類(divisive)。
▪ 聚合式的層次聚類,其層次過程的方向是自底向上的。將樣本集合中的每個對象作爲一個初始簇,然後將最近的兩個簇合並,組成新的簇,再將這個新簇與剩餘的簇中最近的合併,這種合併過程需要反覆進行,直到所有的對象最終被聚到一個簇中。
▪ 分裂式的層次聚類,其層次過程的方向是自頂向下的,最初先將有關對象放到一個簇中,然後將這個簇分裂,分裂的原則是使兩個子簇之間的聚類儘可能的遠,分裂的過程也反覆進行,直到某個終止條件被滿足時結束。不論是合併還是分解的過程,都會產生樹狀結構,樹的葉子節點對應各個獨立的對象,頂點對應一個包含了所有對象的簇。
▪ 常見的層次聚類算法有:BIRCH算法、CURE算法、ROCK算法等。

3–基於密度的方法
▪ 基於密度的方法與其他方法的一個最根本的區別是:它不是基於各種各樣的距離,而是基於密度的,它將簇看做是數據空間中被低密度區域分割開的高密度對象區域,這種方法的優勢是善於發現空間數據庫中任意形狀的聚類。
▪ 基於密度的聚類根據空間密度的差別,把具有相似密度的點作爲聚類。由於密度是一個局部概念,這類算法又稱爲局部聚類(Local Clustering)。一般情況下,基於密度的聚類只掃描一次數據庫,故又稱爲是單次掃描聚類(Single Scan Clustering)。
▪ 基於密度的聚類方法主要:DBSCAN算法、DENCLUE算法。

4–基於網格的方法
▪ 基於網格的方法採用一個多分辨率的網格數據結構。它將數據空間量化,並將其劃分爲有限數目的網格單元,所有的聚類操作都在網格上進行。該算法的優勢在於處理速度快,處理時間與數據對象的數目無關。
▪ 基於網格的聚類方法有STING算法和CLIQUE算法等。

二、K-均值聚類算法

K-means Clustering
K均值是基於原型的、劃分的聚類技術。
典型的基於原型的、劃分的聚類算法: K均值K中心點

  • K均值用 質心 定義原型,其中質心是一組點的均值。 K均值聚類用於n維連續空間中的對象。它試圖發現用戶指定個數(K)的簇(由質心代表)。
  • K中心點使用 中心點 定義原型,其中中心點是一組點中最有代表性的點。K中心點聚類可以用於廣泛的數據,因爲它只需要對象之間的鄰近性度量。儘管質心幾乎從來不對應實際的數據點,但是根據定義,中心點必須是一個實際的數據點。

1)基本K均值算法

K均值的算法步驟:首先選擇K個初始質心,其中K是用戶指定的參數,即所期望的簇的個數。每個點指派到最近的質心,而指派到一個質心的點集爲一個簇。然後,根據指派到簇的點,更新每個簇的質心。重複指派和更新步驟,直到簇不發生變化,或等價的,直到質心不發生變化。

算法流程如下:
在這裏插入圖片描述
K-means Clustering: Example
在這裏插入圖片描述
K-均值聚類的距離度量與目標函數
考慮鄰近度量爲歐幾里得距離的數據
度量聚類質量最常用的是誤差的平方和(SSE)
▪ 對於每個點, 其誤差是到最近質心的距離
▪ 爲了得到 SSE, 我們對每個點的誤差求平方和   SSE=i=1KxCidist2(ci,x)SSE=\displaystyle\sum_{i=1}^{K}\sum_{x\in C_i}dist^2(c_i,x)
xx是簇 $C_i $的點, cic_i 是簇CiC_i的代表點
  可以證明 cic_i 對應於簇的質心(均值)   ci=1mixCixc_i=\frac{1}{m_i}\displaystyle\sum_{x\in C_i}x

▪ 給定兩個聚類, 我們可以選擇具有最小SSE的聚類

其它距離度量
K-means也可以用於非歐氏空間數據
例, 文檔數據

  • 通常, 文檔用餘弦相似性度量
    距離是相異性度量, 而餘弦是相似性度量
    質心仍然用均值
    最近的質心是最相似的質心
  • 目標: 最大化簇中文檔與簇的質心的相似性
    總凝聚度   Totalcohesion=i=1KxCicosine(x,ci)Totalcohesion=\displaystyle\sum_{i=1}^{K}\sum_{x\in C_i}cosine(x,c_i)

K均值:鄰近度、質心和目標函數的常見選擇
在這裏插入圖片描述

基本K均值算法存在的問題

  • 不同的初始質心將收斂得到不同的目標函數,可能只能達到局部最優解。
  • 隨機選取初始質心,拙劣的初始質心,可能導致很糟糕的聚類結果。
  • 可能產生空簇
  • 容易受到離羣點的影響
  • 不能處理非球形簇、不同尺寸和不同密度的簇

1–初始質心問題
在這裏插入圖片描述
解決初始質心的選擇問題
方法1:多次運行,選取最小的SSE
方法2:採用小部分數據,並進行層次聚類得到初始質心
方法3:選擇多於K個的初始質心,並在其中選出K個分佈廣泛的作爲初始質心。

  • 隨機地選擇第一個點,或取所有點的質心作爲第一個點。然後,對於每個後繼初始質心,選擇離已經選取過的初始質心最遠的點。
  • 使用這種方法,確保了選擇的初始質心不僅是隨機的,而且是散開的。
  • 但是,這種方法可能選中離羣點。
  • 此外,求離當前初始質心集最遠的點開銷也非常大。爲了克服這個問題,通常該方法用於點樣本。

2–可能產生空簇
如果所有的點在指派步驟都未分配到某個簇,就會得到空簇。
如果這種情況發生,則需要某種策略來選擇一個替補質心,否則的話,平方誤差將會偏大。
一種方法是選擇一個距離當前任何質心最遠的點。這將消除當前對總平方誤差影響最大的點。
另一種方法是從具有最大SSE的簇中選擇一個替補的質心。這將分裂簇並降低聚類的總SSE。

如果有多個空簇,則該過程重複多次。

3–容易受到離羣點的影響
使用平方誤差時,離羣點會過度影響所發現的簇
在可能的條件下,提前刪除離羣點
也可以在後處理時識別離羣點

4–不能處理非球形簇、不同尺寸和不同密度的簇
在這裏插入圖片描述

2)k-中心點聚類方法

k-均值算法對離羣點很敏感!

  • 因爲具有特別大的值的對象可能顯著地影響數據的均值.

k-中心點(k-Medoids):距離質心最近的點

  • 不採用簇中對象的平均值作爲參照點, 而是選用簇中最靠近中心的對象, 即中心點(medoid)作爲參照點.。
    在這裏插入圖片描述

三、凝聚層次聚類

層次聚類
將數據對象以樹狀的層次關係來看待。依層次建構的方式,一般分成兩種來進行:凝聚的 、分裂的
在這裏插入圖片描述

  • 凝聚的: 從點作爲個體簇開始,每一步合併兩個最接近的簇,直到只剩下一個簇
  • 分裂的: 從包含所以點的某個簇開始,每一步分裂一個簇,直到只剩下單點簇

傳統的層次聚類算法使用形似性矩陣或聚類矩陣;每次合併或分裂一個簇

1)基本的凝聚層次聚類算法

基本算法流程
在這裏插入圖片描述
關鍵操作是如何計算簇之間的鄰近性

2)如何計算簇之間的鄰近性

在這裏插入圖片描述
簇相似性: MIN or Single Link
單鏈,又稱最短距離法,兩個簇的鄰近度定義爲兩個不同簇中任意兩點之間的最短距離。
在這裏插入圖片描述
簇相似性: MAX or Complete Linkage
全鏈,又稱最長距離法,兩個簇的鄰近度定義爲兩個不同簇中任意兩點之間的最長距離。
在這裏插入圖片描述
簇相似性: Group Average
組平均法,兩個簇的鄰近度定義爲兩個不同簇中所有點對鄰近度的平均值。
在這裏插入圖片描述
在這裏插入圖片描述

3)層次聚類的主要問題

  • 缺乏全局目標函數。
    凝聚層次聚類不能視爲全局優化一個目標函數。
  • 處理不同大小的聚類能力。
    即如何處理待合併的簇對的相對大小。
    有兩種方法:加權,平等的對待所有簇;非加權,考慮每個簇的點數。
  • 合併決策是最終的。
    對於合併兩個簇,凝聚層次算法傾向於作出好的局部決策,因爲它們可以使用所有點的逐對相似度信息。然而,一旦作出合併兩個簇的決策,以後就不能撤銷。有一些技術試圖克服“合併是最終的”這一限制。一種方法試圖通過如下方法來修補層次聚類,移動樹的分支以改善全局目標函數。另一種方法使用劃分聚類技術(如K均值)來創建許多小簇,然後從這些小簇出發進行層次聚類。

bingo~   ✨ 只要心中花千樹,人生何處不逢春。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章