scikit-learn 高斯混合模型

2023-02-20 13:44 更新

sklearn.mixture是一種采用高斯混合模型進(jìn)行非監(jiān)督學(xué)習(xí)的包,(支持 diagonal,spherical,tied,full 四種類(lèi)型的協(xié)方差矩陣)可以對(duì)數(shù)據(jù)進(jìn)行采樣并估計(jì),同時(shí)該包也提供了幫助用戶決定合適分量個(gè)數(shù)的功能。


二分量高斯混合模型: 數(shù)據(jù)點(diǎn),以及模型的等概率線。

高斯混合模型是一種概率模型,它假設(shè)所有數(shù)據(jù)點(diǎn)都是從有限數(shù)量的高斯分布的混合參數(shù)中生成的??梢詫⒒旌夏P鸵暈閷?duì) k-means聚類(lèi)算法的擴(kuò)展,它包含了數(shù)據(jù)的協(xié)方差結(jié)構(gòu)以及隱高斯模型中心的信息。

對(duì)于不同的估算策略,Scikit-learn采用不同的類(lèi)來(lái)預(yù)測(cè)高斯混合模型。下面將詳細(xì)介紹:

2.1.1. 高斯混合

GaussianMixture對(duì)象實(shí)現(xiàn)了用于擬合高斯混合模型的 期望最大化(EM)算法。它還可以為多元模型繪制置信橢圓體,并計(jì)算貝葉斯信息準(zhǔn)則以評(píng)估數(shù)據(jù)中的聚類(lèi)數(shù)量。GaussianMixture.fit可以從訓(xùn)練數(shù)據(jù)中擬合出一個(gè)高斯混合模型。在給定測(cè)試數(shù)據(jù)的情況下,使用該GaussianMixture.predict方法可以為每個(gè)樣本分配最適合它的高斯分布模型。。

GaussianMixture帶有不同的選項(xiàng)來(lái)約束不同的的協(xié)方差估計(jì):spherical,diagonal,tied 或 full 協(xié)方差。


示例:

  • 一個(gè)利用高斯混合模型在鳶尾花卉數(shù)據(jù)集(IRIS 數(shù)據(jù)集)上做聚類(lèi)的協(xié)方差實(shí)例,請(qǐng)查閱 GMM協(xié)方差
  • 一個(gè)繪制密度估計(jì)的示例,請(qǐng)查閱 高斯混合模型的密度估計(jì)

2.1.1.1. 優(yōu)缺點(diǎn)GaussianMixture

2.1.1.1.1 優(yōu)點(diǎn)

  • 速度:它是混合模型學(xué)習(xí)算法中的最快算法
  • 無(wú)偏差性:由于此算法僅最大化可能性,因此不會(huì)使均值趨于零,也不會(huì)使聚類(lèi)大小具有可能適用或不適用的特定結(jié)構(gòu)。

2.1.1.1.2 缺點(diǎn)

  • 奇異性:當(dāng)每個(gè)混合模型的點(diǎn)數(shù)不足時(shí),估計(jì)協(xié)方差矩陣將變得困難,并且除非對(duì)協(xié)方差進(jìn)行人為正則化,否則該算法會(huì)發(fā)散并尋找無(wú)窮大似然函數(shù)值的解。
  • 分量數(shù)量:該算法將始終使用它可以使用的所有分量,所以在沒(méi)有外部提示的情況下,需要留存數(shù)據(jù)或者信息理論標(biāo)準(zhǔn)來(lái)決定用多少個(gè)分量。

2.1.1.2. 選擇經(jīng)典高斯混合模型中分量的個(gè)數(shù)

采用BIC可以有效的選擇高斯混合中的分量個(gè)數(shù)。理論上講,它僅在近似狀態(tài)下(即,如果有大量數(shù)據(jù)可用并假設(shè)數(shù)據(jù)實(shí)際上是由一個(gè)混合高斯模型生成)才能恢復(fù)模型的真實(shí)分量數(shù)。請(qǐng)注意,使用變分貝葉斯高斯混合 可避免指定高斯混合模型的分量數(shù)。


示例:

  • 有關(guān)使用經(jīng)典高斯混合執(zhí)行模型選擇的示例,請(qǐng)查閱 高斯混合模型選擇

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

