1、引言網絡
本材料參考Andrew Ng大神的機器學習課程 http://cs229.stanford.edu機器學習
在上一篇有監督學習迴歸模型中,咱們利用訓練集直接對條件機率p(y|x;θ)建模,例如logistic迴歸就利用hθ(x) = g(θTx)對p(y|x;θ)建模(其中g(z)是sigmoid函數)。假設如今有一個分類問題,要根據一些動物的特徵來區分大象(y = 1)和狗(y = 0)。給定這樣的一種數據集,迴歸模型好比logistic迴歸會試圖找到一條直線也就是決策邊界,來區分大象與狗這兩類,而後對於新來的樣本,迴歸模型會根據這個新樣本的特徵計算這個樣本會落在決策邊界的哪一邊,從而獲得相應的分類結果。函數
如今咱們考慮另一種建模方式:首先,根據訓練集中的大象樣本,咱們能夠創建大象模型,根據訓練集中的狗樣本,咱們能夠創建狗模型。而後,對於新來的動物樣本,咱們可讓它與大象模型匹配看機率有多少,與狗模型匹配看機率有多少,哪個機率大就是那個分類。學習
判別式模型(Discriminative Model)是直接對條件機率p(y|x;θ)建模。常見的判別式模型有 線性迴歸模型、線性判別分析、支持向量機SVM、神經網絡等。3d
生成式模型(Generative Model)則會對x和y的聯合分佈p(x,y)建模,而後經過貝葉斯公式來求得p(yi|x),而後選取使得p(yi|x)最大的yi,即:orm
常見的生成式模型有 隱馬爾可夫模型HMM、樸素貝葉斯模型、高斯混合模型GMM、LDA等。blog
2、高斯判別分析 Gaussian Discriminant Analysisio
高斯判別分析GDA是一種生成式模型,在GDA中,假設p(x|y)知足多值正態分佈。多值正態分佈介紹以下:dva
2.1 多值正態分佈 multivariate normal distribution變量
一個n維的多值正態分佈能夠表示爲多變量高斯分佈,其參數爲均值向量,協方差矩陣
,其機率密度表示爲:
當均值向量爲2維時機率密度的直觀表示:
左邊的圖表示均值爲0,協方差矩陣∑ = I;中間的圖表示均值爲0,協方差矩陣∑ = 0.6I;右邊的圖表示均值爲0,協方差矩陣∑ = 2I。能夠觀察到,協方差矩陣越大,機率分佈越扁平;協方差矩陣越小,機率分佈越高尖。
2.2 高斯判別分析模型
若是有一個分類問題,其訓練集的輸入特徵x是隨機的連續值,就能夠利用高斯判別分析。能夠假設p(x|y)知足多值正態分佈,即:
該模型的機率分佈公式爲:
模型中的參數爲Φ,Σ,μ0和μ1。因而似然函數(x和y的聯合分佈)爲:
其中Φ是y = 1的機率,Σ是協方差矩陣,μ0是y = 0對應的特徵向量x的均值 , μ1是y = 1對應的特徵向量x的均值,因而獲得它們的計算公式以下:
因而這樣就能夠對p(x,y)建模,從而獲得機率p(y = 0|x)與p(y = 1|x),從而獲得分類標籤。其結果以下圖所示:
3、樸素貝葉斯模型
在高斯判別分析GDA中,特徵向量x是連續實數值,若是特徵向量x是離散值,能夠利用樸素貝葉斯模型。
3.1 垃圾郵件分類
假設咱們有一個已被標記爲是不是垃圾郵件的數據集,要創建一個垃圾郵件分類器。用一種簡單的方式來描述郵件的特徵,有一本詞典,若是郵件包含詞典中的第i個詞,則設xi = 1,若是沒有這個詞,則設xi = 0,最後會造成這樣的特徵向量x:
這個特徵向量表示郵件包含單詞"a"和單詞"buy",可是不包含單詞"aardvark,"aardwolf","zygmurgy"。特徵向量x的維數等於字典的大小。假設字典中有5000個單詞,那麼特徵向量x就爲5000維的包含0/1的向量,若是咱們創建多項式分佈模型,那麼有25000中輸出結果,這就意味着有接近25000個參數,這麼多的參數,要建模很困難。
所以爲了建模p(x|y),必須作出強約束假設,這裏假設對於給定的y,特徵x是條件獨立的,這個假設條件稱爲樸素貝葉斯假設,獲得的模型稱爲樸素貝葉斯模型。好比,若是y= 1表示垃圾郵件,其中包含單詞200 "buy",以及單詞300 "price",那麼咱們假設此時單詞200 "buy" x200、單詞300"price"x300 是條件獨立的,能夠表示爲p(x200|y) = p(x200|y,x300)。注意,這個假設與x200與x300獨立是不一樣的,x200與x300獨立能夠寫做:p(x200) = p(x200|x300);這個假設是對於給定的y,x200與x300是條件獨立的。
所以,利用上述假設,根據鏈式法則獲得:
該模型有3個參數:
,
,
那麼。根據生成式模型的規則,咱們要使聯合機率最大:
根據這3個參數意義,能夠獲得它們各自的計算公式:
這樣就獲得了樸素貝葉斯模型的完整模型。對於新來的郵件特徵向量x,能夠計算:
實際上只要比較分子就好了,分母對於y = 0和y = 1是同樣的,這時只要比較p(y = 0|x)與p(y = 1|x)哪一個大就能夠肯定郵件是不是垃圾郵件。
3.2 拉普拉斯平滑
樸素貝葉斯模型能夠在大部分狀況下工做良好。可是該模型有一個缺點:對數據稀疏問題敏感。
好比在郵件分類中,對於低年級的研究生,NIPS顯得太過於高大上,郵件中可能沒有出現過,如今新來了一個郵件"NIPS call for papers",假設NIPS這個詞在詞典中的位置爲35000,然而NIPS這個詞歷來沒有在訓練數據中出現過,這是第一次出現NIPS,因而算機率時:
因爲NIPS從未在垃圾郵件和正常郵件中出現過,因此結果只能是0了。因而最後的後驗機率:
對於這樣的狀況,咱們能夠採用拉普拉斯平滑,對於未出現的特徵,咱們賦予一個小的值而不是0。具體平滑方法爲:
假設離散隨機變量取值爲{1,2,···,k},原來的估計公式爲:
使用拉普拉斯平滑後,新的估計公式爲:
即每一個k值出現次數加1,分母總的加k,相似於NLP中的平滑,具體參考宗成慶老師的《統計天然語言處理》一書。
對於上述的樸素貝葉斯模型,參數計算公式改成: