天天看點

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

中文文檔: http://sklearn.apachecn.org/cn/stable/modules/mixture.html

英文文檔: http://sklearn.apachecn.org/en/stable/modules/mixture.html

官方文檔: http://scikit-learn.org/stable/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者

關于我們: http://www.apachecn.org/organization/209.html

2.1. 高斯混合模型

sklearn.mixture

 是一個應用高斯混合模型進行非監督學習的包,支援 diagonal,spherical,tied,full四種協方差矩陣 (注:diagonal指每個分量分布有各自不同對角協方差矩陣,spherical指每個分量分布有各自不同的簡單協方差矩陣, tied指所有分量分布有相同的标準協方差矩陣,full指每個分量分布有各自不同的标準協方差矩陣) ,它對資料進行抽樣,并且根據資料估計模型。同時包也提供了相關支援,來幫助使用者決定合适的分量分布個數。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型
2-分量 高斯混合模型: 資料點,以及模型的等機率線。

高斯混合模型是一個假設所有的資料點都是生成于一個混合的有限數量的并且未知參數的高斯分布的機率模型。 我們可以将混合模型看作是k-means聚類算法的推廣,它利用了關于資料的協方差結構以及潛在高斯中心的資訊。

對應不同的估算政策,Scikit-learn 實作了不同的類來估算高斯混合模型。 較長的描述如下:

2.1.1. 高斯混合

GaussianMixture

 對象實作了用來拟合高斯混合模型的  期望最大化 (EM)

算法。它還可以為多變量模型畫置信橢圓,以及計算BIC(Bayesian Information Criterion,貝葉斯資訊準則) 來評估資料中聚類的數量。

GaussianMixture.fit

 方法提供了從訓練集應用高斯混合模型進行機器學習的方法。

給定測試集,使用 

GaussianMixture.predict

 方法,可以預測每個樣本最有可能對應的高斯分布分量。

GaussianMixture

 自帶了選項來限制不同的估計協方差類型:spherical(每個分量分布有各自不同的簡單協方差矩陣), diagonal(每個分量分布有各自不同對角協方差矩陣),tied(所有分量分布有相同的标準協方差矩陣),或 full(每個分量分布有各自不同的标準協方差矩陣)。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

示例:

  • 一個在虹膜資料集上用高斯混合模型聚類,請查閱 GMM covariances
  • 一個繪制密度估計的例子,請查閱 Density Estimation for a Gaussian mixture

2.1.1.1. 優缺點 

GaussianMixture

2.1.1.1.1. 優點

速度: 是混合模型學習算法中最快的算法。
無偏差性: 這個算法僅僅隻是最大化可能性,并不會使均值偏向于0,或是使聚類大小偏向于 可能适用或者可能不适用的特殊結構。

2.1.1.1.2. 缺點

奇異性: 當每個混合模型沒有足夠的點時,估算協方差變得困難起來,同時算法會發散并且找具有無窮大似然函數值的解, 除非人為地對協方差進行正則化。
分量分布的數量: 這個算法将會總是用所有它能用的分量(component,每一個高斯分布稱為一個分量), 是以在沒有外部線索的情況下需要留出資料(held-out data,将資料集分為兩個互斥的集合,分别是訓練集和測試集), 或者資訊理論标準來決定用多少分量。

2.1.1.2. 選擇經典高斯混合模型中的分量數

BIC(Bayesian Information Criterion,貝葉斯資訊準則)可以用來高效地選擇高斯混合的分量數。 理論上,它僅當在近似狀态下可以恢複正确的分量數(即如果有大量資料可用,并且假設這些資料實際上是一個混合高斯模型獨立同分布 生成的)。注意:使用 變分貝葉斯高斯混合 可以避免高斯混合模型中分量數目的選擇。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

示例:

  • 一個用典型的高斯混合進行的模型選擇的例子,請查閱 Gaussian Mixture Model Selection

2.1.1.3. 估計算法期望最大化(EM)

