R 中的資料探勘演算法/聚類/CLUES
聚類分析,根據相似性(或不相似性)度量將模式組織成簇,是一種無監督技術,廣泛應用於各種學科。它在資料探勘中有很多應用,因為大型資料集需要被劃分為更小、更同質的組。聚類技術具有廣泛的用途,例如人工智慧、模式識別、經濟學、生物學和營銷。聚類技術很重要,隨著資料量和計算機處理能力的增加,其重要性也隨之增加。
R 包 clues 旨在提供對簇數量的估計,並同時透過區域性收縮獲得資料集的劃分。clues 中的收縮過程是透過均值漂移演算法完成的。它也受到 K 最近鄰方法的影響,不使用核函式。K 值從一個小數字開始,逐漸增加,直到強度度量、CH 指數或輪廓指數最佳化。CLUES 演算法的主要貢獻是它能夠識別和處理不規則元素。為了幫助驗證簇數量和聚類演算法質量的質量,提供了五個指標來支援決策。
CLUES(基於區域性收縮的 CLUstEring)演算法包含三個過程
- 收縮
- 劃分
- 確定最佳 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 演算法找到的四個簇。