1.生成學習算法(Generative learning algorithm)
2.高斯判別分析(GDA,Gaussian Discriminant Analysis)
3.樸素貝葉斯(Naive Bayes)
4.拉普拉斯平滑(Laplace smoothing)算法
判別學習算法(discriminative learning algorithm):直接學習p(y|x)(好比說logistic迴歸)或者說是從輸入直接映射到{0,1}.函數
生成學習算法(generative learning algorithm):對p(x|y)(和p(y))進行建模.性能
簡單的來講,判別學習算法的模型是經過一條分隔線把兩種類別區分開,而生成學習算法是對兩種可能的結果分別進行建模,而後分別和輸入進行比對,計算出相應的機率。學習
好比說良性腫瘤和惡性腫瘤的問題,對良性腫瘤創建model1(y=0),對惡性腫瘤創建model2(y=1),p(x|y=0)表示是良性腫瘤的機率,p(x|y=1)表示是惡性腫瘤的機率.優化
根據貝葉斯公式(Bayes rule)推導出y在給定x的機率爲:orm
GDA是咱們要學習的第一個生成學習算法.圖片
GDA的兩個假設:get
2.1 多維正態分佈
若x服從多維正態分佈(也叫多維高斯分佈),均值向量(mean vector),協方差矩陣(convariance matrix),寫成x~, 其密度函數爲:
表示行列式(determinant).it
均值:
協方差Cov(Z)== = ∑io
高斯分佈的一些例子:
左圖均值爲零(2*1的零向量),協方差矩陣爲單位矩陣I(2*2)(成爲標準正態分佈).
中圖協方差矩陣爲0.6I,
右圖協方差矩陣爲2I
均值爲0,方差分別爲:
2.2 高斯判別分析模型
寫出機率分佈:
模型的參數爲φ,μ0,μ1,∑,對數似然性爲:
求出最大似然估計爲:
結果如圖所示:
1.3 討論GDA和logistic迴歸
GDA模型和logistic迴歸有一個頗有意思的關係.
若是把看作是x的函數,則有:
其中是的函數,這正是logistic迴歸的形式.
關於模型的選擇:
剛纔說到若是p(x|y)是一個多維的高斯分佈,那麼p(y|x)必然能推出一個logistic函數;反之則不正確,p(y|x)是一個logistic函數並不能推出p(x|y)服從高斯分佈.這說明GDA比logistic迴歸作了更強的模型假設.
可是,logistic迴歸作了更弱的假設,相對於不正確的模型假設,具備更好的魯棒性(robust).許多不一樣的假設可以推出logistic函數的形式. 好比說,若是那麼p(y|x)是logistic. logstic迴歸在這種類型的Poisson數據中性能很好. 可是若是咱們使用GDA模型,把高斯分佈應用於並非高斯數據中,結果是很差預測的,GDA就不是很好了.
在GDA模型中,特徵向量x是連續的實數向量.若是x是離散值,咱們須要另外一種學習算法了.
例子:垃圾郵件分類問題
首先是把一封郵件做爲輸入特徵,與已有的詞典進行比對,若是出現了該詞,則把向量的xi=1,不然xi=0,例如:
咱們要對p(x|y)建模,可是假設咱們的詞典有50000個詞,那麼,若是採用多項式建模的方式,會有,明顯參數太多了,這個方法是行不通的.
爲了對p(x|y)建模,咱們作一個很強的假設,假設給定y,xi是條件獨立(conditionally independent)的.這個假設成爲樸素貝葉斯假設(Naive Bayes assumption).
所以有:
雖說樸素貝葉斯假設是很強的,可是其實這兒算法在不少問題都工做的很好.
模型參數包括:
聯合似然性(joint likelihood)爲:
獲得最大似然估計值:
很容易計算:
樸素貝葉斯的問題:
假設在一封郵件中出現了一個之前郵件歷來沒有出現的詞,在詞典的位置是35000,那麼得出的最大似然估計爲:
也即便說,在訓練樣本的垃圾郵件和非垃圾郵件中都沒有見過的詞,模型認爲這個詞在任何一封郵件出現的機率爲0.
假設說這封郵件是垃圾郵件的機率比較高,那麼
模型失靈.
在統計上來講,在你有限的訓練集中沒有見過就認爲機率是0是不科學的.
爲了不樸素貝葉斯的上述問題,咱們用laplace平滑來優化這個問題.
回到樸素貝葉斯問題,經過laplace平滑:
分子加1,分母加1就把分母爲零的問題解決了.