了解用于文本分类的朴素贝叶斯

Posted

技术标签:

【中文标题】了解用于文本分类的朴素贝叶斯【英文标题】:Understanding Naive Bayes for text classification 【发布时间】:2015-07-17 00:39:48 【问题描述】:

我熟悉机器学习和朴素贝叶斯,但在我的特征向量是一个词袋的文档分类中,我很难理解如何实现它。

特别是,您如何计算类条件特征似然Pr(word | class)?在许多文本中,我看到以下术语:

右侧是如何实现的?是 c 类中出现特征 f 的文档数除以 c 类文档数吗?

例如,假设您有 10 个文档,其中 7 个是 C1 类,3 个是 C2 类。其中一些出现了“惊人”这个词:

C1: ...
C1: ... amazing ...
C1: ...
C1: ... amazing ...
C1: ... amazing ...
C1: ...
C1: ...
C2: ...
C2: ... amazing ...
C2: ...

看起来像:

计数(惊人的,C1)= 3 计数(惊人,C2)= 1 计数(C1) = 7 计数(C2) = 3

Pr(amazing|C1) = 3/7 和 Pr(amazing|C2) = 1/3 吗?


2015 年 5 月 7 日编辑

我在“Introduction to Information Retrieval”一书的第 13 章 (PDF) 中遇到了关于用于文本分类的朴素贝叶斯的讨论。类条件特征概率有不同的表述:

所以,这里的 count(word, class) 看起来是类中文档中 words 的总出现次数,而不是类中文档的数量。

同样,count(class) 是类中文档中单词的总数,而不是类中的文档数。

P(feature|class) 的哪个公式是首选?

【问题讨论】:

您的两个问题的答案都是肯定的。 【参考方案1】:

是的,您的解释和示例是正确的。 Count(f_i,c_i) 考虑 f_i 和 c_i 同时发生时的所有此类事件,即具有 f_i 特征的 c_i 类的所有文档(在这种情况下存在单词,但通常它可以存在至少 2 个单词或其他)。

实际上,引用的方程是一个最大似然估计,完整的描述和证明请参见论文The Naive Bayes Model, Maximum-Likelihood Estimation, and the EM Algorithm。

更新:正如同一章所述(参见第 13.3 节),第一个估计基于伯努利模型,而第二个估计对应于多项式模型。伯努利模型更适用于短文档和“对噪声特征特别敏感”,再次参见本书或论文A comparison of eve nt models for Naive Bayes text classification(也摘自本书,第 13.7 节)

【讨论】:

我遇到了类条件词概率的不同表述。请参阅我从 5/7 开始的编辑。你能评论一下吗? 我已经更新了答案;简而言之——你应该继续阅读那一章)

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

朴素贝叶斯算法

实现用于文本分类的朴素贝叶斯的对数可能性

NLP实战系列朴素贝叶斯文本分类实战

译文:朴素贝叶斯算法简介(Python和R中的代码)

21丨朴素贝叶斯分类(下):如何对文档进行分类?

朴素贝叶斯文本分类在一个类别中失败。为啥? [关闭]