machine-learning - 朴素贝叶斯与 SVM 用于分类文本数据

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

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

在尝试提出一个可以使用的模型时,我有以下两个想法:

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

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

每种模型理论上的优缺点是什么?为什么其中一个可能更适合解决此类问题?我是机器学习的新手,所以我想了解的是为什么人们可能会做得更好。

非常感谢!

最佳答案

从“特征”的角度构建的模型之间最大的区别在于,朴素贝叶斯将它们视为独立的,而 SVM 在一定程度上考虑它们之间的相互作用,只要您使用非线性核(Gaussian、rbf、poly 等)。因此,如果您有交互,并且考虑到您的问题,您很可能会这样做,那么 SVM 将更擅长捕获这些交互,从而更好地完成您想要的分类任务。

机器学习研究人员和实践者的共识是,在几乎所有情况下,SVM 都优于朴素贝叶斯。

从理论角度来看,比较这两种方法有点困难。一种本质上是概率性的,而第二种则是几何性的。然而,很容易提出一个函数,其中变量之间存在依赖关系,而朴素贝叶斯 (y(a,b) = ab) 未捕获这些变量之间的依赖关系,因此我们知道它不是通用逼近器。不过,正确选择内核的 SVM(2/3 层神经网络也是如此),因此从这个角度来看,理论与实践相匹配。

但最终取决于问题的性能 - 您基本上希望选择最简单的方法,该方法将为您的问题提供足够好的结果并且性能足够好。例如,众所周知,垃圾邮件检测只需朴素贝叶斯即可解决。通过类似的方法进行图像中的人脸识别,并通过增强等增强。

关于machine-learning - 朴素贝叶斯与 SVM 用于分类文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35360081/

相关文章:

python - 使用Python迭代列中的元素以进行预处理

excel - 在 Excel 中编写 ANN : VBA Type Mismatch Error

python - 为什么我的 Python RandomForestRegressor 不能准确预测训练集数据?

python - 我应该如何修改SVM方法的测试数据才能正确使用 `precomputed`核函数?

hash - MD5 等哈希函数有何独特之处?

tensorflow - tf.dataset、多个路径输入以及每批映射以加载图像

plot - 模型完成后的 Keras 图解释

scikit-learn - Scikit Learn feature_selection 给出不同的 p 值

algorithm - A* 算法检查图 k3 是否自由

c++ - C++ 也可以解释而不是编译吗?