美文网首页贝叶斯
ML之朴素贝叶斯

ML之朴素贝叶斯

作者: yangOvOyang | 来源:发表于2018-12-26 15:32 被阅读30次

    1.问题描述

    给定一个数据集,数据集中所有的样本点X都对应一个类标签Y,其中随机变量X \sqsubseteq \mathbb{R}^n,随机变量Y \in \{c_1, c_2, ..., c_K \}

    现任给一个样本点x,朴素贝叶斯将分别求出x属于每个类别的概率P(Y=c_k|X=x),k=1, 2, ..., K,然后选择对应概率最大的c_k作为该样本点的类别

    2.条件概率

    根据条件概率,有

    P(A|B)=\frac {P(AB)} {P(B)} = \frac {P(A)P(B|A)} {P(B)} \qquad (1)

    这里我们将Y=c_k看成事件A,将X=x视作事件B,那么P(Y=c_k|X=x)可变形为

    P(Y=c_k|X=x)=\frac {P(Y=c_k)P(X=x|Y=c_k)} {P(X=x)} \qquad (2)

    3.全概率公式

    根据全概率公式,有
    \begin{aligned} P(B) & =P(BA_1)+P(BA_2)+...+P(BA_n) \\ \\ & = P(A_1)P(B|A_1)+P(A_2)P(B|A_2)+...+P(A_n)P(B|A_n) \\ \\ & = \sum_{i=1}^n{P(A_i)P(B|A_i)} \qquad (3) \end{aligned}

    这里的事件A被拆分成n个独立事件

    于是我们将(2)式中的分母按照全概率公式展开,得到

    \begin{aligned} P(Y=c_k|X=x)=\frac {P(Y=c_k)P(X=x|Y=c_k)} {\sum_{k=1}^{K} {P(Y=c_k)P(X=x|Y=c_k)}} \qquad (4) \end{aligned}

    观察(4)式发现,推导到这一步,要计算样本点x的类别,其实就只需要计算P(Y=c_k)P(X=x|Y=c_k)

    4. 朴素贝叶斯为什么“朴素”?

    先将P(Y=c_k)放一放,来看看如何计算P(X=x|Y=c_k)。由于数据集中的x是一个n维特征向量,所以

    P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)}, X^{(2)}=x^{(2)}, ..., X^{(n)}=x^{(n)}|Y=c_k) \qquad (5)

    如果假设特征向量x的任意一个特征x^j的取值有s_j种,j = 1,2, ..., ns_j=1,2,3,...,类别标签c_k又有K种,即k=1,2,...,K。那么要直观去计算P(X=x|Y=c_k)需要K\prod_{i=1}^n {s_i}个参数,和决策树一样,实际情况不可能有这么多数据。

    为了极大地简化计算,朴素贝叶斯算法在这里做了最为朴素最为简单的假设:特征条件独立假设。这就是朴素一词的由来[1]。即假设所有特征之间是独立并且同等重要的。

    根据特征条件独立假设,(5)式便可化简为:

    \begin{aligned} P(X=x|Y=c_k) & = P(X^{(1)}=x^{(1)}, X^{(2)}=x^{(2)}, ..., X^{(n)}=x^{(n)}|Y=c_k) \\ \\ & = P(X^{(1)}=x^{(1)}|Y=c_k)P(X^{(2)}=x^{(2)}|Y=c_k) \cdots P(X^{(n)}=x^{(n)}|Y=c_k) \\ \\ & = \prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k) \qquad (6) \end{aligned}

    将(4)(6)组合,得朴素贝叶斯最终的计算公式:

    \begin{aligned} y\_ & = f(x)\\ \\ & = argmax_{c_k} P(Y=c_k|X=x) \\ \\ & = \frac {P(Y=c_k)P(X=x|Y=c_k)} {\sum_{k=1}^{K} {P(Y=c_k)P(X=x|Y=c_k)}} \\ \\ & = \frac {P(Y=c_k) \prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)} {\sum_{k=1}^{K} P(Y=c_k) \prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k) } \qquad (7) \end{aligned}

    到这里求解P(Y=c_k|X=x)就只需要求解P(Y=c_k)P(X^{(j)}=x^{(j)}|Y=c_k)就可以了。

    5.最大似然估计

    在给定数据集的基础上,使用最大似然估计来求解P(Y=c_k)P(X^{(j)}=x^{(j)}|Y=c_k),假设训练集的数量为N,借用指示函数I(expression)来统计满足expression的个数如下所示:

    \begin{aligned} P(Y=c_k) & = \frac {\sum_{i=1}^N I(y_i=c_k)} {N} \qquad k=1,2,3, ..., K \qquad (7)\\ \\ P(X^{(j)}=a_{jl}|Y=c_k) & = \frac {\sum_{i=1}^N I(x_i^{(j)}=a_{jl}, y_i=c_k)} {\sum_{i=1}^N I(y_i=c_k)} \qquad l = 1,2, ..., s_j \qquad (8) \end{aligned}

    至此,朴素贝叶斯已经可以直接计算出任一样本点x属于各个类别的概率了,即在给定样本点x的情况下,类别标签为c_k的概率P(Y=c_k|X=x)


    1. 之前在bilibili上看到一个朴素贝叶斯的讲解视频,讲解者一开始被提问“为何叫朴素”时竟然说自己也不清楚反正就是这么叫的,着实让人心寒。

    相关文章

      网友评论

        本文标题:ML之朴素贝叶斯

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