本文轉自徐飛翔的“生成模型和判別模型的區別”
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
機器學習的目標
首先,我們先要討論整個機器學習的目標,在應用中最常見到的分類問題中,我們需要根據現有樣本預測出其標簽
因此我們可以選擇學習出條件概率
,如softmax分類器,logistic回歸,亦是或者學習出樣本特征
?到標簽
?的直接映射(比起前者沒有概率,而是直接的一個結果),如感知器Perceptron,SVM支持向量機。學習出了條件概率或者是其映射之后,我們就可以根據其樣本特征
預測其標簽了
?。
生成模型 or 判別模型
這里,我們直接給出兩者的定義:
判別模型: 模型直接學習出條件概率 ,模型包括kNN,感知機,決策樹,邏輯回歸,最大熵模型,SVM,提升方法,條件隨機場,神經網絡,···
生成模型: 模型學習出聯合概率分布,然后根據貝葉斯公式,得出條件概率分布
,模型包括樸素貝葉斯法、隱馬爾科夫模型、混合高斯模型、AODE、Latent Dirichlet allocation(unsup)、Restricted Boltzmann Machine,···
于是,兩者的區別就是是否需要學習出聯合概率分布 我們這里舉一個維基百科里面的例子:
假如我們現在有四個樣本:
在判別模型眼中:
而在生成模型眼中:
而在博客《機器學習之判別式模型和生成式模型》中,舉了一個很好的例子描述這兩者的區別,這里引用如下:
判別模型:要確定一個羊是山羊還是綿羊,用判別模型的方法是從歷史數據中學習到模型,然后通過提取這只羊的特征來預測出這只羊是山羊的概率,是綿羊的概率。
生成模型:利用生成模型是根據山羊的特征首先學習出一個山羊的模型,然后根據綿羊的特征學習出一個綿羊的模型,然后從這只羊中提取特征,放到山羊模型中看概率是多少,在放到綿羊模型中看概率是多少,哪個大就是哪個。
Reference
- Generative Model Wikipedia
- 知乎, 機器學習“判定模型”和“生成模型‘有什么區別?
- 機器學習之判別式模型和生成式模型