1. 程式人生 > >邏輯迴歸 和 樸素貝葉斯 兩者間的區別

邏輯迴歸 和 樸素貝葉斯 兩者間的區別

在有監督學習演算法用做分類問題時,有兩種演算法在實際中應用廣泛,它們分別是Logistic regression和Naive bayes。今天我們討論一下這兩類演算法在分類問題上面的異同點,以及它們的優缺點。

1.兩類演算法介紹

Logistic Regression

QQ截圖20150509193641

QQ截圖20150509193547

Naive Bayes

Naive Bayes模型是說我有一個很強的假設,這個假設是在y給定的條件下,xi相互獨立,這個假設看上去非常stupid,但是在實際應用(比如垃圾郵件檢測)中能夠work非常好。這一方面也驗證了Occam’s Theory: Simple model is better。繼續主題,既然x

i相互獨立,我們想對測試資料x^進行預測,可以通過如下方法:

QQ截圖20150509193556

在這裡,QQ截圖20150509193855可以通過條件獨立性寫成:

QQ截圖20150509193602

而分母可以通過聯合概率寫成:

QQ截圖20150509193613

QQ截圖20150509193922

好的,下面我們開始分析Logistic Regression和Naive Bayes的異同點。

2.兩者的異同點

相同點

  • Logistic regression和Naive bayes都是對特徵的線性表達QQ截圖20150509194002,只是區別在於兩者所fit的引數不同。
  • Logistic regression和Naive bayes建模的都是條件概率QQ截圖20150509194012,對所最終求得的不同類的結果有很好的解釋性。而不像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屬於生成模型,目標驅動化,不去建模聯合概率,通過訓練資料直接預測輸出,因此在資料足夠多的情況下能夠得到更好一些的效果。