观点1:
http://blog.csdn.net/cjneo/article/details/45167223
1:朴素贝叶斯是生成模型,利用先验概率,条件概率,最有得到后验概率分布。
LR是判别模型,通过在训练数据集上最大化P(y|x)判断,不需要知道先验概率和条件概率
2:朴素贝叶斯 基于特征相互独立的假设,而LR则没有此假设,如果数据独立LR可以获得较好的模型,如果数据不满足条件独立假设,则可以调整参数,获得较好的模型。
3:数据量较少的时候,可以使用朴素贝叶斯法,因为先验概率和条件概率都是通过统计得到的,可以在O(log(n))个样本得到。对于LR,需要在整个参数空间进行线性搜索,需要O(n)个样本。
观点二:
相同点
Logistic regression和Naive bayes都是对特征的线性表达 # ,只是区别在于两者所fit的参数不同。
不同点
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属于生成模型,目标驱动化,不去建模联合概率,通过训练数据直接预测输出,因此在数据足够多的情况下能够得到更好一些的效果。
作者: Yong Jiang
文章出处: http://sunshiningjiang.github.io/