關於機器學習中的生成學習算法(Generative Learning Algorithm)

我們之前可能接觸到一些線性迴歸的案例,以至於廣義線性模型GLM等等之類的,這些模型呢,都是在給定訓練集合,而且這些訓練集有着確定的輸入和輸出,我們通過利用這些訓練集來構建預測函數,從而實現預測,判斷之類的功能。

舉個簡單的例子,我們需要將大象和狗分類,以往的做法是,利用特徵來畫出分界線,那麼下一次我們只需要輸入特徵就可以利用這條分界線來判斷這隻動物是大象還是狗了。那麼還有另一種方法,如果我們先觀察大象,然後建立出大象的模型,然後觀察狗,建立狗的模型,然後一旦我們想區分狗和大象,只需要看這隻動物和兩個模型中的哪一個更加匹配。這就逐漸引出了生成學習算法。

判別學習算法在於試着去直接學習f(y|x)(即以x的條件的y的概率密度,我們就可以計算出y的期望,通過x來預測y)或者直接去學習從給定的一組輸入X到{0,1}的映射

而現在,我們討論的生成學習算法則是試着對f(x|y)(以及f(y))建模,通過y這一結果來對所需要判斷之物的特徵進行建模。在我們對f(y)(先驗概率分佈)和f(x|y)進行建模後,我們的算法就可以利用貝葉斯定理來計算出f(y|x)的概率分佈

for4

說到這裏你可能會問了,那麼這個f(x)怎麼求呀?

很簡單,利用全概率公式就可以了

如果是因變量是離散的,舉個例子,伯努利分佈的因變量

for5

如果因變量是連續的for6

通過上圖可以知道連續型全概率公式,通過對邊緣概率分佈函數積分可以得到。

接下來我們舉一個生成學習算法的例子--------高斯判別分析(GDA)

在高斯判別分析中,首先我們假定f(x|y)的概率分佈是多維高斯分佈,或者說是多維正態分佈,接着給出兩個參數,一個是多維協方差Σ(n×n矩陣),一個是均值向量μ(n維)

好的,現在我們把維度都設爲n維,那麼對於多維正態分佈來說,有

for7

接着我們需要建立起來高斯判別分析模型來解決分類問題,前提是x是連續的隨機變量

這個模型如圖所示:

for8

通過上面的概率分佈我們可以寫出概率密度函數

for9

現在看一下我們模型的參數,有for10

可以寫出關於這四個參數的對數似然函數

for10

在這裏補充一點,我們現在是在進行極大似然估計,當我們知道樣本變量的分佈之後卻不知道他們的參數,那就可以用極大似然估計來估計他們的參數。

很顯然這裏有多個變量,現在需要計算似然函數的極值,可以通過求偏導數來獲得參數的極大似然估計

對第一個參數求偏導

for11

令偏導等於0,得for12

對第二個參數求偏導

for13

令偏導數=0,可以得到

for13

這裏我再給出另外得兩個參數得極大似然估計

for14

其中1{true}=1,1{false}=0

至此我們通過極大似然估計能夠得到四個參數,再利用我們之前的結論就可以求出f(y|x),通過求出期望便可以求出預測值。至此,你應該對生成學習算法,以及高斯判別分析模型有一定的瞭解了。

發佈了45 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章