美文网首页
朴素贝叶斯分类器

朴素贝叶斯分类器

作者: zidea | 来源:发表于2020-10-10 22:33 被阅读0次

概率分类问题

通常都是先从线性回归入手,然后 logistic,接下来是 SVM 这样线性模型,这些模型都属于判别模型,通过训练得到用于判别数据属于哪一个类别的判别器(分割界面)当对机器学习有一定了解才会开始统计模型。在神经网络模型中都是在给定数据条件根据数据找到最优解,

  • 有两个类别 \omega_1,\omega_2 样本 X =\{x_1,x_2,\cdots,x_n\}
  • x \in \omega_1 还是 x \in \omega_2

建立好模型后,预测做的工作就是计算数据分别属于不同类别的概率,而且需要满足这些概率求和为 1
P(\omega_1|x)P(\omega_2|x)
P(\omega_1|x) + P(\omega_2|x) = 1

然后根据预测结果,就可以判断 x 属于哪一个类别。
\begin{cases} P(\omega_1|x) > P(\omega_2|x) & x \in \omega_1 \\ P(\omega_2|x) > P(\omega_1|x) & x \in \omega_2 \end{cases}

利用概率中的贝叶斯公式
p(A|B) = \frac{P(B|A)P(A)}{P(B)}

可以把求解概率问题进行转换给定类别出现数据的可能性的问题。
p(\omega_1|x) = \frac{p(x,\omega_1)}{p(x)} = \frac{p(x|\omega_1)p(\omega_1)}{p(x)}

p(\omega_2|x) = \frac{p(x,\omega_2)}{p(x)} = \frac{p(x|\omega_2)p(\omega_2)}{p(x)}

然后上面带入上面不等式得到如下不等式,这里解释一下
p(x|\omega_1)p(\omega_1) > p(x|\omega_2)p(\omega_2)

X \{x_1,x_2, \cdots x_m \}

垃圾邮件问题

大多数教程或者书籍谈到贝叶斯分类器,都会举垃圾邮件分类问题,因为垃圾邮件过滤很早之前就已经出现了,估计当时可能就是用到了贝叶斯分类器来做的这个问题。

先用数学语言对这个问题进行说明,这里 d_i 表示邮件样本,每一个样本是由邮件中出现词作为样本 X 维度,是否为垃圾邮件作为类别,也就是两个类别,是垃圾邮件和不是垃圾邮件。
D = \{d_1,d_2,\cdots,d_n\}
d \in C_1 or d \in C_2
这里用C_1C_2分别代表垃圾邮件的类别。用w_i表示邮件中出现的单词,这里有一个问题,就是这些在邮件中出现的词是不是相互独立的? 如果是搞语言模型的在隐含马尔可夫链和循环神经网络中当然认为这些词不是相互独立的而是前后相互关系,但是在垃圾邮件问题上,我们是可以忽略掉这些词他们之间关系认为他们是相互独立的。
d = \left[w_1,w_2,\cdots,w_p \right]^T

我们面对这个问题就是要解决当我们看到一封邮件就会给出该邮件的类别,是垃圾邮件还不是垃圾邮件。有关如何建立数学模型来描述这个问题,之前已经解释过了这里就不不再赘述了。
\begin{cases} p(C_1|d) > p(C_2|d) \, d \in C_1\\ p(C_2|d) > p(C_1|d) \, d \in C_2 \end{cases}

其实我们是可以通过贝叶斯公式将上面概率 (C|d) 转换为(d|C) 好我们现在设定目标函数,当确定邮件的类别后这些词出现概率的连乘最大值。
p(d|C_1) = p(\{w_1,w_2,\cdots,w_p\}|C_1) = \prod_{i=1}^n p(w_i|C_1)

p(d|C_2) = p(\{w_2,w_2,\cdots,w_p\}|C_2) = \prod_{i=1}^n p(w_i|C_2)

p(w|C_j)_{j=1,2} = \frac{count(w,c_j)}{\sum_{w \in v} count(w,c_j)}

p(C_1)p(d|C_1) > p(C_2)|p(d|C_2)

相关文章

网友评论

      本文标题:朴素贝叶斯分类器

      本文链接:https://www.haomeiwen.com/subject/yocspktx.html