朴素贝叶斯与SVM对文本数据进行分类

时间:2016-02-12 10:21:55

标签: machine-learning scikit-learn theory supervised-learning

我正在研究一个涉及对大型文本数据库进行分类的问题。文本很短(每个3-8个单词),有10-12个类别,我希望对它们进行排序。对于这些功能,我只是使用每个单词的tf-idf频率。因此,特征的数量大致等于文本中整体出现的单词数量(我正在删除停用词和其他一些词。)

在尝试使用模型时,我有以下两个想法:

  • 朴素贝叶斯(可能是sklearn多项式朴素贝叶斯实施)
  • 支持向量机(在训练中使用随机梯度下降,也是sklearn实现)

我已经建立了两个模型,目前正在比较结果。

每种型号的理论优缺点是什么?为什么其中一个可以更好地解决这类问题?我是机器学习的新手,所以我想了解的是为什么可能做得更好。

非常感谢!

2 个答案:

答案 0 :(得分:20)

您使用"功能"建立的模型之间的最大区别观点是Naive Bayes将它们视为独立的,而SVM在一定程度上关注它们之间的相互作用,只要您使用非线性内核(Gaussian,rbf,poly等)。因此,如果您有交互,并且,鉴于您的问题,您很可能会这样做,SVM将更好地捕获这些,因此更好地完成您想要的分类任务。

ML研究人员和从业人员的共识是,几乎在所有情况下,SVM都优于朴素贝叶斯。

从理论的角度来看,比较两种方法有点困难。一个是概率性的,而第二个是几何的。然而,很容易想出一个函数,其中一个人在Naive Bayes没有捕获的变量之间存在依赖关系(y(a,b)= ab),所以我们知道它不是一个通用的逼近。具有适当选择内核的SVM(虽然是2/3层神经网络),但从这个角度来看,理论与实践相符。

但最终归结为你的问题的性能 - 你基本上想要选择最简单的方法,为你的问题提供足够好的结果有一个足够好的表现。例如,只有Naive Bayes可以解决垃圾邮件检测问题。通过类似的方法在图像中进行人脸识别,增强等等。

答案 1 :(得分:3)

  • 支持向量机(SVM)在全长内容方面更胜一筹。
  • 多项式朴素贝叶斯(MNB)在片段方面更胜一筹。

对于片段而言,MNB比较长的文档更强。虽然(吴和乔丹, 2002)表明NB优于SVM / logistic 回归(LR),只有很少的培训案例,MNB对短文件也更好。当SVM超过30-50个训练案例时,SVM通常比NB更好,我们表明即使训练集相对较大(9k例),MNB在片段方面仍然更好。

Inshort,NBSVM似乎是复杂分类文本数据的合适且非常强大的基线。

  

源代码:https://github.com/prakhar-agarwal/Naive-Bayes-SVM

     

参考:http://nlp.stanford.edu/pubs/sidaw12_simple_sentiment.pdf

     

引用:Wang,Sida和Christopher D. Manning。 “基线和双字母:   简单,良好的情感和主题分类。“诉讼程序   计算语言学协会第50届年会:   短文 - 第2卷。计算语言学协会,   2012。

相关问题