我们如何使用带有多项朴素贝叶斯的 TFIDF 向量?

Posted

技术标签:

【中文标题】我们如何使用带有多项朴素贝叶斯的 TFIDF 向量?【英文标题】:How can we use TFIDF vectors with multinomial naive bayes? 【发布时间】:2017-08-31 10:16:06 【问题描述】:

假设我们使用 TFIDF 变换将文档编码为连续值特征。

我们现在如何将其用作朴素贝叶斯分类器的输入?

Bernoulli naive-bayes 已淘汰,因为我们的特征不再是二元的。 似乎我们也不能使用多项式朴素贝叶斯,因为这些值是连续的而不是分类的。

作为替代方案,是否适合使用高斯朴素贝叶斯代替?在高斯分布假设下,TFIDF 向量是否可能保持良好状态?

MultionomialNB 的 sci-kit learn 文档建议如下:

多项式朴素贝叶斯分类器适用于分类 具有离散特征(例如,文本分类的字数)。 多项分布通常需要整数特征计数。 但是,在实践中,tf-idf 等小数计数也可能有效。

MultinomialNB 是不是根本不可能使用小数值? 据我了解,似然函数本身假设我们正在处理离散计数 (since it deals with counting/factorials)

TFIDF 值如何与这个公式一起使用?

【问题讨论】:

【参考方案1】:

从技术上讲,您是对的。 (传统的)多项式 N.B.模型将文档 D 视为词汇大小的特征向量 x,其中每个元素 xi 是术语 i 的计数em> 我记录了 D。根据定义,这个向量x服从多项分布,得到MNB的特征分类函数。

当使用 TF-IDF 权重而不是术语计数时,我们的特征向量(很可能)不再遵循多项分布,因此分类函数在理论上不再有充分的根据。 然而,事实证明 tf-idf 权重而不是计数效果更好(很多)。

TFIDF 值如何与这个公式一起使用?

以完全相同的方式,除了特征向量 x 现在是 tf-idf 权重的向量而不是计数。

您还可以查看在 sklearn tfidf-vectorizer 中实施的次线性 tf-idf 加权方案。在我自己的研究中,我发现这个表现更好:它使用术语频率的对数版本。这个想法是当一个查询词在 doc 中出现 20 次时。一个和 1 次在文档中。 b,博士。 a 应该(可能)不被认为是重要的 20 倍,但更可能是 log(20) 倍。

【讨论】:

如果使用对数版本的频率,那会改变 tf-idf 的域,对吗?如果没有对数缩放,tf-idf 值必须 >= 0,但 log-tf 必须

以上是关于我们如何使用带有多项朴素贝叶斯的 TFIDF 向量?的主要内容,如果未能解决你的问题,请参考以下文章

Python - 带有朴素贝叶斯的 SelectFromModel

Lucene 项向量多元贝叶斯模型期望最大化

基于朴素贝叶斯的乳腺癌数据集分类

贝叶斯方法—高斯,多项式,伯努利朴素贝叶斯分类

朴素贝叶斯的理解

朴素贝叶斯概率模型在使用前可以进行特征融合吗