從未標(biāo)記的數(shù)據(jù)中學(xué)習(xí)高斯混合模型的主要困難在于,通常不知道哪個(gè)點(diǎn)來(lái)自哪個(gè)隱分量(如果可以得到這些信息,則很容易通過(guò)相應(yīng)的數(shù)據(jù)點(diǎn),擬合每個(gè)獨(dú)立的高斯分布)。Expectation-maximization 是一種基于迭代來(lái)解決此問(wèn)題的可靠統(tǒng)計(jì)算法。首先假設(shè)一個(gè)隨機(jī)分量(隨機(jī)地選取一個(gè)數(shù)據(jù)點(diǎn)為中心點(diǎn),該點(diǎn)可以由k-means算法獲得,也可以原點(diǎn)附近的正態(tài)分布點(diǎn)),并為每個(gè)點(diǎn)計(jì)算由模型的每個(gè)分量生成的概率。然后,調(diào)整模型參數(shù)以最大化模型生成這些參數(shù)的可能性。重復(fù)此過(guò)程可確保始終收斂到一個(gè)局部最優(yōu)值。

2.1.2. 變分貝葉斯高斯混合

BayesianGaussianMixture對(duì)象是高斯混合模型的變體,使用變分推理算法實(shí)現(xiàn)。該API和 GaussianMixture 所定義的API類(lèi)似。

2.1.2.1. 估計(jì)算法:變分推斷

變分推理是期望最大化算法的擴(kuò)展,它最大化了模型證據(jù)(包括先驗(yàn))的下界,而不是數(shù)據(jù)的似然概率。變分方法背后的原理與期望最大化相同(兩者都是迭代算法,在找到每種模型混合生成的每個(gè)點(diǎn)的概率與將模型擬合到這些分配的點(diǎn)之間交替進(jìn)行),但變分方法通過(guò)整合來(lái)自先驗(yàn)分布的信息添加正則化。這避免了通常在期望最大化算法中發(fā)現(xiàn)的奇異性,但也為模型引入了一些細(xì)微的偏差。推理過(guò)程通常明顯變慢,但一般也不會(huì)慢到無(wú)法使用。

由于其貝葉斯性質(zhì),變分算法需要比期望最大化更多的超參數(shù),其中最重要的是濃度參數(shù)weight_concentration_prior。為先驗(yàn)濃度指定一個(gè)較低的值將使模型將大部分權(quán)重分配給少數(shù)分量,這樣其余組分的權(quán)重就接近于零。先驗(yàn)的高濃度值將允許混合中有更多的分量在混合模型中都有相當(dāng)比例的權(quán)重。

BayesianGaussianMixture類(lèi)的參數(shù)實(shí)現(xiàn)權(quán)重分布提出了兩種先驗(yàn)類(lèi)型:具有Dirichlet distribution(狄利克雷分布)的有限混合模型和具有 Dirichlet Process(狄利克雷過(guò)程)的無(wú)限混合模型。在實(shí)踐中,Dirichlet Process推理算法是近似的,并使用具有固定最大分量數(shù)的截?cái)喾植迹ǚQ為“Stick-breaking representation”)。實(shí)際使用的分量數(shù)量幾乎總是依賴數(shù)據(jù)。

下圖比較了不同類(lèi)型的加權(quán)濃度先驗(yàn)(參數(shù)weight_concentration_prior_type)對(duì)比不同類(lèi)型的加權(quán)濃度先驗(yàn)所獲得的結(jié)果weight_concentration_prior。在這里,我們可以看到weight_concentration_prior參數(shù)的值對(duì)獲得的有效激活的分量數(shù)有很大的影響。還可以注意到,當(dāng)先驗(yàn)類(lèi)型為'dirichlet_distribution'時(shí),先驗(yàn)濃度權(quán)重較大會(huì)導(dǎo)致權(quán)重更均勻,而'dirichlet_process'類(lèi)型(默認(rèn)類(lèi)型)不一定如此。



下面的示例將具有固定數(shù)量分量的高斯混合模型與先驗(yàn)Dirichlet process prior(狄利克雷過(guò)程先驗(yàn))的變分高斯混合模型進(jìn)行了比較。在這里,一個(gè)經(jīng)典的高斯混合模型在由2個(gè)聚類(lèi)組成的數(shù)據(jù)集,具有5個(gè)分量。我們可以看到具有Dirichlet過(guò)程先驗(yàn)的變分高斯混合模型能夠?qū)⒆陨硐拗茷閮H2個(gè)分量,而高斯混合將數(shù)據(jù)與具有固定數(shù)量的分量擬合時(shí)用戶必須事先設(shè)置固定數(shù)量的分量。在該示例中,用戶選擇 n_components=5,與真正的試用數(shù)據(jù)集(toy dataset)的生成分量數(shù)量不符。很容易注意到, 狄利克雷過(guò)程先驗(yàn)的變分高斯混合模型可以采取保守的策略,僅擬合生成一個(gè)分量。


