使用朴素贝叶斯时训练模型

时间:2020-03-17 14:32:32

标签: python machine-learning sentiment-analysis naivebayes

我有一个电影评论数据集,我想对此进行情感分析。

我已经使用逻辑回归实现了这一点。以下是我在此过程中采取的步骤:

  1. 从数据集中的每一行中删除停用词和标点符号。
  2. 将数据分为训练,验证和测试集。
  3. 从训练集中创建单词词汇。
  4. 添加了词汇表中的每个单词作为功能。如果此单词在当前行中,则将其TF-IDF值设置为功能的值,否则将0设置为该值。
  5. 训练模型。在训练过程中,使用S形函数计算假设,并使用交叉熵损失作为成本函数。然后使用梯度下降法更新模型的权重。
  6. 使用验证集调整超参数
  7. 使用测试集评估模型

现在,我需要使用朴素贝叶斯实现相同的事情,而我对于如何解决此问题感到困惑。我认为前4个步骤将是相同的。但是使用朴素贝叶斯的训练步骤是什么?在这种情况下,损失函数和成本函数是什么?在哪里使用贝叶斯定理计算条件概率?以及如何更新权重和偏见?

我在网络上搜索了很多资源,而我只发现了使用sklearn并带有model.fit和model.predict的实现,因此我很难弄清其背后的数学以及如何实现使用香草python来实现。

1 个答案:

答案 0 :(得分:0)

对于Logistic回归或SVM,该模型正在尝试预测最适合数据的超平面。因此,这些模型将确定weights and biases

    此外,
  1. Naive Bayes是一种概率方法。这完全取决于Bayes' theorem

  2. NB中将有NO个权重和偏差,每个特征将只有CLASS WISE个概率值(即,在文本情况下为words)。

  3. 为避免零概率或处理看不见的数据(文本为words),请使用拉普拉斯平滑。

  4. α被称为平滑因子。这将是NB中的超参数

  5. 使用log来保持数值稳定性。


  • 测试示例:This movie is great

  • 删除停用词后:movie great

  • 从训练数据中,我们已经知道moviegreat类的单词+ve-ve的概率值。请参阅STEP 2

  • great类的{li>

    概率+ve大于great类的-ve概率。对于movie一词,概率值可能几乎相同。 (这在很大程度上取决于您的训练数据。在这里我只是做一个假设)

正类概率= P({movie / + ve)* P(great / + ve)

负类概率= P({movie /-ve)* P(great /-ve)

  • 比较类概率值并返回具有高概率值的值。

PS

如果句子中的单词数很大,则类别值将变得非常小。使用log将解决此问题。

如果训练集中没有单词great,则类概率值为0。因此请使用smoothening factor-α(拉普拉斯平滑)

有关更多详细信息,请参考sk-learn naive bayes