朴素贝叶斯算法的具体实现

朴素贝叶斯算法的具体实现

输入空间

  1. 训练数据:$T = \lbrace (x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N) \rbrace$,

    其中,$x_i=(x^{(1)},x^{(2)},\cdots,x^{(n)})^T$,$x_i^{(j)}$是第$i$个样本的第$j$个特征,$x_i^{(j)} \in \lbrace
    a_{j1},a_{j2}, \cdots, a_{jS_j} \rbrace$, $a_{jl}$是第$j$个特征可能取到的第$l$个值,$j=1,2,\cdots,n$,$l=1,2,\cdots,S_j$,$y
    \in \lbrace c_1, c_2, \cdots ,c_K \rbrace$;

    • 训练数据中,共有$N$个数据样本;
    • 每个数据共有$n$个特征,即$n$维;
    • 第$j$个维度的取值可能有$S_j$种;
    • 最终可能的分类有$K$种。
  2. 实例:$x$;

输出空间

实例$x$的分类

实现

  1. 计算先验概率机条件概率:
    $$
    P(Y = c_k) = \frac{\sum_{i=1}^N I (y_i = c_k)}{N}, k = 1,2,\cdots, K \tag{1}
    $$

I_A(x) = \left \lbrace \begin{aligned}
1, \qquad if \quad x \in A; \\
0, \qquad if \quad x \not\in A;
\end{aligned}
\right .
$$

  • 上述公式其实为一个统计公式,即,统计$T$中,$Y = c_k$的个数,然后进行归一化。使得:
    $$
    \sum_k P(Y=c_k) = 1
    $$

$$
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)} \\
j = 1,2,\cdots,n; l = 1,2,\cdots,S_j; k = 1,2,\cdots, K
\tag{2}
$$

  • 对于公式$(2)$的解释为:

  • 我们针对于公式$(1)$统计的每种分类情况,在针对该分类的条件,统计样本$x$的每个维度的个数,并将其做归一化,作为每一个维度的条件概率,并且保证:

$$
\sum_j P(X^{(j)} = a_{jl} | Y = c_k) = 1
$$

  1. 对于给定的实例 $x = (x^{(1)},x^{(2)},\cdots,x^{(n)})^T$,计算:

$$
P(Y = c_k) \prod_{j=1}^n P(X^{(j)} = x^{(j)}|Y = c_k), k = 1,2,\cdots, K
\tag{3}
$$

  • 上述公式$(3)$是朴素贝叶斯分类器(如下面的公式)的分子:

$$
y = f(x) = \arg\min_{c_k} \frac{P(Y = c_k) \prod_j P(X^{(j)} | Y = c_k)}{\sum_k P (Y=c_k) \prod_j P(X^{(j)} =x^{(j)} |
Y = c_k)}
\tag{3.1}
$$

  • 由于朴素贝叶斯分类器对于所有的$class$即对于所有的$c_k$来说,分母都一样,所以,我们计算分子就好了。
  1. 根据公式$(3)$确定$x$的分类:

$$
y = \arg\min_{c_k} P(Y = c_k) \prod_j P(X^{(j)} | Y = c_k) \tag{4}
$$

朴素贝叶斯算法的具体实现

https://www.borgor.cn/posts/35c103cf.html

作者

Cyrusky

发布于

2020-02-09

更新于

2024-11-18

许可协议

评论