我们如何使用TFIDF向量与多项式朴素贝叶斯?

时间:2017-04-05 16:55:48

标签: scikit-learn tf-idf naivebayes

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

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

Bernoulli naive-bayes已经出局了,因为我们的功能不再是二进制了 似乎我们也不能使用Multinomial naive-bayes,因为这些值是连续的而不是分类的。

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

关于MultionomialNB的sci-kit学习文档建议​​如下:

  

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

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

TFIDF值如何使用此公式?

1 个答案:

答案 0 :(得分:1)

从技术上讲,你是对的。 (传统)多项式N.B. model将文档 D 视为词汇量大小的特征向量 x ,其中每个元素 xi 是术语 i的计数我的文件 D 。根据定义,此向量 x 遵循多项分布,从而导致MNB的特征分类功能。

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

  

TFIDF值如何使用此公式?

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

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