維基百科上Generative條目裏面有個經典的案例:html
假設有四個samples:算法
生成式模型的世界是這個樣子:機器學習
而斷定式模型的世界是這個樣子:學習
也就是說:生成模型是聯合機率分佈,判別模型是條件機率分佈。ui
簡單地說,對於監督學習,預測時,通常都是在求htm
生成模型: 從數據中學習聯合機率分佈,而後利用貝葉斯公式求:
; 這類典型的模型包括:樸素貝葉斯、LDA、HMM
判別模型:直接學習, 它直觀輸入什麼特徵X,就直接預測出最可能的
; 典型的模型包括:LR, SVM,CRF,Boosting,Decision tree....blog
其實機器學習的任務是從屬性X預測標記Y,即求機率P(Y|X);ip
對於判別式模型來講求得P(Y|X),對未見示例X,根據P(Y|X)能夠求得標記Y,便可以直接判別出來,如上圖的左邊所示,實際是就是直接獲得了判別邊界,因此傳統的、耳熟能詳的機器學習算法如線性迴歸模型、支持向量機SVM等都是判別式模型,這些模型的特色都是輸入屬性X能夠直接獲得Y(對於二分類任務來講,實際獲得一個score,當score大於threshold時則爲正類,不然爲反類)~(根本緣由我的認爲是對於某示例X_1,對正例和反例的標記的條件機率之和等於1,即P(Y_1|X_1)+P(Y_2|X_1)=1)ci
而生成式模型求得P(Y,X),對於未見示例X,你要求出X與不一樣標記之間的聯合機率分佈,而後大的獲勝,如上圖右邊所示,並無什麼邊界存在,對於未見示例(紅三角),求兩個聯合機率分佈(有兩個類),比較一下,取那個大的。機器學習中樸素貝葉斯模型、隱馬爾可夫模型HMM等都是生成式模型,熟悉Naive Bayes的都知道,對於輸入X,須要求出好幾個聯合機率,而後較大的那個就是預測結果~(根本緣由我的認爲是對於某示例X_1,對正例和反例的標記的聯合機率不等於1,即P(Y_1,X_1)+P(Y_2,X_1)<1,要遍歷全部的X和Y的聯合機率求和,即sum(P(X,Y))=1,具體可參見樓上woodyhui提到的維基百科Generative model裏的例子)get
博文機器學習之判別式模型和生成式模型 - nolonely - 博客園 舉了一個例子:
判別式模型舉例:要肯定一個羊是山羊仍是綿羊,用判別模型的方法是從歷史數據中學習到模型,而後經過提取這隻羊的特徵來預測出這隻羊是山羊的機率,是綿羊的機率。
生成式模型舉例:利用生成模型是根據山羊的特徵首先學習出一個山羊的模型,而後根據綿羊的特徵學習出一個綿羊的模型,而後從這隻羊中提取特徵,放到山羊模型中看機率是多少,在放到綿羊模型中看機率是多少,哪一個大就是哪一個。
細細品味上面的例子,判別式模型是根據一隻羊的特徵能夠直接給出這隻羊的機率(好比logistic regression,這機率大於0.5時則爲正例,不然爲反例),而生成式模型是要都試一試,最大的機率的那個就是最後結果~
補充20180524:
在機器學習中任務是從屬性X預測標記Y,判別模型求的是P(Y|X),即後驗機率;而生成模型最後求的是P(X,Y),即聯合機率。從本質上來講:
判別模型之因此稱爲「判別」模型,是由於其根據X「判別」Y;
而生成模型之因此稱爲「生成」模型,是由於其預測的根據是聯合機率P(X,Y),而聯合機率能夠理解爲「生成」(X,Y)樣本的機率分佈(或稱爲 依據);具體來講,機器學習已知X,從Y的候選集合中選出一個來,可能的樣本有(X,Y_1), (X,Y_2), (X,Y_3),……,(X,Y_n),實際數據是如何「生成」的依賴於P(X,Y),那麼最後的預測結果選哪個Y呢?那就選「生成」機率最大的那個