在從無标簽的資料中應用高斯混合模型主要的困難在于,通常不知道哪個點來自哪個潛在分量 (如果可以擷取到這些資訊,就可以很容易通過相應的資料點,拟合每個獨立的高斯分布)。 期望最大化(Expectation-maximization,EM) 是一個理論完善的統計算法,其通過疊代方式來解決這個問題。首先,假設一個随機分量 (随機地選擇一個中心點,可以用k-means算法得到,或者甚至就直接地随便在原點周圍選取), 并且為每個點計算由模型的每個分量生成的機率。然後,調整模型參數以最大化模型生成這些參數的可能性。 重複這個過程,該算法保證過程中的參數總會收斂到局部最優解。

2.1.2. 變分貝葉斯高斯混合

:class: `BayesianGaussianMixture`對象實作了具有變分的高斯混合模型的變體推理算法。 這個API和 :class: `GaussianMixture`相似。

2.1.2.1. 估計算法: variational inference

變分推理是期望最大化(EM)的擴充,它最大化模型證據(包括先驗)的下界,而不是資料似然函數。 變分方法的原理與期望最大化相同(二者都是疊代算法,在尋找由混合産生的每個點的機率和 根據所配置設定的點拟合之間兩步交替),但是變分方法通過整合先驗分布資訊來增加正則化限制。 這避免了期望最大化解決方案中常出現的奇異性,但是也對模型帶來了微小的偏差。 變分方法計算過程通常明顯較慢,但通常不會慢到無法使用。

由于它的貝葉斯性質,變分算法比預期最大化(EM)需要更多的超參數(即先驗分布中的參數),其中最重要的就是 濃度參數 

weight_concentration_prior

 。指定一個低濃度先驗(concentration prior), 将會使模型将大部分的權重放在少數分量上,其餘分量的權重則趨近0。而高濃度先驗(concentration prior)将使 混合模型中的大部分分量都有一定的權重。

:class: `BayesianGaussianMixture`類的參數實作提出了兩種權重分布先驗: 一種是狄利克雷分布(Dirichlet distribution)有限混合模型, 另一種是狄利克雷過程(Dirichlet Process)無限混合模型。 在實際應用上,狄利克雷過程推理算法(Dirichlet Process inference algorithm) 是近似的,并且使用截尾分布(truncated distribution)與固定最大分量數(稱之為Stick-breaking representation)。 使用的分量數實際上幾乎總是取決于資料。

下圖比較了不同類型的權重濃度先驗(weight concentration prior,參數 

weight_concentration_prior_type

 ) 不同的 

weight_concentration_prior

 值獲得的結果。 在這裡,我們可以發現``weight_concentration_prior``參數的值對獲得的有效的激活分量數(即權重較大的分量分布的數量)有很大影響。 我們也能注意到當先驗是’dirichlet_distribution’類型時,大的濃度權重先驗(concentration weight prior) 會導緻更均勻的權重,然而’dirichlet_process’類型(預設類型)卻不是這樣。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型
【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

下面的例子将具有固定數量分量的高斯混合模型與 狄利克雷過程先驗(Dirichlet process prior)的變分高斯混合模型進行比較。 這裡,典型高斯混合模型被指定有5個分量,但資料集是由2個分量分布生成。 我們可以看到,具有狄利克雷過程的變分高斯混合可以将自身限制在2個分量, 而高斯混合必須按照使用者先驗設定的固定數量的分量來拟合資料。 在例子中,使用者選擇了 

n_components=5

 ,這與真正的toy dataset(有noise的資料)的生成分量不符。 稍微觀察就能注意到,狄利克雷過程先驗(Dirichlet process prior)的變分高斯混合模型可以采取保守的 立場,僅僅拟合一個分量。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

在下圖中,我們将拟合一個并不能被高斯混合模型很好描述的資料集。 調整`BayesianGaussianMixture`類的參數``weight_concentration_prior``, 這個參數決定了用來拟合資料的分量數。我們在最後兩個圖上展示了從兩個混合(resulting mixtures) 産生的随機抽樣。

【Scikit-Learn 中文文檔】高斯混合模型 - 無監督學習 - 使用者指南 | ApacheCN 2.1. 高斯混合模型

