我正在处理一个涉及对大型文本数据库进行分类的问题。这些文字非常简短(每个字母要3-8个字),我希望将它们分类为10-12个类别。对于功能,我只是使用每个单词的tf–idf频率。因此,特征的数量大约等于文本中整体出现的单词的数量(我要删除停用词和其他一些单词)。
在尝试使用模型时,我有以下两个想法:
朴素贝叶斯(可能是sklearn多项朴素贝叶斯实现)
支持向量机(在训练中使用随机梯度下降,也是sklearn的实现)
我已经建立了两个模型,目前正在比较结果。
每个模型的理论利弊是什么?为什么其中一种方法可以更好地解决此类问题?我是机器学习的新手,所以我想了解的是为什么人会做得更好。
非常感谢!
最佳答案
从“功能”的角度来看,您正在构建的模型之间的最大区别在于,朴素贝叶斯将它们视为独立的,而SVM则在一定程度上看待它们之间的交互作用,只要您使用的是非线性核(高斯,rbf,poly等)。因此,如果您有交互作用,并且考虑到您的问题,很可能会这样做,那么SVM会更好地捕获它们,从而更好地完成您想要的分类任务。
机器学习研究人员和从业者的共识是,在几乎所有情况下,支持向量机均优于朴素贝叶斯。
从理论上讲,很难比较这两种方法。一种是本质上的概率,而第二种是几何。但是,要想出一个简单的函数,其中一个函数之间存在变量,而朴素贝叶斯无法捕获这些函数(y(a,b)= ab),因此我们知道它不是一个通用逼近器。不过,具有适当内核选择的SVM(2/3层神经网络也是如此),因此从该角度来看,该理论与实际相符。
但是最终归结为您问题的性能-您基本上希望选择最简单的方法,该方法将为您的问题提供足够好的结果并具有足够的性能。例如,仅Naive Bayes便可以解决垃圾邮件检测。通过增强等增强的类似方法对图像中的人脸进行识别。
关于machine-learning - 朴素贝叶斯vs.SVM用于文本数据分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35360081/