生成模型和判別模型(Generative model, Discriminative model)

生成模型和判別模型(Generative model, Discriminative model)

監督學習的任務是學習一個模型,對給定的輸入預測相應的輸出。這個模型一般形式爲決策函數Y=f(X)或者條件概率分佈P(Y|X)。有一種分類就把模型分爲:Generative Modeling (生成模型)和Discriminative Modeling (判別模型)兩種。生成模型是由訓練數據學習聯合概率分佈P(X,Y),然後求出條件概率分佈P(Y|X)作爲預測的模型。常見的生成模型有PCA,Kmeans,Naive Bayesian和HMM。

判別模型是由訓練數據直接學習決策函數f(X)或者條件概率分佈P(Y|X)作爲預測的模型,模型關心的是對給定的輸入X,應該預測什麼樣的輸出Y,與GM的不同在於不需要先學習出聯合分佈P(X,Y)。典型的判別模型有 KNN、Logistic Regression,Linear Regression、Decision Tree、SVM、AdaBoost和條件隨機場等。

生成模型對數據集的分佈有嚴格的假設,對於outliers會很敏感。而判別模型不關心數據集的分佈,只需要學習得到分類的規則,對outliers相對不敏感。

模型 生成模型 判別模型
數據集大小
數據分佈 有嚴格的要求 不關心
學習目標 估計概率 分類規則

在這裏插入圖片描述

對於判別式模型來說求得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)

對於生成式模型求得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裏的例子)

博文機器學習之判別式模型和生成式模型 - nolonely - 博客園 舉了一個例子:判別式模型舉例:要確定一個羊是山羊還是綿羊,用判別模型的方法是從歷史數據中學習到模型,然後通過提取這隻羊的特徵來預測出這隻羊是山羊的概率,是綿羊的概率。生成式模型舉例:利用生成模型是根據山羊的特徵首先學習出一個山羊的模型,然後根據綿羊的特徵學習出一個綿羊的模型,然後從這隻羊中提取特徵,放到山羊模型中看概率是多少,在放到綿羊模型中看概率是多少,哪個大就是哪個。

舉例

通過voice pitch 來判斷是男聲還是女聲。
判決模型,只需要根據voice pitch,即特徵,學習得到一個threshold。通過特徵在threshold的左邊還是右邊來判斷。
生成模型,需要對男聲和女聲的voice pitch的分佈進行統計。然後通過比較特徵在男聲分佈和女聲分佈的得分來判斷。

在這裏插入圖片描述在這裏插入圖片描述

對於outliers,生成模型,無法得到正確的分佈,性能會較差。
在這裏插入圖片描述

Logistic regression和Naive bayes

Logistic regression和Naive bayes都是對特徵的線性表達

Logistic regression和Naive bayes建模的都是條件概率,對所最終求得的不同類的結果有很好的解釋性。而不像SVM,神經網絡這樣解釋性不高。

不同點

Logistic regression在有相關性feature上面學習得到的模型在測試數據的performance更好。也就是說,logistic regression在訓練時,不管特徵之間有沒有相關性,它都能找到最優的參數。而在Naive bayes中,由於我們給定特徵直接相互獨立的嚴格設定,在有相關性的feature上面學習到的權重同時變大或變小,它們之間的權重不會相互影響。從這方面來說,如果能夠在對參數較好地控制,在損失項方面處理的很好的話,Logistic regression相對Naive bayes在應用時更不會限制在特徵工程(feature engineering)上面。

Naive bayes的好處是我沒有優化參數這一步,通過訓練數據我直接得到一個counting table,這些有助於並行化。

Andrew Ng和Michael Jordan在2001年發了一篇NIPS短文《 On Discriminative vs. Generative classifiers: A comparison of logistic regression and naive Bayes 》,他們把這兩個模型用在各種數據集上面進行測試,最後得到在小數據上面Naive bayes可以取得更好的效果,隨着數據的增多、特徵維度的增大,Logistic regression的效果更好。這也是因爲Naive bayes是生成模型,在有prior的情況下模型能夠把數據fit的更好,而Logistic regression屬於判別模型,不對聯合概率建模,通過訓練數據直接預測輸出,因此在數據足夠多的情況下能夠得到更好一些的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章