若是咱們定義觀測變量和潛在變量的一個聯合機率分佈,那麼對應的觀測變量自己的機率分佈能夠經過求邊緣機率的方法獲得。這使得觀測變量上的複雜的邊緣機率分佈能夠經過觀測與潛在變量組成的擴展空間上的更加便於計算的聯合機率分佈來表示。
所以,潛在變量的引入使得複雜的機率分佈能夠由簡單的份量組成。 html
除了提供一個構建更復雜的機率分佈的框架以外,混合模型也能夠用於數據聚類,或者說聚類是混合模型一種特定形式。
咱們從這小結開始,嘗試從「數據聚類問題」切入對混合模型的討論,咱們來討論數據點集合中的聚類的問題。算法
咱們首先使用一個非機率的方法解決這個問題,即K均值算法。
在咱們後面談到混合機率分佈的潛在變量的時候,其中離散潛在變量能夠被看做將數據點分配到了混合機率分佈具體成分當中。K均值算法對應於用於高斯混合模型的EM算法的一個特定的非機率極限apache
咱們考慮尋找多維空間中數據點的分組或聚類的問題。假設咱們有一個數據集,它由 D 維歐幾里德空間中的隨機變量 x 的 N 次觀測(N次獨立分佈採樣)組成。咱們的目標是將數據集劃分爲 K 個類別。現階段咱們假定 K 的值是給定的。
網絡
直觀上講,咱們會認爲由一組數據點構成的一個聚類中,聚類內部點之間的距離應該小於數據點與聚類外部的點之間的距離。框架
爲了形式化地說明這個概念,引入一組 D 維向量,其中 k = 1,2,....,K,且是與第 k 個聚類關聯的一個表明,咱們能夠認爲表示了聚類的中心。咱們的目標是找到數據點分別屬於的哪個類,使得每一個數據點和與它最近的向量之間的偏差評估函數(例如平方和)最小。函數
咱們定義一些記號來描述數據點的聚類狀況,對於每一個數據點,咱們引入一組對應的二值指示變量,其中k = 1,2,....,K 表示數據點屬於 K 個聚類中的哪個,從而若是數據點被分配到類別 k,那麼=1,且對於 j != k,有=0。這其實就是一種」「one-hot」編碼方法。優化
以後咱們能夠定義一個目標函數,也即損失函數(loss function):編碼
它表示每一個數據點與它被分配的向量之間的距離的平方和。咱們的目標是找到和的值,使得 J 達到最小值。
spa
咱們能夠用一種迭代的方法完成K均值的目標函數,其中每次迭代涉及到兩個連續的步驟,分別對應於和的最優化。.net
1)首先,咱們爲選擇一些初始值。即隨機選擇一些初始的質心。
2)而後,在第一階段,咱們關於最小化 J,保持固定。對求偏導咱們就會發現,最優化公式能夠轉化爲。很顯然,即在現有質心的前提下,將數據點歸類爲距離最近的聚類點,即便 J 最小。
3)在第二階段,咱們關於最小化 J,保持固定。目標函數 J 是的一個二次函數,直接求導求極值便可,,能夠很容易地解出,即。這個表達式有一個簡單質樸的含義,即在現有聚類機率分佈的前提下,從新計算各種中新的質心(取均值),這樣即便得 J 最小。
4)不斷重複這個二階段優化直到收斂(直到聚類的分配不改變,或直到迭代次數超過了某個最大值)。
咱們看到,更新和更新的兩個階段分別對應於 EM 算法中的 E(指望)步驟和 M(最大化)步驟。
因爲每一個階段都減少了目標函數 J 的值,所以算法的收斂性獲得了保證。
K均值算法的基礎是將平方歐幾里德距離做爲數據點與表明向量之間不類似度的度量,這不只限制了可以處理的數據變量的類型(例如離散標籤狀況),並且使得聚類中心的肯定對於異常點不具備魯棒性。
咱們能夠這樣推廣K均值算法:引入連個向量 x 和 x′ 之間的一個更加通常的不類似度的度量,而後最小化以下的失真度量(損失函數):
與普通的K均值同樣
1)對於給定的聚類表明,E步驟涉及到爲每一個數據點分配聚類,使得與對應的聚類集中數據點間的不類似程序最小。這一步的計算代價爲,與標準的K均值算法的情形相同。
2)對於不類似程度度量的通常選擇,M步驟一般比K均值的情形更加複雜,所以一般會將聚類原型限制爲等於某個分配到那個聚類的數據向量,由於這使得算法能夠適用於任何不類似程度的度量,
只要它可以被計算。所以,對於每一個聚類 k,M步驟涉及到在分配到那個聚類的個點上的離散搜索,這須要次對於的計算。
K均值算法的一個值得注意的特徵是,在每次迭代中,每一個數據點都被分配到一個惟一的聚類中,這友類相似經典決策樹每層葉子的硬劃分。雖然某些數據點與其聚類中心的距離遠小於其餘中心的聚類,可是也存在其餘的數據點,位於兩個聚類中心的大概中間的位置。在後一種情形中,強行將數據點分配到最近的聚類不是最合適的。
相似於XGboost對決策樹的改進(採用權值的方式代替決策樹的硬分類),經過對K均值採用機率的方法,咱們能夠獲得對數據點聚類的「軟分配」,它反映了在最合適聚類分配上的不肯定性,這個機率形式帶來了一些數值計算上的優點。
咱們知道,高斯混合模型能夠當作高斯份量的簡單線性疊加,目標是提供一類比單獨的高斯分佈更強大的機率模型(多峯分佈機率分佈)。更進一步探求本質,咱們可使用離散潛在變量來描述高斯混合模型,這會讓咱們更加深入地認識混合高斯模型,也會讓咱們瞭解指望最大化算法。
讓咱們引入一個 K 爲二值隨機變量 z,這個變量採用了「1-of-K」表示方法,其中一個特定的元素等於1,其他全部的元素都等於0。
咱們看到的值知足機率分佈的要求,即,咱們根據邊緣機率分佈和條件機率分佈定義聯合機率分佈。
z 的邊緣機率分佈根據混合係數進行賦值,即:,其中以及
所以,給定 z 的一個特定的值(即選定一個特定的基模型),x 的條件機率分佈是一個高斯分佈:
聯合機率分佈爲,從而 x 的邊緣機率分佈能夠經過將聯合機率分佈對全部可能的 z 求和的方式獲得,即:
對於每一個觀測數據點,存在一個對應的潛在變量
這很是關鍵,由於這意味着潛在變量不在是一個未知的變量,咱們能夠將其轉化爲對 x 的計算優化過程當中(例如求導)。
獲得這個聯合機率分佈的好處體如今幾個方面:
這麼作的意義在於,咱們如今可以對聯合機率分佈操做。而不是對邊緣機率分佈操做,這會產生極大的計算上的簡化,後面咱們將要討論的指望最大化(EM)算法,將會看到這點。
咱們能夠用表示,它的值可使用貝葉斯定理求出:
咱們將當作=1的先驗機率
將當作觀測到 x 以後,對應的後驗機率,也能夠理解爲份量 k 對於「解釋」觀測值 x 的「責任」(responsibility)
假設咱們有一個觀測的數據集,咱們但願使用混合高斯模型來對數據進行建模。咱們能夠將這個數據集表示爲一個的矩陣,其中第 n 行爲。相似地,對應的隱含變量會被表示一個的矩陣,其中第 n 行表示爲。
若是咱們假定數據點獨立地從機率分佈中抽取,那麼咱們可使用下圖所示的圖模型來表示這個獨立同分布數據集的高斯混合模型。
它對應的對數似然函數爲:
最大化高斯混合模型的對數似然函數,比單一的高斯分佈的情形更加複雜。困難的來源在於公式中,對 k 的求和出如今對數計算內部,從而對數函數再也不直接做用於高斯分佈。若是咱們令對數似然函數的導數等於零,那麼咱們不會獲得一個解析解,這給求導計算帶來很大的困難。
一種方法是使用基於梯度的優化方法。雖然梯度的方法是可行的,而且梯度方法在混合密度網絡的計算中起到了重要做用。可是咱們這裏討論另外一種主流的算法,被稱爲EM算法。它具備普遍的適用性,同時也是變分推斷的基礎。
一種優雅而且強大的,用於尋找帶有潛在變量的模型的最大似然解方法,被稱爲指望最大化算法(expectation-maximization algorithm),或者EM算法 。實際上,EM算法是能夠推廣到更通常化的變分推斷框架中的,可是咱們在這小結不着急,咱們從高斯混合模型做爲切入點,給出EM算法的一種非形式化的描述。
首先,讓咱們寫下似然函數的最大值必須知足的條件,令公式中關於高斯份量的均值的均值等於零,咱們有:
值得注意的是,後驗機率(或者說是「責任」)很天然地出如今了等式右側分母中。兩側同乘(假設矩陣是非奇異的),整理,可得:
,其中
咱們能夠將看做分配到聚類 k 的數據點的有效數量。仔細觀察這個公式會發現,第 k 個高斯份量的均值經過對數據集裏全部的數據點求加權平均的方式獲得,而這裏所謂的權因子又是由後驗機率給出,而表示份量 k 對生成的責任(也能夠理解爲數據集分佈的機率分佈)。
若是咱們對關於的導數爲零,而後用一個相似的推理過程,使用單一高斯分別協方差矩陣的最大似然結果,咱們有:
這與一元高斯分佈的對應的結果具備相同的函數形式,可是所不一樣的是,每一個數據點都有一個本身的權值(不像K均值那樣是硬劃分),權值等於對應的後驗機率,分母爲與對應份量相關聯的數據點的有效數量(分類集中的樣本數量)。
最後,咱們關於混合係數最大化,把限制條件考慮進去,即混合係數的累加和等於1。使用拉格朗日乘數法,最大化下面的量:
求導可得:
在右側分母中,咱們再次看到了「責任」這一項。將兩側乘以,對 k 求和,會發現。使用這個結果消去,整理可得:。
一個很是質樸的表徵含義:第 k 個份量的混合係數爲那個份量對於解釋數據點的「責任」的平均值。
值得注意的是,上式並無給出混合模型參數的一個解析解,由於「責任」在公式中是以一種複雜的方式依賴這些參數。
然而,這些結果給出了一個簡單的迭代方法來尋找問題的最大似然解。整個迭代過程是EM算法應用於高斯混合模型的一個實例。
1)咱們首先爲均值、協方差、混合係數選擇一個初始值,計算對數似然函數的初始值。
2)而後,咱們交替進行兩個更新,被稱爲
2.1)E步驟(使用當前參數值計算責任):在E步驟中,咱們使用參數的當前計算公式給出的後驗機率(也被稱爲責任)
2.2)M步驟(使用當前的責任從新估計參數):而後在M步驟中,咱們將E步驟計算出的機率用於最大化步驟,從新對模型參數(均值、協方差、混合係數)進行估值。,,
。而後使用新的模型參數進入下一輪E步驟
3)計算對數似然函數::檢查參數或者對數似然函數的收斂性,若是沒有知足收斂的準則,則返回第2)步。
每次經過E步驟和接下來的M步驟對參數的更新確保了對數似然函數的增大,在實際應用中,當對數似然函數的變化量或者參數的變化量地域某個閾值時,咱們就認爲算法收斂。
上圖給出了將兩個⾼斯分佈組成的混合機率分佈的EM算法應⽤於⽼忠實間歇噴泉數據集的情形。這⾥,咱們使⽤了兩個⾼斯分佈的混合(K=2)。
分佈中⼼的初始值與圖中的K均值算法使⽤了相同的初始值,精度矩陣被初始化爲正⽐於單位矩陣。
圖(a)⽤綠⾊標記出了數據點,以及初始的混合模型的配置,其中兩個⾼斯份量的⼀個標準差位置的輪廓線分別⽤紅⾊圓圈和藍⾊圓圈標記。
圖(b)給出了初始E步驟的結果,其中每一個數據點的顏⾊中,藍⾊所佔的⽐重等於由藍⾊份量⽣成對應數據點的後驗機率,紅⾊所佔的⽐重等於由紅⾊份量⽣成對應數據點的後驗機率。所以,對於屬於兩個聚類的後驗機率都較⼤的數據點來講,顏⾊看起來是紫⾊的。
圖(c)給出了第⼀個M步驟以後的結果,其中藍⾊⾼斯分佈的均值被移⾄數據點的均值,同時根據屬於藍⾊類別的每一個數據點的機率進⾏加權。換句話說,它被移到了藍⾊標記數據點的質⼼。相似地,藍⾊⾼斯分佈的協⽅差被設置爲藍⾊標記數據點的協⽅差。紅⾊份量的情形與此相似。圖(d),(e)和(f)分別給出了2次、5次、20次完整的EM循環以後的結果。在圖(f)中,算法接近收斂。
注意:
1. 與K均值算法相比,EM算法在達到(近似)收斂以前,經歷了更屢次的迭代,每一個迭代須要更多的計算量。所以,一般運行K均值算法找到高斯混合模型的一個合適的初始化值,輸入EM,接下來使用EM算法進行微調節。 2. 協方差矩陣能夠初始化爲經過K均值算法找到的聚類的樣本協方差。 3. 混合係數能夠被設置爲分配到對應類別中的數據點所佔的比例。
咱們繼續討論EM算法的另⼀種觀點,其中潛在變量起着重要的做。咱們⾸先使⽤⼀種抽象的⽅式討論這種⽅法,而後咱們再次考慮⾼斯混合模型的例⼦,來具體說明這個模型。
EM算法的目標是找到具備潛在變量的模型的最大似然解。
咱們將全部觀測數據的集合記做,其中第 n 行表示,全部潛在變量的集合記做,對應的行爲。全部模型參數的集合被記做。
所以對數似然函數爲:,該式一樣適用於連續潛在變量的情形,只須要對的求和替換爲積分便可。
一個關鍵的現象是,對於潛在變量的求和位於對數的內部。即便聯合機率分佈屬於指數族分佈,可是因爲這個求和式的存在,求和獲得的結果邊緣機率分佈一般也不是指數族分佈。求和式的出現阻止了對數運算直接做用於聯合機率分佈,使得最大似然接的形式更加複雜。
如今假設對於中的每一個觀測,咱們都有潛在變量的對應值。咱們將稱爲完整(completely)數據集,而且咱們稱實際的觀測數據集是不完整的(incomplete)。
完整數據集的對數似然函數的形式爲,而且咱們假定對這個完整數據的對數似然函數進行最大化是很容易的。然而遺憾的是,在實際應用中,咱們沒有完整數據集(事實上若是有完整數據集就不要建模預測了),只有不完整的數據。咱們關於潛在變量的取值的知識僅僅來源於後驗機率分佈。
1)因爲咱們不能使用完整數據的對數似然函數,所以咱們反過來考慮使用當前的參數值,在潛在變量的後驗機率分佈下,使用這個後驗機率分佈計算完整數據對數似然函數對於通常的參數值的指望。這個指望被記做,這對應於EM算法中的E步驟:
2)在接下來的M步驟中,咱們最大化該式:來肯定修正後的參數估計。若是當前對於參數的估計爲,那麼一次連續的E步驟和M步驟會產生一個修正的估計。
注意,在的定義中,對數操做直接做用於聯合機率分佈,所以根據假設,對應的M步驟的最大化是能夠計算的。
每一個EM循環都會增大不完整數據的對數似然函數(除非已經達到局部極大值),EM的迭代過程是由數據集自己的機率分佈驅動的,若是數據集自己存在局部最優區域,EM算法就有可能在EM過程當中落入該區域。
咱們繼續考慮將EM算法的潛在變量的觀點應用於高斯混合模型例子。咱們知道,在高斯混合模型的求解中,咱們的目標是最大化對數似然函數:
(1)
它是使用觀測數據集進行計算的,咱們看到這個計算比單一高斯分佈的情形更加困難,由於對 k 的求和出如今對數運算內部。
如今考慮對完整數據進行最大化。根據公式和公式,似然函數的形式爲:,其中表示的第 k 個份量。取對數,咱們有:(2)
(2)公式和(1)公式對比,咱們看到在 k 上的求和與對數運算的順序交換了。對數運算如今直接做用於高斯分佈上,而高斯分佈自己是指數族分佈的一個成員,這個方法產生了最大似然問題的一個簡單得多的解。
所以咱們看到,完整數據的對數似然函數能夠用一種簡單的方法求出最大值的解析解。然而,在實際應用中,咱們並無潛在變量的值,所以,與以前討論的同樣,咱們考慮完整數據對數似然函數關於潛在變量後驗機率分佈的指望,形式爲:
。
所以後驗機率分佈能夠在 n 上進行分解,從而是獨立的,指示值的指望爲:
它就是 k 份量對於數據點的「責任」,因而,完整數據的對數似然函數的指望值爲:,接下來可使用EM步驟進行迭代求解。在後面的討論中,咱們會繼續深刻討論完整數據的對數似然函數的指望的做用。
高斯模型的EM算法和K均值算法,在本質上有很強的類似性。
1. K均值算法對數據點的聚類進行了「硬」分配,即每一個數據點只屬於惟一的聚類。 2. 而EM算法基於後驗機率分佈,進行了一個「軟」分配
實際上,咱們能夠將K均值算法當作高斯混合模型的EM算法的一個特殊的極限狀況。下面咱們來討論這種狀況:
考慮一個稍微特殊的高斯混合模型,其中混合份量的協方差矩陣爲,是一個被全部份量共享的方差參數,是單位矩陣,從而:。
咱們如今考慮K個這種形式的高斯分佈組成的混合模型的EM算法,其中咱們將看做一個固定的常數,而不是一個須要從新評估的參數。
對一個特定的數據點,後驗機率(「責任」)爲:。
若是咱們考慮極限狀況(全部的數據點都有且只屬於一個分類,不存在機率分佈,則方差爲0),那麼咱們看到,在分母中,最小的項將會慢慢地趨近於零,所以對於數據點,只有項 j 的「責任」趨近於1,其餘的項的責任都趨近於0.
所以,在這種極限狀況下,咱們獲得對數據點聚類的一個硬分類,與K均值算法相同,從而,所以,每一個數據點都被分配爲距離最近的均值的聚類。這樣,EM重估計就簡化爲了K均值的結果。
最後,在極限的狀況下,公式給出的完整數據的對數似然函數變成了:。
所以在極限的狀況下,最大化完整對數似然函數的指望等價於最小化K均值算法的失真度量J。
咱們以前的討論集中在由混合高斯模型描述的連續變量的機率分佈上,爲了更加泛化的討論混合模型(混合模型不依賴具體的機率分佈先驗假設),咱們如今討論由伯努利分佈描述的離散二值變量的混合,這個模型也被稱爲潛在分佈(latent class analysis)。這個模型不只具備實際應用的價值,仍是咱們討論離散變量上的馬爾科夫模型的基礎。
考慮D個二值變量組成的集合,其中,每一個變量都由一個參數爲的伯努利分佈控制,即:
,其中,,且。咱們看到,在給定的條件下,各個變量是獨立的。
所以,在獨立同分布狀況下,這個分佈的均值和方差能夠很容易求得:。
咱們先來嘗試討論這種分佈的有限混合,即:,其中,,且。
這個混合分佈的均值和方差爲:,其中。
因爲協方差矩陣再也不是對角矩陣,所以混合分佈能夠描述變量之間的相關性,這與單一的伯努利分佈不一樣。
若是咱們有一個數據集,那麼這個模型的對數似然函數爲:。
和在高斯混合模型中一開始的狀況同樣,咱們看到求和運算位於對數運算內部,從而最大似然解沒有解析解。
爲了解決這個問題,咱們須要引入混合伯努利分佈的最大化似然函數的EM算法。
咱們首先引入一個潛在變量 z,它與 x 的每一個實例相關聯。與高斯混合模型的情形相同,是一個二值 K 維變量,其中只有一個元素等於1,其他元素等於0。這樣,給定潛在變量,咱們能夠寫出 x 的條件機率分佈,形式爲:。
而潛在變量的先驗機率分佈與高斯混合模型的形式相同,即:。
若是咱們將和相乘,而後對 z 求和,咱們一樣獲得該公式:
爲了推導EM算法,咱們首先寫出完整數據的對數似然函數,形式爲:
,其中。
接下來咱們取完整數據對數似然函數關於潛在變量後驗機率分佈的指望,得:
,其中是給定數據點的條件下,份量 k 的後驗機率分佈,或者「責任」。
在E步驟中,這些後驗機率使用貝葉斯定理計算,形式爲:
在上面關於潛在變量後驗機率分佈的指望公式中,咱們能夠看到,若是咱們對 n 求和,「責任」只出如今兩項中,這兩項能夠寫成:
,其中是與份量 k 的均值組成的集合等於數據的加權平均值,權係數爲份量 k 對於數據點的「責任」。對於關於的最大化,咱們須要引入一個拉格朗日乘數來知足限制條件。採用與高斯混合模型中相似的步驟,咱們有:,即份量 k 的混合係數等於數據集裏那個份量的數據點所佔的比例,
伯努利分佈參數的共軛先驗是Beta分佈。咱們已經看到一個Beta先驗分佈等價於引入 x 的額外的有效觀測。相似地,咱們能夠引入伯努利混合模型的先驗分佈,而後使用EM算法最大化後驗機率分佈。
Relevant Link:
http://sklearn.apachecn.org/cn/stable/modules/mixture.html
指望最大化算法,或者EM算法,是尋找具備潛在變量的機率模型的最大似然解的一種通用的方法。
這裏,咱們考慮一個機率模型,其中咱們將全部的觀測變量聯合起來記做,將全部的隱含變量記做。聯合機率分佈由一組參數控制,記做。咱們的目標是最大化似然函數:
這裏,咱們假設是離散的,可是當是連續變量或者離散變量與連續變量的組合時,方法是徹底相同的,只須要把求和換成適當的積分便可。
咱們假設直接優化比較困難,可是最優化完整數據似然函數就容易得多。接下來,咱們引入一個定義在潛在變量上的分佈。咱們觀察到,對於任意的,下面的分解成立:
注意,是機率分佈的一個泛函,而且是參數的一個函數。
根據上式,咱們看到是和後驗機率分佈之間的Kullback-Leibler散度。咱們知道,Kullback-Leibler散度知足,當且僅當時等號成立。所以,根據公式咱們得。換句話說,是的一個下界,以下圖:
EM算法是一個兩階段的迭代優化算法,用於尋找最大似然解。咱們可使用公式來定義EM算法,證實它確實最大化了對數似然函數。
假設參數向量的當前值爲
在E步驟中,下界關於被最大化,而保持固定。最大化問題的解很容易看出來。咱們注意到不依賴於,所以的最大值出如今Kullback-Leibler散度等於0的時候,換句話說,最大值出如今與後驗機率分佈相等的時候。此時,下界等於對數似然函數,以下圖所示:
在接下來的M步驟中,分佈保持固定,下界關於進行最大化,獲得了某個新值。這會使得下界增大(除非已經達到了極大值),這會使得對應的對數似然喊增大。因爲機率分佈 q 由舊的參數值肯定,而且在M步驟中保持固定,由於它不會等於新的後驗機率分佈,從而KL散度非零。因而,對數似然函數的增大量大於下界的增長量,以下圖所示:
此時,下界的形式爲:
其中,常數就是分佈 q 的熵,所以與無關。從而在M步驟中,最大化的量是完整數據對數似然函數的指望,正如咱們在以前的混合高斯模型的情形中看到的同樣。
EM算法的計算也能夠被看做參數空間中的運算,以下圖所示:
紅色曲線表示(不完整數據)對數似然函數,它的最大值是咱們想要獲得的。咱們首先選擇某個初始的參數值,而後在第一個E步驟中,咱們計算潛在變量上的後驗機率分佈,獲得的一個更小的下界,它的值等於在處的對數似然函數值,用藍色曲線表示。注意,下界與對數似然函數在處以切線的方式鏈接,所以兩條曲線的梯度相同。這個界是一個凹函數,對於指數族分佈的混合分佈來講,有惟一的最大值。
在M步驟中,下界被最大化,獲得新的值,這個值給出了比處更大的對數似然函數只。
接下來的E步驟構建了一個新的下界,它在處與對數似然函數切線鏈接,用綠色線白哦是。如此循環往復。