示例:

  • 一個用 

    GaussianMixture

     和 

    BayesianGaussianMixture

     繪制置信橢圓體的例子, 請查閱 Gaussian Mixture Model Ellipsoids
  • Gaussian Mixture Model Sine Curve 這個例子展示了用 

    GaussianMixture

     和 

    BayesianGaussianMixture

     來拟合正弦波。
  • 一個使用不同的 

    weight_concentration_prior_type

     用以不同的 

    weight_concentration_prior

     參數值的:class:BayesianGaussianMixture 來繪制置信橢圓體的例子。 請查閱:ref:sphx_glr_auto_examples_mixture_plot_concentration_prior.py

BayesianGaussianMixture

 下的變分推理的優缺點

2.1.2.1.1. 優點

自動選擇: 當 

weight_concentration_prior

 足夠小以及 

n_components

 比模型需要的更大時,變分貝葉斯混合模型計算的結果可以讓一些混合權重值趨近0。 這讓模型可以自動選擇合适的有效分量數。這僅僅需要提供分量的數量上限。但是請注意,“理想”的激活分量數 隻在應用場景中比較明确,在資料挖掘參數設定中通常并不明确。
對參數數量的敏感度較低: 與總是用盡可以用的分量,因而将為不同數量的元件産生不同的解決方案有限模型不同, 變分推理狄利克雷過程先驗(Dirichlet process prior)變分推理(

weight_concentration_prior_type='dirichlet_process'

) 改變參數後結果并不會改變太多,使之更穩定和更少的調諧(tuning)。
正則化: 由于結合了先驗資訊,變分解的病理特征(pathological special cases) 少于期望最大化(EM)的解。

2.1.2.1.2. 缺點

速度: 變分推理所需要的額外參數化使推理速度變慢,盡管并沒有慢很多。
超參數: 這個算法需要一個額外的可能需要通過交叉驗證進行實驗調整的超參數。
偏差: 在推理算法存在許多隐含的偏差(如果用到狄利克雷過程也會有偏差), 每當這些偏差和資料之間不比對時,用有限模型可能可以拟合更好的模型。

2.1.2.2. 狄利克雷過程(The Dirichlet Process)

這裡我們描述了狄利克雷過程混合的變分推理算法。狄利克雷過程是在*具有 無限大,無限制的分區數的聚類*上的先驗機率分布。 相比于有限高斯混合模型,變分技術讓我們在推理時間幾乎沒有懲罰(penalty)的情況下 納入了高斯混合模型的先驗結構。

一個重要的問題是Dirichlet過程是如何實作用無限的,無限制的簇數,并且結果仍然是一緻的。 本文檔不做出完整的解釋,但是你可以看這裡`stick breaking process <https://en.wikipedia.org/wiki/Dirichlet_process#The_stick-breaking_process>`_ 來幫助你了解它。stick breaking(折棍)過程是Dirichlet過程的衍生。我們每次從一個機關長度的 stick開始,且每一步都折斷剩下的一部分。每次,我們把每個stick的長度關聯到落入一組混合的點的比例。 最後,為了表示無限混合,我們關聯最後每個stick的剩下的部分到沒有落入其他組的點的比例。 每段的長度是随機變量,機率與濃度參數(concentration parameter)成比例。較小的濃度值 将機關長度分成較大的stick段(即定義更集中的分布)。較高的濃度值将生成更小的stick段 (即增加非零權重的分量數)。

Dirichlet過程的變分推理技術,在對該無限混合模型進行有限近似情形下,仍然可以運用。 使用者不必事先指定想要的分量數,隻需要指定濃度參數和混合分量數的上界 (假定上界高于“真實”的分量數,僅僅影響算法複雜度,而不是實際上使用的分量數)。

中文文檔: http://sklearn.apachecn.org/cn/stable/modules/mixture.html

英文文檔: http://sklearn.apachecn.org/en/stable/modules/mixture.html

官方文檔: http://scikit-learn.org/stable/

GitHub: https://github.com/apachecn/scikit-learn-doc-zh(覺得不錯麻煩給個 Star,我們一直在努力)

貢獻者: https://github.com/apachecn/scikit-learn-doc-zh#貢獻者

關于我們: http://www.apachecn.org/organization/209.html

有興趣的們也可以和我們一起來維護,持續更新中 。。。

機器學習交流群: 629470233

繼續閱讀