機器學習筆記——邏輯迴歸(對數概率迴歸)和樸素貝葉斯分類器的對比

一 綜述html

  因爲邏輯迴歸和樸素貝葉斯分類器都採用了極大似然法進行參數估計,因此它們會被常常用來對比。(另外一對常常作對比的是邏輯迴歸和SVM,由於它們都是經過創建一個超平面來實現分類的)本文主要介紹這兩種分類器的相同點和不一樣點。git

二.二者的不一樣點github

1.二者比較明顯的不一樣之處在於,邏輯迴歸屬於判別式模型,而樸素貝葉斯屬於生成式模型。具體來講,二者的目標雖然都是最大化後驗機率,可是邏輯迴歸是直接對後驗機率P(Y|X)進行建模,而樸素貝葉斯是對聯合機率P(X,Y)進行建模,因此說二者的出發點是不一樣的。網絡

(西瓜書上關於貝葉斯分類器的那章有比較詳細的解釋)函數

2.樸素貝葉斯分類器要求「屬性條件獨立假設」即,對於已知類別的樣本x,假設x的全部屬性是相互獨立的。這就致使了兩點與邏輯迴歸的不一樣之處:學習

(1)樸素貝葉斯的限制條件比邏輯迴歸更加嚴格,意味着邏輯迴歸的應用範圍更廣。測試

(2)樸素貝葉斯能夠不經過(而不是不能梯度降低等優化方法進行參數優化,事實上,在利用極大似然法的進行參數估計的時候,因爲其嚴格的條件限制,樸素貝葉斯分類器的相關參數就已經很明確了,或者說是有固定的形式了(此處能夠參考:http://www.javashuo.com/article/p-psocyhws-g.html),它能夠直接經過統計每一個特徵的邏輯發生比來當作權重。;而邏輯迴歸求得的參數並無明確的形式(由於他沒有樸素貝葉斯那麼嚴格的限制條件),能夠經過梯度降低法等優化方法,獲得特徵之間的耦合信息,從而獲得相應的權重(參數)。優化

3.更直觀的來看,邏輯迴歸是經過學習超平面來實現分類,而樸素貝葉斯經過考慮特徵的機率來實現分類。spa

4.邏輯迴歸在有相關性feature上面學習獲得的模型在測試數據的performance更好。也就是說,邏輯迴歸在訓練時,無論特徵之間有沒有相關性,它都能找到最優的參數。而在樸素貝葉斯中,因爲咱們給定特徵直接相互獨立的嚴格設定,在有相關性的feature上面學習到的權重同時變大或變小,它們之間的權重不會相互影響。從這方面來講,若是可以在對參數較好地控制,在損失項方面處理的很好的話,邏輯迴歸相對樸素貝葉斯在應用時更不會限制在特徵工程(feature engineering)上面。(簡言之,邏輯迴歸對特徵工程的要求相對樸素貝葉斯更低)orm

5.樸素貝葉斯的好處是沒有優化參數這一步(由2可知),經過訓練數據能夠直接獲得一個counting table,這些有助於並行化。

6.Andrew Ng和Michael Jordan在2001年發了一篇NIPS短文《 On Discriminative vs. Generative classifiers: A comparison of logistic regression and naive Bayes 》,他們把這兩個模型用在各類數據集上面進行測試,最後獲得在小數據上面樸素貝葉斯分類器能夠取得更好的效果,隨着數據的增多、特徵維度的增大,邏輯迴歸的效果更好。這也是由於樸素貝葉斯是生成模型,在有prior的狀況下模型可以把數據fit的更好,而邏輯迴歸屬於判別模型,目標驅動化,不去建模聯合機率,經過訓練數據直接預測輸出,所以在數據足夠多的狀況下可以獲得更好一些的效果。

三.二者的相同點

1.二者都利用了極大似然法進行參數估計。雖然似然函數的目標不一樣。

2.邏輯迴歸和樸素貝葉斯分類器都是對特徵的線性表達,雖然二者擬合的參數不一樣,前者是W和b後者是先驗機率和似然(參考:http://www.javashuo.com/article/p-psocyhws-g.html)。

3.邏輯迴歸和樸素貝葉斯建模的都是條件機率(後者經過貝葉斯公式獲得) ,對所最終求得的不一樣類的結果有很好的解釋性。而不像SVM,神經網絡這樣解釋性不高。

 

參考:http://sunshiningjiang.github.io/2015/05/08/Comparision-between-Logistic-Regression-and-Naive-Bayes/

   https://www.zhihu.com/question/265995680

相關文章
相關標籤/搜索