【機器學習】判別模型vs生成模型

判別模型vs生成模型

條件概率分佈p(y|x)

從概率的角度來看監督學習的話,其實就是從數據集中學習條件概率分佈p(y|x)。其中,xRn 表示n維數據特徵,yR 表示數據對應的類別標籤。給定一個x,模型計算出x屬於各個類別標籤y的概率p(y|x),然後判定x的預測標籤爲p(y|x)最大的y標籤。

比如,現在的一個問題爲判定一個動物是汪星人還是喵星人。這個問題可以表示爲x=[叫聲,食物,毛的顏色],y=[汪星人,喵星人]。監督學習就是去比較p(y=汪星人|x) 和p(y=喵星人|x)的概率誰大,預測給定的動物爲概率較大的動物。

判別模型(discriminative model) vs 生成模型(generative model)

監督學習中估計p(y|x)的方法分爲兩種:判別方法和生成方法,其對應的就是判別模型和生成模型。

判別模型:基於給定的數據集,直接計算p(y|x),形象的說就是直接學習找到一條決策邊界,判別數據的類別標籤,在決策邊界一側的是類別0,在另外一側的是類別1。形象的描述可以使用下圖表示:給定一堆的藍色和紅色的點,監督學習通過不斷的學習找到了一條直線,這條直線儘可能的將不同顏色的點劃分開來。當給定了一個新的點,如果這個條落在直線的上方,則判定爲紅色,否則爲藍色。
這裏寫圖片描述

考慮上述所說的判定動物爲貓還是狗的問題,用判別模型解決就是,通過觀察這個動物的叫聲、食物和毛的顏色特徵,來直接判定這個動物是屬於汪星人還是汪星人。常見的判別模型有KNN,決策樹,PLA等。

生成模型 :基於給定的數據集,首先要學習得到其聯合概率分佈p(x,y)和p(x),再通過等式p(y|x)=p(x,y)p(x)=p(x|y)p(y)p(x) 來計算p(y|x)。考慮上述所說的判定動物爲喵星人還是汪星人的問題,用判生成解決就是,給定一堆的喵星人和汪星人,我們可以很容易得到p(y=)=p(y=)= ,然後我們還需要觀察喵星人有什麼特徵p(x|y=) 和汪星人有什麼特徵p(x|y=) 。比如喵星人吃魚,“喵喵喵”的叫;汪星人吃骨頭,“汪汪汪”的叫。當判定一個新動物的時候,去觀察這個新動物的特徵更像汪星人p(y=|x) 還是貓星人p(y=|x)

在生成模型中,我們還需要對p(x) 建模,如果有大量數據的話,可以較準確的衡量P(x) ,但是如果數據量較少就會導致偏差。不過,如果數據集固定,那麼對於任意的類別標籤p(x) 都是一個定值 p(x)=p(x|y=1)p(y)+p(x|y=0)p(y=0) ,因此我們可以直接通過p(y|x)p(x|y)p(y) 來衡量。

生成模型中常見的有:NB,HMM等。

判別模型和生成模型的優缺點

判別模型
- 缺點:判別模型直接學習P(y|x) ,即找到一條判別邊界,使得不同類別之間的劃分距離儘可能大,並不關心數據本身的特徵p(x) ,因此無法反應數據的特性。
- 但是正是由於判別模型不關心p(x) ,直接有數據集學習判定預測數據的類別,因此減少了計算,模型簡單。

生成模型
- 缺點:與判別模型相反,生成模型因爲考慮了p(x,y)P(x) ,導致了模型複雜度增加,而且由於P(x) 會引來偏差,降低預測準確率。
- 優點: 生成模型可以學習到數據本身的特徵,並且可以將學習到的特徵,應用到其他判別問題上。如果估計的問題並不是數據所屬的類別y,而是某個隱藏的特性z,生成模型就可以估計出隱藏變量z的分佈,判別模型就無法做到:p(y|x)p(x)=p(x)p(z|x)p(y|z)

發佈了37 篇原創文章 · 獲贊 52 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章