1. 程式人生 > >邏輯迴歸與樸素貝葉斯的區別

邏輯迴歸與樸素貝葉斯的區別

面試被問到了,把網上有的都收集到一起

原文地址:

http://blog.csdn.net/cjneo/article/details/45167223

http://www.tuicool.com/articles/yUvQn2B

總結起來,有以下幾點不同:


(1)     Naive Bayes是一個生成模型,在計算P(y|x)之前,先要從訓練資料中計算P(x|y)和P(y)的概率,從而利用貝葉斯公式計算P(y|x)。


         Logistic Regression是一個判別模型,它通過在訓練資料集上最大化判別函式P(y|x)學習得到,不需要知道P(x|y)和P(y)。


(2)    Naive Bayes是建立在條件獨立假設基礎之上的,設特徵X含有n個特徵屬性(X1,X2,...Xn),那麼在給定Y的情況下,X1,X2,...Xn是條件獨立的。


Logistic Regression的限制則要寬鬆很多,如果資料滿徐條件獨立假設,Logistic Regression能夠取得非常好的效果;當資料不滿度條件獨立假設時,Logistic Regression仍然能夠通過調整引數讓模型最大化的符合資料的分佈,從而訓練得到在現有資料集下的一個最優模型。


 (3)    當資料集比較小的時候,應該選用Naive Bayes,為了能夠取得很好的效果,資料的需求量為O(log n)


          當資料集比較大的時候,應該選用Logistic Regression,為了能夠取得很好的效果,資料的需求量為O( n)


    Naive Bayes運用了比較嚴格的條件獨立假設,為了計算P(y|x),我們可以利用統計的方法統計資料集中P(x|y)和P(y)出現的次數,從而求得P(x|y)和P(y)。因而其所需的資料量要小一些,為O(log n).


     Logistic Regression在計算時,是在整個引數空間進行線性搜尋的,需要的資料集就更大,為O( n)

相同點

Logistic regression和Naive bayes都是對特徵的線性表達QQ截圖20150509194002

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屬於生成模型,目標驅動化,不去建模聯合概率,通過訓練資料直接預測輸出,因此在資料足夠多的情況下能夠得到更好一些的效果。