我正在研究一个涉及对大型文本数据库进行分类的问题。这些文本很短(每个单词考虑3-8个单词(,我希望将它们分为10-12个类别。对于功能,我只是使用每个单词的tf-idf频率。因此,特征的数量大致等于文本中整体出现的单词数量(我正在删除停用词和其他一些单词(。
在尝试提出一个要使用的模型时,我有以下两个想法:
- 朴素贝叶斯
- (可能是sklearn多项式朴素贝叶斯实现(
- 支持向量机(在训练中使用随机梯度下降,也是sklearn实现(
我已经构建了这两个模型,目前正在比较结果。
每种模型的理论优缺点是什么?为什么其中之一可能更适合此类问题?我是机器学习的新手,所以我想了解的是为什么一个人可能会做得更好。
非常感谢!
从"特征"的角度来看,您正在构建的模型之间的最大区别在于,朴素贝叶斯将它们视为独立的,而 SVM 在一定程度上查看它们之间的相互作用,只要您使用非线性核(高斯、rbf、poly 等(。因此,如果您有交互,并且考虑到您的问题,您很可能会这样做,那么 SVM 将更好地捕获这些交互,因此更好地处理您想要的分类任务。
ML研究人员和从业者的共识是,在几乎所有情况下,SVM都比朴素贝叶斯更好。
从理论的角度来看,比较这两种方法有点困难。一个本质上是概率性的,而第二个是几何性的。然而,很容易想出一个函数,其中变量之间存在依赖关系,这些变量不是被朴素贝叶斯(y(a,b( = ab(捕获的,所以我们知道它不是一个通用逼近器。但是,正确选择内核的 SVM 是(2/3 层神经网络也是如此(,因此从这个角度来看,该理论与实践相匹配。
但最终它归结为问题的性能 - 你基本上想选择最简单的方法,这将为你的问题提供足够好的结果,并具有足够好的性能。例如,垃圾邮件检测已经由朴素贝叶斯解决。通过类似的方法在图像中进行人脸识别,增强功能等。
- 支持向量机 (SVM( 更擅长全长内容。
- 多项朴素贝叶斯(MNB(更擅长片段。
对于片段,MNB 比对于较长的文档更强大。虽然(吴和乔丹,2002(表明NB优于SVM/logistic回归(LR(与很少的训练案例,MNB也更适合短文档。当 SVM 有超过 30-50 个训练案例时,它通常会击败 NB,我们表明,即使训练集相对较大(9k 个案例(,MNB 在片段上仍然更好。
简而言之,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年。