使用朴素贝叶斯训练模型

2024-05-17 03:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个电影评论数据集,我想对它进行情绪分析

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

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

现在,我需要使用朴素贝叶斯实现同样的事情,我对如何处理这个问题感到困惑。我假设前4步是相同的。但是,当使用朴素贝叶斯时,训练步骤是什么?在这种情况下,损失函数和成本函数是什么?我在哪里使用贝叶斯定理来计算条件概率?如何更新权重和偏差

我在web上搜索了很多资源,我几乎只找到了使用sklearn with model.fit和model.predict的实现,我很难弄清楚这背后的数学原理,以及如何使用vanilla python实现它


Tags: 数据词汇表函数模型model电影过程评论
1条回答
网友
1楼 · 发布于 2024-05-17 03:21:33

在Logistic回归或支持向量机的情况下,模型试图预测最适合数据的超平面。因此,这些模型将决定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的prob值,这两个词都是+ve&-ve类。请参阅STEP 2

  • 对于+vegreat的Prob将大于对于-vegreat的Prob。对于单词movie,prob值可能几乎相同。(这在很大程度上取决于你的训练数据。这里我只是做一个假设)

positive class prob = P(movie/+ve) * P(great/+ve)

negative class prob = P(movie/-ve) * P(great/-ve)

  • 比较class prob值&;返回具有高prob值的值

附言

If the number of words in the sentence is large in numbers, then the class value would become very very small. Using log would solve this problem.

If the word great wasn't there in the training set, the class prob value would be 0. So use smoothening factor-α (Laplace smoothing)

有关详细信息,请参阅sk-learn naive bayes

相关问题 更多 >