天天看點

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

接上次:https://blog.csdn.net/cyr429/article/details/102624860

Part4:生成算法模型

至今給出的算法都是求在theta為參數條件下給出x的y的機率,比如邏輯回歸和線性回歸,現在要讨論一種不太一樣的算法。

假設有一個分類問題要我們基于一些特征差別大象(y=1)和狗(y=0)。如果有一系列的訓練集,邏輯回歸或者感覺機算法會試圖找出一個分界線來分離訓練集中的大象和狗。在遇到要分類的資料時,算法會觀察這個資料是在分界線的哪一邊來判斷是大象還是狗狗。

現在有一個不同的算法,它首先會觀察大象的資料并根據這些資料建立一個模型來判斷大象是什麼樣子,再對狗狗的資料做一樣的事情得到另一個模型。在判斷的時候,會判斷是更像狗狗還是更像大象,即兩個模型的輸出比大小。

第一種算法即直接判斷并給出機率的算法(比如邏輯回歸等)叫做判别學習算法。而剛剛提到的算法叫做生成學習算法,這個算法會用

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

來為狗狗特征的分布模組化,

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

為大象特征的分布模組化,這種算法基于貝葉斯法則:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

具體的利用方式後面會提。

1.高斯判别分析法

第一種要介紹生成學習算法是高斯判别分析(GDA)。在這個模型中我們假設

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

的分布服從多元高斯分布(或多元正态分布)。我們先讨論一些多元高斯分布的知識再說GDA。

1.1 多元高斯分布

d維的多元高斯分布寫作:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

,其參數由均值向量

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

和協方差矩陣

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

組成,這裡的sigma協方差矩陣是對稱且半正定的,它的機率密度函數是:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

對于随機的服從高斯分布的資料X,它的均值向量是:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

其協方差矩陣:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

miu和sigma的值會改變高斯分布在空間的形态和位置,下面是一些高斯分布的例子:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

最左的是均值向量是0向量(2*1的)且協方差矩陣是

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

的(2*2的機關矩陣)的高斯分布,這樣的叫做标準高斯分布。中間的圖是協方差矩陣是0.6

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

的,最右圖中協方差矩陣是2

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

,我們可以觀察得出sigma越大,高斯分布得越向外分散,越小則越向中間集中。

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

上面這些高斯分布均值向量是0,協方差矩陣分别為:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

左圖是标準高斯分布,相比較另外兩圖我們發現如果我們增大sigma的副對角線,45度線上的分布會更密集一些。如果俯視的話:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

下面是更多的例子:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

相對應的協方差矩陣:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

我們可以看出如果減少副對角線上的值,圖像會在-45度方向變得更加緊湊。

以上的例子都是miu為0向量的。在sigma不變改變miu時,分布中心點的位置會發生改變:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型
【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

1.2 高斯判别分析模型

當我們處理輸入特征x是連續随機變量的分類問題時,我們可以使用高斯判别分析模型Gasussian Discriminant Analysis(GDA)。它是基于多元高斯分布的:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

寫出具體形式的話:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

是以此模型的參數是

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

(注意盡管

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

是兩個值,它們對應的是同一個協方差矩陣

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

),那麼對數似然函數是:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

通過最大化對數似然函數我們可以得出使得其最大的參數值是(ps1會要求推算此過程):

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

圖像化的處理過程如下:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

可以看出兩個高斯分布有着相同的形狀和方向,因為它們使用相同的協方差矩陣sigma。圖中的直線是

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

的線,線上的一邊預測輸出為1,另一邊為0.

1.3 讨論GDA和邏輯回歸

若我們把前面的:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

改寫成關于x的函數,會得到:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

這裡的theta是關于phi,sigma,miu1和miu0的函數。這個形式正是sigmoid的形式----來自于邏輯回歸。

那麼何時選擇邏輯回歸何時選擇GDA呢?這裡就不和課件一樣長篇大論了,給大家總結一下:

1. 相比邏輯回歸,GDA有着更強的模型化的假設

2. 若此模型化假設正确,GDA會拟合的更好,尤其是面對多元高斯分布資料時這個模型是漸進有效的

3. 若不正确,GDA會出現較大偏差

4. 綜上所述邏輯回歸更加robust但是不夠sensitive,而GDA不夠robust卻對多元高斯分布更加sensitive

