sklearn.mixture
是一種采用高斯混合模型進(jìn)行非監(jiān)督學(xué)習(xí)的包,(支持 diagonal,spherical,tied,full 四種類型的協(xié)方差矩陣)可以對(duì)數(shù)據(jù)進(jìn)行采樣并估計(jì),同時(shí)該包也提供了幫助用戶決定合適分量個(gè)數(shù)的功能。
二分量高斯混合模型: 數(shù)據(jù)點(diǎn),以及模型的等概率線。
高斯混合模型是一種概率模型,它假設(shè)所有數(shù)據(jù)點(diǎn)都是從有限數(shù)量的高斯分布的混合參數(shù)中生成的。可以將混合模型視為對(duì) k-means聚類算法的擴(kuò)展,它包含了數(shù)據(jù)的協(xié)方差結(jié)構(gòu)以及隱高斯模型中心的信息。
對(duì)于不同的估算策略,Scikit-learn采用不同的類來(lái)預(yù)測(cè)高斯混合模型。下面將詳細(xì)介紹:
該GaussianMixture
對(duì)象實(shí)現(xiàn)了用于擬合高斯混合模型的 期望最大化(EM)算法。它還可以為多元模型繪制置信橢圓體,并計(jì)算貝葉斯信息準(zhǔn)則以評(píng)估數(shù)據(jù)中的聚類數(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ù)集)上做聚類的協(xié)方差實(shí)例,請(qǐng)查閱 GMM協(xié)方差 一個(gè)繪制密度估計(jì)的示例,請(qǐng)查閱 高斯混合模型的密度估計(jì)
GaussianMixture
采用BIC可以有效的選擇高斯混合中的分量個(gè)數(shù)。理論上講,它僅在近似狀態(tài)下(即,如果有大量數(shù)據(jù)可用并假設(shè)數(shù)據(jù)實(shí)際上是由一個(gè)混合高斯模型生成)才能恢復(fù)模型的真實(shí)分量數(shù)。請(qǐng)注意,使用變分貝葉斯高斯混合 可避免指定高斯混合模型的分量數(shù)。
示例:
從未標(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)值。
BayesianGaussianMixture
對(duì)象是高斯混合模型的變體,使用變分推理算法實(shí)現(xiàn)。該API和 GaussianMixture
所定義的API類似。
變分推理是期望最大化算法的擴(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
類的參數(shù)實(shí)現(xiàn)權(quán)重分布提出了兩種先驗(yàn)類型:具有Dirichlet distribution(狄利克雷分布)的有限混合模型和具有 Dirichlet Process(狄利克雷過(guò)程)的無(wú)限混合模型。在實(shí)踐中,Dirichlet Process推理算法是近似的,并使用具有固定最大分量數(shù)的截?cái)喾植迹ǚQ為“Stick-breaking representation”)。實(shí)際使用的分量數(shù)量幾乎總是依賴數(shù)據(jù)。
下圖比較了不同類型的加權(quán)濃度先驗(yàn)(參數(shù)weight_concentration_prior_type
)對(duì)比不同類型的加權(quán)濃度先驗(yàn)所獲得的結(jié)果weight_concentration_prior
。在這里,我們可以看到weight_concentration_prior
參數(shù)的值對(duì)獲得的有效激活的分量數(shù)有很大的影響。還可以注意到,當(dāng)先驗(yàn)類型為'dirichlet_distribution'時(shí),先驗(yàn)濃度權(quán)重較大會(huì)導(dǎo)致權(quán)重更均勻,而'dirichlet_process'類型(默認(rèn)類型)不一定如此。
下面的示例將具有固定數(shù)量分量的高斯混合模型與先驗(yàn)Dirichlet process prior(狄利克雷過(guò)程先驗(yàn))的變分高斯混合模型進(jìn)行了比較。在這里,一個(gè)經(jīng)典的高斯混合模型在由2個(gè)聚類組成的數(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
類的參數(shù) weight_concentration_prior
,這個(gè)參數(shù)決定了用來(lái)擬合數(shù)據(jù)的分量數(shù)量。我們?cè)谧詈髢蓚€(gè)圖上展示了從兩個(gè)混合結(jié)果中產(chǎn)生的隨機(jī)抽樣。
示例:
GaussianMixture
和 BayesianGaussianMixture
繪制置信橢圓體的示例, 請(qǐng)參考 高斯混合模型橢球GaussianMixture
和 BayesianGaussianMixture
來(lái)擬合正弦波。weight_concentration_prior_type
以不同的 weight_concentration_prior
參數(shù)值的 BayesianGaussianMixture 來(lái)繪制置信橢圓體的示例。 請(qǐng)參考 變分貝葉斯-高斯混合模型的濃度先驗(yàn)類型分析BayesianGaussianMixture
下的變分推理的優(yōu)缺點(diǎn)weight_concentration_prior
足夠小且 n_components
大于模型所需要的值時(shí),變分貝葉斯混合模型自然會(huì)傾向于將某些混合權(quán)重值設(shè)置為接近零。 這樣就可以讓模型自動(dòng)選擇合適數(shù)量的有效分量。過(guò)程僅需要提供分量的數(shù)量上限。但是注意,“理想” 的激活分量數(shù)量是針對(duì)特定應(yīng)用的,在設(shè)置數(shù)據(jù)挖掘參數(shù)時(shí)通常并不明確。weight_concentration_prior_type='dirichlet_process'
)的輸出并不總隨參數(shù)的變化而變化, 因此該變分推理更加穩(wěn)定且需要更少的調(diào)優(yōu)。本文描述了狄利克雷過(guò)程混合的變分推理算法。狄利克雷過(guò)程是在分區(qū)數(shù)無(wú)限、無(wú)限大的聚類上的先驗(yàn)概率分布。與有限高斯混合模型相比,變分技術(shù)使我們?cè)谕评頃r(shí)間上幾乎不受懲罰的納入了高斯混合模型的先驗(yàn)結(jié)構(gòu)。
一個(gè)重要的問(wèn)題是,Dirichlet過(guò)程如何使用無(wú)窮多的聚類數(shù),并且結(jié)果仍然保持一致。雖然本手冊(cè)沒(méi)有做出完整的解釋,但你可以參考 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ù)量)。
更多建議: