训练朴素贝叶斯分类器

Posted

技术标签:

【中文标题】训练朴素贝叶斯分类器【英文标题】:Training Naive Bayes Classifier 【发布时间】:2015-06-25 10:55:42 【问题描述】:

我正在使用简单的词袋概念开发一个朴素贝叶斯分类器。我的问题是在朴素贝叶斯或任何其他机器学习场景 'training' 中,分类器很重要。但是,当我已经拥有各种类别的 bag_of_words 时,如何。

【问题讨论】:

看看this tutorial @TimBiegeleisen 我已经阅读了教程。但一个问题仍然存在。假设我有正面和负面的两个班级。现在在我的正类训练数据集中,我没有。积极的字符串和消极的类我也有一个没有。负弦。但在肯定字符串中,并非所有单词都是肯定的。问题就出现了。当我尝试从他们那里取出单词并将它们放入积极的 bag_of_words 时,还会添加一些否定词,这会妨碍以后的分类。 @Pritam 是单词的正面还是负面倾斜取决于上下文?如果是这样,您需要将上下文作为特征添加到每个样本(单词)的 X 向量中。不然分类器怎么区分? 【参考方案1】:

The Stanford IR book 很好地解释了朴素贝叶斯分类器的工作原理,他们以文本分类为例。 The Wikipedia article还给出了详细的理论描述和一些具体的例子。

简而言之,您计算每个类中每种单词类型的出现次数,然后通过文档数进行归一化以获得单词给定类 p(w|c) 的概率。然后,您使用贝叶斯规则来获得给定文档 p(c|doc) = p(c)*p(doc|c) 的每个类别的概率,其中给定类别的文档的概率是概率的乘积给定类 p(doc|c) = Π(w in doc) p(w|c)。这些概率在类之间进行归一化之前变得非常小,因此您可能需要取对数并将它们相加以避免下溢错误。

【讨论】:

先生,在分析字符串或文档时,是否有任何拒绝标准可以拒绝朴素贝叶斯并使用 svm 或最大熵分类器来代替?【参考方案2】:

当我已经拥有各种类别的 bag_of_words 时如何训练朴素贝叶斯分类器。

一般来说,你做的是这样的:

    将你的词包分成两个随机子集,调用一个training另一个testtraining 子集上训练分类器 通过针对 test 子集运行分类器来验证分类器的准确性

“训练”分类器很重要

确实——这就是您的分类器学习区分不同类别的单词的方式。

【讨论】:

先生,在分析字符串或文档时,是否有任何拒绝标准可以拒绝朴素贝叶斯并使用 svm 或最大熵分类器来代替?

以上是关于训练朴素贝叶斯分类器的主要内容,如果未能解决你的问题,请参考以下文章

使用朴素贝叶斯分类器进行意见挖掘

为啥训练我的朴素贝叶斯分类器会占用这么多内存?

如何生成混淆矩阵并找到朴素贝叶斯分类器的错误分类率?

朴素贝叶斯-商品评论情感分析

SciKit-learn - 训练高斯朴素贝叶斯分类器

朴素贝叶斯