跳轉到內容

R 中的資料探勘演算法/聚類/CLUES

來自華夏公益教科書,開放的書籍,開放的世界

聚類分析,根據相似性(或不相似性)度量將模式組織成簇,是一種無監督技術,廣泛應用於各種學科。它在資料探勘中有很多應用,因為大型資料集需要被劃分為更小、更同質的組。聚類技術具有廣泛的用途,例如人工智慧、模式識別、經濟學、生物學和營銷。聚類技術很重要,隨著資料量和計算機處理能力的增加,其重要性也隨之增加。

clues:基於區域性收縮的非引數聚類

[編輯 | 編輯原始碼]

R 包 clues 旨在提供對簇數量的估計,並同時透過區域性收縮獲得資料集的劃分。clues 中的收縮過程是透過均值漂移演算法完成的。它也受到 K 最近鄰方法的影響,不使用核函式。K 值從一個小數字開始,逐漸增加,直到強度度量、CH 指數或輪廓指數最佳化。CLUES 演算法的主要貢獻是它能夠識別和處理不規則元素。為了幫助驗證簇數量和聚類演算法質量的質量,提供了五個指標來支援決策。

演算法

[編輯 | 編輯原始碼]

CLUES(基於區域性收縮的 CLUstEring)演算法包含三個過程

  1. 收縮
  2. 劃分
  3. 確定最佳 K

對於收縮過程,資料集以一種方式進行校準,將每個資料點推向其焦點,即簇中心或機率密度函式的模式。K 值是迭代選擇的,由於中值的穩健性,每個資料點都移動到該集合中元素級中值。此中值包含其 K 個最近鄰,根據不相似性度量,即歐幾里德距離或皮爾遜相關性。

對於此過程,使用者需要設定一個停止規則,超過該規則,額外的迭代在準確性方面將不再顯著。經過此收縮過程後,資料中的相互間隙很明顯。

劃分過程使用從收縮中獲得的校準資料。此資料用於代替原始資料集。劃分從選擇一個任意資料點開始,並將其替換為其最近的同類點,記錄它們的距離。相同的移動應用於此同類點。選擇不進行替換。一旦選擇了某個資料點進行替換,它在該執行中就不會再次被選擇。為了分離組,引入了平均距離的總和和四分位距的 1:5 倍。每次新的同類點超越移動都會建立一個新的組,並增加一個組索引。

最佳 K 計算涉及最佳化強度度量指數,即 CH 指數或輪廓指數。引入一個因子 f 來提高計算速度。預設情況下,此因子為 0.05。使用者可以修改此因子,但必須意識到與大因子相關的長時間計算。只要 K 位於最佳 K 的鄰域內,K 的選擇對聚類結果幾乎沒有影響。選擇因子 0.05 旨在最大限度地減少不會顯著影響結果的額外計算。

為了增強計算能力,我們將 K 初始化為 fn,並將 K 的增量大小設定為 fn 用於下一次迭代。然後,我們將前一步的校準資料用作新資料。

安裝

R > install.packages("clues")

使用

library("clues")

clues 過程

clues(y, n0, alpha, eps, itmax, K2.vec, strengthMethod, strengthIni, disMethod, quiet)

引數

  • y:資料矩陣,是 R 矩陣物件(對於維度 > 1)或向量物件(對於維度 = 1),行是觀測值,列是變數。
  • n0:對簇數量的猜測。預設值為 5。
  • alpha:速度因子。預設設定為 0.05。
  • eps:一個小正數。如果值小於“eps”,則認為該值為零。預設值為 1.0e-4。
  • itmax:允許的最大迭代次數。預設值為 20。
  • K2.vec:迭代第二遍的最近鄰數量範圍。預設值為 n0 (5)。
  • strengthMethod:指定首選的簇強度度量(即簇的緊湊性)。兩種可用的方法是“sil”(輪廓指數)和“CH”(CH 指數)。
  • strengthIni:簇強度度量的下限的初始值。任何負值都可以。
  • disMethod:不相似性度量的規範。可用的度量是“Euclidean”和“1-corr”。
  • quiet:邏輯值。指示是否應該輸出中間結果。

本節列出了執行 clues 時可以檢視的值。

  • K:可用於獲得最終聚類的最近鄰的數量。
  • size:每個簇的資料點數量的向量。
  • mem:資料點的簇成員資格向量。簇成員資格取值:1、2、...、g,其中 g 是估計的簇數量。
  • g:對簇數量的估計。
  • CH:如果“strengthMethod”為“CH”,則最終劃分的 CH 指數值。
  • avg.s:如果“strengthMethod”為“sil”,則最終劃分的輪廓指數值的平均值。
  • s:如果“strengthMethod”為“sil”,則資料點的輪廓指數向量。
  • K.vec:每次迭代使用的最近鄰的數量。
  • g.vec:每次迭代獲得的簇數量。
  • myupdate:邏輯值。指示第一遍獲得的劃分是否與第二遍獲得的劃分相同。
  • y.old1:用於收縮和聚類的資料。
  • y.old2:收縮和聚類後返回的資料。
  • y:來自輸入的資料副本。
  • strengthMethod:來自輸入的 strengthMethod 的副本。
  • disMethod:來自輸入的不相似性度量的副本

我們將展示一個使用 Maronna 資料集執行 clues 的示例。該集合在二維空間中有 4 個略微重疊的簇。每個簇包含 50 個數據點。Maronna 資料是模擬資料集。資料從 4 個具有身份協方差矩陣和均值向量 μ = {(0,0), (4,0), (1,6), (5,7)} 的二元正態分佈中抽取。

R > data(Maronna)
R > maronna <- Maronna$maronna
R > res <- clues
R > res <- clues(maronna, quiet = TRUE) # run clues

結果如下所示

R > summary(res)

Number of data points:
[1] 200

Number of variables:
[1] 2

Number of clusters:
[1] 4

Cluster sizes:
[1] 53 47 50 50

Strength method:
[1] "sil"

avg Silhouette:
[1] 0.5736749

dissimilarity measurement:
[1] "Euclidean"

繪製結果,我們可以在圖 1 中看到 clues 演算法找到的四個簇。

參考文獻

[編輯 | 編輯原始碼]
  1. Meira Jr., W.;Zaki, M. 資料探勘演算法基礎。 [1]
  2. Cluster R 包。 [2]
  3. Wang, X.,Qiu, W.,Zamar, R. H.,CLUES:一種基於區域性收縮的非引數聚類方法 [3]
華夏公益教科書