2.樸素貝葉斯

在GDA中,輸入的x是連續的。讓我們讨論一個不同的算法,它的輸入x是離散的。

舉個栗子,假設我們要用機器學習檢測垃圾郵件,也就是把收到的郵件分為沒用的商業性質的郵件和有用的郵件。這也是文字分類的一個栗子。

對于一個訓練集,我們有兩種方式将這些郵件處理成特征向量,2.1是基于多變量伯努利事件模型,2.3

2.1 多變量伯努利模型

在這一部分,我們會通過一個長度等于所有詞彙組成的詞典的特征向量來代表一封郵件。如果一封郵件含有第 j 個詞,我們會将xj設定為1,否則為0,例如:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

在特征向量中出現的詞的集合叫做詞彙,是以x的次元正好等于詞彙的大小。

如果我們想直接基于這個特征向量建立生成模型來計算

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

,但是詞彙有50000,那麼x就是次元為50000取值為{0 , 1}的向量。若我們根據多項分布會有2^50000種可能的輸出,我們就需要2^50000-1維的參數,這明顯太多了。

為了為

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

建立模型,我們要做一個強烈的假設。我們假設基于y,xi們互相之間是條件獨立的。這就是樸素貝葉斯假設,由此産生的算法就是樸素貝葉斯分類器。舉個栗子,假設y=1代表是垃圾郵件,buy是第2087個單詞,price是第39831個單詞,那麼樸素貝葉斯的假設就意味着y=1時(這是封垃圾郵件),x2087的值不會影響你對x39831是否等于1(有price這個詞)的判斷。注意這并不代表x2087和x39831是獨立的(

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

),而隻是條件獨立。是以我們能得出:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

第一個等号基于機率論的基本定理,第二個等号則基于我們的樸素貝葉斯假設。雖然這是一種很強烈的假設,但是由其産生的算法工作起來卻很有效。

我們模型的參數包括

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型
【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

。給出一組訓練集{(xi, yi); i=1,...,n},我們可以寫出聯合似然函數:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

分别基于

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型
【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

最大化聯合似然函數得到最大似然估計:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

這些式子很好了解,第一個式子的分子代表在所有垃圾郵件中單詞word[j]出現的次數,分母代表垃圾郵件的數量。

在拟合完所有的參數後,在收到一封特征為x的新郵件時,我們可以簡單地計算:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

并判斷哪個類别有着更高的後驗機率。

雖然這裡的例子用的x隻有0和1兩種取值,但是x也可取多種值。是以相比伯努利分布(二項分布),我們最終使用的是多項分布。x是連續值的話我們也可以離散化,比如把1-100離散成1-20,21-40,41-60,61-80,81-100五個空間。當多元高斯分布不能很好地拟合連續分布的資料時,NB經常會有更好的拟合結果。

2.2 拉普拉斯平滑

NB雖然好用,但是它還有一個小問題。如果我們碰到一封郵件有一個我們沒有見過的新詞,假設它是詞彙中的第35000個單詞,我們在計算phi時會出現:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

因為我們的算法在所有的垃圾郵件和普通郵件中從未見過這個詞,是以它認為在這兩種郵件中看到它的機率是0,在計算後驗機率時會出現:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

因為分子分母中累乘的項中都有前面的0 ,結果我們的算法不知道怎麼進行預測了。而且将資料集中沒有出現過的元素的機率設定為0本身就是一個壞主意。

為了解決這個問題我們先假設我們要求多項分布的随機變量z值,z的取值範圍{1,..,k},那麼參數就是

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

,假設我們有n個獨立資料的資料集{z1, z2,..., zn},那麼最大似然估計就是:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

正如之前所說,如果要用最大似然估計,一些phij可能會變成0,為了避免發生這樣的情況,我們可以進行拉普拉斯平滑,它會把最大似然估計改寫成:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

即分子加1分母加k,則

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

仍然成立(phij作為機率總和必須為1)。這樣就可以避免出現前面的問題。

回到我們的樸素貝葉斯分類器,這裡k=2:

【CS229機器學習】 Lecture5:生成學習算法,生成模型,高斯判别分析模型,多元高斯分布,樸素貝葉斯,拉普拉斯平滑Part4:生成算法模型

以上。

繼續閱讀