塞进裤子ヾ(≧O≦)〃嗷~

0%

朴素贝叶斯 机器学习实战

朴素贝叶斯用于文档分类

任务:

给定一段文本,判断属于哪个类别。

在文档分类中,整个文档(如一封电子邮件)是实例,而电子邮件中的某些元素则构成特征。我们可以观察文档中出现的词,并把每个词作为一个特征,而每个词的出现或者不出现作为该特征的值,这样得到的特征数目就会跟词汇表中的词的数目一样多。

我们假设特征之间 相互独立 。所谓 独立(independence) 指的是统计意义上的独立,即一个特征或者单词出现的可能性与它和其他单词相邻没有关系,比如说,“我们”中的“我”和“们”出现的概率与这两个字相邻没有任何关系。这个假设正是朴素贝叶斯分类器中 朴素(naive) 一词的含义。朴素贝叶斯分类器中的另一个假设是,每个特征同等重要

算法:

$P(c_i|W) = \frac{P(W|c_i)*P(c_i)}{P(W)} $

$W$为test文本单词构成的向量,$c_i$表示属于类别i

我们使用上述公式,对每个类计算该值,然后选择概率最大的类别。

于对于每个ci,P(w)是固定的。我们就可以简化为通过比较右边分子值得大小来做决策分类。

$P(c_i)$ 表示属于ci的文档出现的概率=count(属于ci的文档)/count(总文档数)
$ P(W|ci)= p(w0 | ci)p(w1 | ci)p(w2 | ci)…p(wn | ci)$ 朴素,每个特征相互独立
P(w0|ci)wo在ci的文档中出现的次数/ w0在所有文档出现的总次数 错
P(w0|ci)wo在ci的文档中出现的次数/ ci的文档中出现的单词总数 对

  • 1 建立词汇表
  • 2.计算$P(c_i)$和$P(W|c_i)$
  • 3 test时,找到每个test word所对应的$P(w_j|c_i)$,计算P(c_i|W) =$P(c_i)$和$P(W|c_i)$,找到概率最大的类别。

改进

  • 为防止分子太小,使得概率为0,加入$log(P)$

  • 在利用贝叶斯分类器对文档进行分类时,要计算多个概率的乘积以获得文档属于某个类别的概率,即计算 p(w0|1) * p(w1|1) * p(w2|1)。如果其中一个概率值为 0,那么最后的乘积也为 0。为降低这种影响,可以将所有词的出现数初始化为 1,并将分母初始化为 2 (取1 或 2 的目的主要是为了保证分子和分母不为0,大家可以根据业务需求进行更改)。

朴素贝叶斯例子参考
https://blog.csdn.net/c406495762/article/details/77341116

代码:

https://github.com/drawStar/Machine-Learning/blob/master/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%AE%9E%E6%88%98/ch04/day1.py

if help:小手一抖点个广告 or 大手一挥资助一下