1. 程式人生 > >機器學習小問題 -- 生成式模型與判別式模型

機器學習小問題 -- 生成式模型與判別式模型

本篇博文總結最近學習到的生成式模型與判別式模型的知識。

1. 簡介

就像之前在總結分類和聚類時說的一樣,機器學習基本在做的事情就是在分類、打標籤,我們的模型也就像一個個分類機器(個人看法,歡迎指正)。而這麼多的模型,可以分為兩類:生成式模型判別式模型。

對於一個分類器,當我們丟進去 x 以後,那麼我們到底該如何決定它該分到哪一個標籤呢,也就是它丟擲的 y 會是多少呢?很自然地,我們會想到使條件概率 p(y|x) 最大的 y 是我們的理想值。說到這裡,我們就可以接著簡單介紹生成式模型和判別式模型了

判別式模型:按名字,並不嚴謹地,我們可以理解為它直接判別 y 到底應該為多少。它直接對後驗概率 p(y|x

) 建模,然後求使得 p(y|x) 最大的 y,從而得到 y 的估計值。

生成式模型:按名字,同樣並不嚴謹地,我們可以理解為它是‘生成’一個分佈。因為他是對聯合分佈 p(x,y) 進行建模處理的。那麼生成式模型如何判別到底 y 為多少呢?它是通過對 p(x,y) 運用貝葉斯公式得到 p(y|x) ,然後再求使得 p(y|x) 最大的 y ,從而得到 y 的估計值。具體的公式為:

y^* = \arg\max _{y_i} p(y_i|x)\\ = \arg\max _{y_i} \frac{p(x|y_i)p(y_i)}{p(x)} \\ = \arg\max _{y_i}p(x|y_i)p(y_i) = \arg\max _{y_i}p(x,y_i)

從上面的介紹也可以發現,從生成式模型可以推出判別式模型,但從判別式模型卻不能推出生成式模型(二者聯絡)

也有這麼說二者的:判別式模型只形成一個模型,輸入 x ,就根據 p(y|x) 的值返回標籤;生成式模型則同時形成多個模型,一個類別形成一個模型,然後再每個模型中計算 p(y|x

) ,比較後判定 y 的值

2. 常見的生成式模型與判別式模型

                                        生成式模型                                            判別式模型

1.判別式分析

2.樸素貝葉斯

3.K近鄰(KNN)

4.混合高斯模型

5.隱馬爾科夫模型(HMM)

6.貝葉斯網路

7.Sigmoid Belief Networks

8.馬爾科夫隨機場(Markov Random Fields)

9.深度信念網路(DBN)

1.線性迴歸(Linear Regression)

2.邏輯斯蒂迴歸(Logistic Regression)

3.神經網路(NN)

4.支援向量機(SVM)

5.高斯過程(Gaussian Process)

6.條件隨機場(CRF)

7.CART(Classification and Regression Tree)

3. 生成式模型與判別式模型的比較

                                     優點                                   缺點
生成式模型
  1. 對資料量要求低,少量樣本也可以做(在假設條件成立時)
  2. 易於收斂、擬合
  3. 可以處理無標籤資料
  4. 支援增量學習。新增新的類別後,不需要全部重新訓練,只訓練p(y_{new},x)的分佈就行。
  5. 可以生成 x
  1. 錯誤率高
  2. 一般對資料分佈有假設,這些假設在實際應用通常很難滿足
  3. 更易於對x本身進行建模,很難對x的某種變換建模
  4. 學習和計算過程很複雜
判別式模型
  1. 錯誤率低
  2. 可以對x的某種變換進行建模處理
  3. 對資料本身的分佈沒有限制
  4. 分類邊界更加靈活
  1. 不能反映訓練資料本身的特性
  2. 變數之間的關係不清楚,不可視
  3. 擬合較生成式模型差

參考連結: