朴素贝叶斯法(Naive Bayes)

本文最后更新于:2023年4月13日 下午

1 简介

朴素贝叶斯法是用来进行分类的一种模型,它利用贝叶斯定理来进行预测,但它有一个假设,就是特征条件全部独立。

对于一个给定的数据集,首先可以根据它的特征计算出输入输出的联合概率分布。然后,对于一个给定的输入,就可以使用贝叶斯定理求出后验概率最大的输出类别。于是,输入就被分类到概率最大的那个输出类别。

2 模型的构建

对于一个训练数据集

T={(x1,y1),(x2,y2),...,(xN,yN)}T = \{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}

其中

y{c1,c2,..,ck}y \in \{c_1,c_2,..,c_k\}

表示了输出的类别。

首先可以通过训练数据算先验概率分布

P(y=ck),  kZ+P(y=c_k),\ \ k \in Z^+

那么条件概率分布就是

P(X=xY=ck)P(X=x|Y=c_k)

由于我们假设所有的特征条件都独立,那么

P(X=xY=ck)=j=1nP(X(j)=x(j)Y=ck)P(X=x|Y=c_k) = \prod_{j=1}^n P(X^{(j)}=x^{(j)}|Y=c_k)

对于离散随机变量来说,它的联合概率分布是

P(X=xY=ck)P(Y=ck)P(X=x|Y=c_k)P(Y=c_k)

现在,使用贝叶斯公式计算后验概率

P(Y=ckX=x)=P(X=xY=ck)P(y=ck)kP(X=xY=ck)P(Y=ck)=P(Y=ck)jP(X(j)=x(j)Y=ck)kP(Y=ck)jP(X(j)=x(j)Y=ck)\begin{aligned} P(Y=c_k|X=x)&= \frac{P(X=x|Y=c_k)P(y=c_k)}{\sum_k P(X=x|Y=c_k)P(Y=c_k)} \\ &= \frac{P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)} \end{aligned}

于是,朴素贝叶斯分类器就可以写成

y=arg maxckP(Y=ck)jP(X(j)=x(j)Y=ck)kP(Y=ck)jP(X(j)=x(j)Y=ck)y = \argmax_{c_k}\frac{P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_kP(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)}

由于分母对所有ckc_k都是相同的,所以函数进一步化简为

y=arg maxckP(Y=ck)jP(X(j)=x(j)Y=ck)y = \argmax_{c_k}P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)

这是朴素贝叶斯分类器的最终函数表达式。

3 朴素贝叶斯分类器的学习策略

3.1 使用极大似然法来估计

对于朴素贝叶斯分类器来说,学习就意味着去计算

P(y=ck),  kZ+P(y=c_k),\ \ k \in Z^+

以及

P(X=xY=ck)P(X=x|Y=c_k)

先验概率的计算很简单,就是某类别出现的个数除以总数

P(y=ck)=i=1NI(yi=ck)NP(y=c_k) = \frac{\sum_{i=1}^NI(y_i=c_k)}{N}

式子中I()I(\cdot)指的是

I(yi=ck)={1    yi=ck0    yickI(y_i=c_k) = \begin{cases} 1 \ \ \ \ y_i=c_k \\ 0 \ \ \ \ y_i\neq c_k \end{cases}

然后是计算条件概率。假设第j个特征x(j)x^{(j)}的取值集合是

{aj1,aj2,...,ajl}\{a_{j1},a_{j2},...,a_{jl}\}

那么条件概率的计算就是

P(X(j)=ajlY=ck)=i=1NI(xi(j)=ajl,yi=ck)i=1NI(yi=ck)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)}

(概率论条件概率计算公式)

3.2 使用贝叶斯估计来估计

(To be continued…)

4 最优化

  1. 计算先验概率和条件概率,公式如上
  2. 对于给定的输入xx,计算全部的

P(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)

  1. 最后,输入x应该属于

y=arg maxckP(Y=ck)jP(X(j)=x(j)Y=ck)y = \argmax_{c_k}P(Y=c_k)\prod_j P(X^{(j)}=x^{(j)}|Y=c_k)

(To be continued…)


朴素贝叶斯法(Naive Bayes)
https://jesseprince.github.io/2022/01/21/machinel/naive_bayes/
作者
林正
发布于
2022年1月21日
许可协议