在下圖中,我們將擬合一個(gè)并不能被高斯混合模型很好描述的數(shù)據(jù)集。 調(diào)整 BayesianGaussianMixture 類(lèi)的參數(shù) weight_concentration_prior ,這個(gè)參數(shù)決定了用來(lái)擬合數(shù)據(jù)的分量數(shù)量。我們?cè)谧詈髢蓚€(gè)圖上展示了從兩個(gè)混合結(jié)果中產(chǎn)生的隨機(jī)抽樣。


示例:

2.1.2.2. BayesianGaussianMixture 下的變分推理的優(yōu)缺點(diǎn)

2.1.2.2.1. 優(yōu)點(diǎn)

  • 自動(dòng)選擇: 當(dāng) weight_concentration_prior 足夠小且 n_components 大于模型所需要的值時(shí),變分貝葉斯混合模型自然會(huì)傾向于將某些混合權(quán)重值設(shè)置為接近零。 這樣就可以讓模型自動(dòng)選擇合適數(shù)量的有效分量。過(guò)程僅需要提供分量的數(shù)量上限。但是注意,“理想” 的激活分量數(shù)量是針對(duì)特定應(yīng)用的,在設(shè)置數(shù)據(jù)挖掘參數(shù)時(shí)通常并不明確。
  • 對(duì)參數(shù)數(shù)量的敏感度較低: 與有限模型不同,有限模型幾乎總是盡可能多地使用分量,因此對(duì)于不同數(shù)量的分量將產(chǎn)生完全不同的解決方案, 而Dirichlet過(guò)程的先驗(yàn)的變分推理(weight_concentration_prior_type='dirichlet_process')的輸出并不總隨參數(shù)的變化而變化, 因此該變分推理更加穩(wěn)定且需要更少的調(diào)優(yōu)。
  • 正則化: 由于結(jié)合了先驗(yàn)信息,因此變分的解比期望最大化(EM)的解有更少的病理特征。

2.1.2.2.2. 缺點(diǎn)

  • 速度: 變分推理所需要的額外參數(shù)化使推理變慢,盡管幅度不大。
  • 超參數(shù): 該算法需要一個(gè)額外的超參數(shù),可能需要通過(guò)交叉驗(yàn)證進(jìn)行實(shí)驗(yàn)調(diào)優(yōu)的超參數(shù)。
  • 偏差: 在推理算法中(以及在使用Dirichlet過(guò)程中)存在許多隱含的偏差, 并且只要這些偏差與數(shù)據(jù)之間不匹配,就有可能使用有限模型來(lái)擬合出更好的模型。

2.1.2.3. The Dirichlet Process(狄利克雷過(guò)程)

本文描述了狄利克雷過(guò)程混合的變分推理算法。狄利克雷過(guò)程是在分區(qū)數(shù)無(wú)限、無(wú)限大的聚類(lèi)上的先驗(yàn)概率分布。與有限高斯混合模型相比,變分技術(shù)使我們?cè)谕评頃r(shí)間上幾乎不受懲罰的納入了高斯混合模型的先驗(yàn)結(jié)構(gòu)。

一個(gè)重要的問(wèn)題是,Dirichlet過(guò)程如何使用無(wú)窮多的聚類(lèi)數(shù),并且結(jié)果仍然保持一致。雖然本手冊(cè)沒(méi)有做出完整的解釋?zhuān)憧梢詤⒖? stick breaking process來(lái)幫助理解它。是狄利克雷過(guò)程的衍生。我們從一個(gè)單位長(zhǎng)度的 stick 開(kāi)始,在每一步都折斷剩下的 stick 的一部分。每一次,我們把 stick 的長(zhǎng)度聯(lián)想成所有點(diǎn)里落入一組混合的點(diǎn)的比例。 最后,為了表示無(wú)限混合,我們把 stick 的最后剩余部分聯(lián)想成沒(méi)有落入其他組的點(diǎn)的比例。每段的長(zhǎng)度是一個(gè)隨機(jī)變量, 其概率與濃度參數(shù)成正比。較小的濃度值將把單位長(zhǎng)度分成更大的 stick 段(定義更集中的分布)。濃度值越大, stick 段越?。丛黾臃橇銠?quán)重的分量數(shù)量)。

在對(duì)該無(wú)限混合模型進(jìn)行有限近似的情形下狄利克雷過(guò)程的變分推理技術(shù)仍然可以使用。我們不必事先指定想要的分量數(shù)量,只需要指定濃度參數(shù)和混合分量數(shù)的上界(假定上界高于“真實(shí)”的分量數(shù),這僅僅影響算法復(fù)雜度,而不是實(shí)際使用的分量數(shù)量)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)