跳轉到內容

R 中的資料探勘演算法/聚類/期望最大化

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

在統計學中,最佳化問題用於最大化或最小化特定空間中的函式及其變數。由於這些最佳化問題可能具有多種不同的型別,並且每種型別都有其自身的特點,因此已經開發了許多技術來解決其中的一部分問題。

其中一項技術是最大似然法,其主要目標是使用特定資料集調整統計模型,估計其未知引數,以便該函式可以描述資料集中的所有引數。換句話說,該方法將調整統計模型的某些變數,這些變數來自資料集或已知分佈,以便該模型能夠“描述”每個資料樣本並估計其他資料樣本。這種技術在資料探勘和知識發現領域非常重要,因為它可以作為更復雜、更強大的方法的基礎。

期望最大化方法是最大似然法衍生出的一種方法,試圖在某些變數未觀察到的情況下估計似然。該方法最早由 [1] 於 1977 年記錄,儘管該技術在文獻中被非正式地提出,正如作者所建議的那樣。因此,這項工作是該技術在文獻中的首次正式化。

該函式可以透過迭代過程近似計算引數,該過程稱為期望步 (E 步) 和最大化步 (M 步),分別用於查詢未觀察到的變數和重新估計最大似然的引數。下一節將更詳細地描述該方法,並提供一個包含所有計算步驟的演算法。

簡要概述

[編輯 | 編輯原始碼]

[2] 中描述的期望最大化演算法是一種無監督聚類方法,它不需要基於密度混合的訓練步驟。它使用次優的迭代方法來查詢屬性的最大似然機率分佈引數。

該演算法的輸入是資料集 (x)、聚類總數 (M)、容差閾值 (E) 和最大迭代次數。對於每次迭代,首先執行 E 步(期望)來估計每個類的機率,然後執行 M 步(最大化)來估計每個類的機率分佈的引數陣列,用於下一次迭代。當分佈引數落在容差閾值內或達到最大迭代次數時,該方法將結束。

初始化

[編輯 | 編輯原始碼]

M 中的每個聚類 j 都包含一個引數陣列 (tetha),其中包含一個均值 (uu) 和一個協方差矩陣 (Sigmaj),用於表示高斯機率分佈的詳細資訊。該分佈用於對資料集 x 的元素進行邊界。

在第一次迭代中,該方法會為均值和協方差生成隨機初始值,以便將引數陣列 (tetha) 近似為其真實分佈。

E 步的主要目標是估計每個元素屬於每個類 的機率。

R 中的演算法

[編輯 | 編輯原始碼]

R 中的期望最大化演算法 [3] (在 [4] 中提出)將使用 mclust 包。該包包含用於執行聚類演算法的關鍵方法,包括用於 E 步和 M 步計算的函式。該包手冊解釋了所有函式,包括簡單的示例。該手冊可以在 [5] [4] 中找到。

執行演算法

[編輯 | 編輯原始碼]

函式“em”可用於期望最大化方法,因為它從 E 步開始實現了引數化高斯混合模型 (GMM) 的方法。該函式使用以下引數

  • model-name: 使用的模型名稱;
  • data: 所有收集到的資料,必須都是數值。如果資料格式用矩陣表示,則行表示樣本(觀察值),列表示變數;
  • 引數:模型引數,可以取以下值:pro、mean、variance 和 Vinv,分別對應混合成分的混合比例、每個成分的均值、引數方差和資料區域的估計超體積。
  • 其他:與模型引數不太相關的引數,在此不再贅述。更多細節請參考包手冊。

執行完畢後,函式將返回

  • 模型名稱:模型的名稱;
  • z:一個矩陣,其中第 [I,k] 位置的元素表示第 i 個樣本屬於第 k 個混合成分的條件機率;
  • 引數:與輸入相同;
  • 其他:其他指標,在此不再贅述。更多細節請參考包手冊。

一個簡單的例子

[編輯 | 編輯原始碼]

為了演示如何使用 R 執行期望最大化方法,以下演算法提供了一個簡單的測試資料集示例。此示例也可以在包手冊中找到。

> modelName = ``EEE''
> data = iris[,-5]
> z = unmap(iris[,5])
> msEst <- mstep(modelName, data, z)
> names(msEst)
> modelName = msEst$modelName
> parameters = msEst$parameters
> em(modelName, data, parameters)

第一行執行 M 步,以便生成 em 函式中使用的引數。此函式稱為 mstep,其輸入是模型名稱(例如“EEE”)、資料集(例如花卉研究資料集)以及最終的 z 矩陣,該矩陣包含每個類包含每個資料樣本的條件機率。此 z 矩陣由 unmap 函式生成。

完成 M 步後,演算法將顯示(第 2 行)此函式返回的物件的屬性。第三行將開始使用 M 步方法結果的一部分作為輸入的聚類過程。

聚類方法將返回在過程中估計的引數以及每個樣本落在每個類中的條件機率。這些引數包括均值和方差,而最後一個引數對應於使用 mclustVariance 方法。

視覺化

[編輯 | 編輯原始碼]

完成聚類演算法的執行後,可以使用結果繪製圖表。在 R 中,可以使用 coorProj 函式進行視覺化。以下演算法展示瞭如何使用它

> data = iris[,5]
> dimens = c(2,4)
> what = "errors"
> parameters = msEst$parameters
> truth = iris[,5]
> coordProj( data, dimens, what, parameters, z, truth) 


參考文獻

[編輯 | 編輯原始碼]

[6] [1] [2] [3] [7] [5] [4]

  1. a b A. P. Dempster, N. M. Laird 和 D. B. Rubin。透過 EM 演算法從不完整資料獲得最大似然。皇家統計學會會刊。B 系列(方法學),39(1):1{38, 1977。
  2. a b Georey J. Mclachlan 和 Thriyambakam Krishnan。EM 演算法及其擴充套件。Wiley-Interscience,第 1 版,1996 年 11 月。
  3. a b John M. Chambers。R 語言定義。http://cran.r-project.org/doc/manuals/R-lang.html
  4. a b c Chris Fraley 和 Adrian E. Raftery。用於正態混合估計和基於模型的聚類的貝葉斯正則化。J. Classif.,24(2):155-181, 2007。
  5. a b C. Fraley 和 A. E. Raftery。用於 R 的 MCLUST 版本 3:正態混合建模和基於模型的聚類。華盛頓大學統計系技術報告 504,2006 年 9 月。
  6. Leslie Burkholder。蒙提霍爾問題和貝葉斯定理,2000 年。
  7. C. Fraley 和 A. E. Raftery。基於模型的聚類、判別分析和密度估計。美國統計協會會刊,97:611-631, 2002。
華夏公益教科書