朴素贝叶斯及其数学推导

本文介绍了朴素贝叶斯分类器的基本原理及其条件独立性假设,并详细推导了其参数估计过程,包括极大似然估计和贝叶斯估计两种方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、朴素贝叶斯简单介绍

朴素贝叶斯成立的前提是条件独立性假设:分类的特征xix_ixi在类别确定的条件下都是独立的,用公式表示如下:
P(X=xi∣Y=ck)=P(X=xi1,X=xi2,⋯ ,X=xin∣Y=ck)=∏j=1nP(X(j)=xij∣Y=ck) \begin{aligned} P(X=x_i|Y=c_k) &= P(X=x_i^1,X=x_i^2,\cdots,X=x_i^n|Y=c_k) \\ & = \prod_{j=1}^{n}P(X^{(j)}=x_i^{j}|Y=c_k) \end{aligned} P(X=xiY=ck)=P(X=xi1,X=xi2,,X=xinY=ck)=j=1nP(X(j)=xijY=ck)
其中ckc_kck是类别,假设有K个类,n是样本的维度,xix_ixi是输入样本

朴素贝叶斯法表示如下:
y=arg max⁡ckP(Y=ck)∏j=1nP(X(j)=xij∣Y=ck) y=arg\,\max_{c_k}P(Y=c_k) \prod_{j=1}^{n}P(X^{(j)}=x_i^{j}|Y=c_k)y=argckmaxP(Y=ck)j=1nP(X(j)=xijY=ck)

二、贝叶斯决策论

介绍朴素贝叶斯中最大化后验概率的来源
朴素贝叶斯选择0-1损失函数作为评价标准,0-1损失函数表示如下:
L(Y,f(X))={0,Y = f(X)1,Y ≠ f(X) L(Y,f(X))= \begin{cases} 0,& \text{Y = f(X)} \\ 1,& \text{Y $\neq$ f(X)} \end{cases} L(Y,f(X))={0,1,Y = f(X)= f(X)
其中f(X)f(X)f(X)是分类决策函数
期望损失:Rexp(f)=E(L(Y,f(x)))R_{exp}(f)=E(L(Y,f(x)))Rexp(f)=E(L(Y,f(x))),显然对每个样本xxx最小化条件风险,则期望损失最小,下面证明期望损失最小化等价于后验概率最大化:
f(x)=arg min⁡y∈Y∑k=1KL(ck,y)P(y=ck∣X=x)=arg min⁡y∈Y∑k=1KP(y≠ck∣X=x)=arg min⁡y∈Y∑k=1K(1−P(y=ck∣X=x))=arg max⁡y∈Y∑k=1KP(y=ck∣X=x) \begin{aligned} f(x) &=arg \,\min_{y \in \mathcal Y}\sum_{k=1}^{K}L(c_k,y)P(y=c_k|X=x) \\ &=arg \,\min_{y \in \mathcal Y}\sum_{k=1}^{K}P(y \neq c_k|X=x) \\ &=arg \,\min_{y \in \mathcal Y}\sum_{k=1}^{K}(1-P(y=c_k|X=x) )\\ &=arg \,\max_{y \in \mathcal Y}\sum_{k=1}^{K}P(y=c_k|X=x) \end{aligned} f(x)=argyYmink=1KL(ck,y)P(y=ckX=x)=argyYmink=1KP(y=ckX=x)=argyYmink=1K(1P(y=ckX=x))=argyYmaxk=1KP(y=ckX=x)
得到后验概率最大化准则:
f(x)==arg max⁡y∈Y∑i=1KP(y=ck∣X=x)f(x)==arg \,\max_{y \in \mathcal Y}\sum_{i=1}^{K}P(y=c_k|X=x) f(x)==argyYmaxi=1KP(y=ckX=x)
其中Y={c1,c2,⋯ ,cK}\mathcal Y=\{c_1,c2, \cdots,c_K\}Y={c1,c2,,cK},KKK是类别个数

三、参数估计

方法1:极大似然估计

下面先给出结果,再证明
先验概率估计:

P(Y=ck)=∑i=1nI(yi=ck)N P(Y=c_k)={ {\sum_{i=1}^{n}I(y_i=c_k)} \over {N} }P(Y=ck)=Ni=1nI(yi=ck)
条件概率估计:

P(X(j)=ajl∣Y=ck)=∑i=1nI(Xi(j)=ajl,yi=ck)∑i=1nI(yi=ck) P(X^{(j)}=a_{jl}|Y=c_k)={ {\sum_{i=1}^{n}I(X_i^{(j)}=a_{jl},y_i=c_k)} \over { \sum_{i=1}^{n}I(y_i=c_k) } }P(X(j)=ajlY=ck)=i=1nI(yi=ck)i=1nI(Xi(j)=ajl,yi=ck)
其中k=1,2,⋯ ,K,j=1,2,⋯ ,n,l=1,2,⋯Sjk=1,2,\cdots,K,j=1,2,\cdots,n,l=1,2,\cdots S_jk=1,2,,K,j=1,2,,n,l=1,2,Sj
x(j)∈{aj1,aj2,⋯ ,ajSj}x^{(j)} \in \{a_{j1},a_{j2},\cdots,a_{jS_j}\}x(j){aj1,aj2,,ajSj}

下面给出证明:
1、估计先验概率P(ck)P(c_k)P(ck)
P(Y=ck)=θk,k∈{1,2,⋯ ,K}P(Y=c_k)=\theta_k,k \in \{1,2,\cdots ,K\}P(Y=ck)=θk,k{1,2,,K}
P(Y)=∏k=1KθkI(Y=ck)P(Y)=\prod_{k=1}^{K} \theta_k^{I(Y=c_k)}P(Y)=k=1KθkI(Y=ck)
那么对数似然函数表示如下:

L(θ)=log⁡(∏i=1nP(Y=yi))=log⁡(∏i=1n∏k=1KθkI(Yi=ck))=log⁡(∏k=1KθkNk)=∑k=1KNklog⁡θk \begin{aligned} L(\theta) &=\log(\prod_{i=1}^{n}P(Y=y_i)) \\ &=\log(\prod_{i=1}^{n}\prod_{k=1}^{K}\theta_k^{I(Y_i=c_k)}) \\ &=\log(\prod_{k=1}^{K}\theta_k^{N_k}) \\ &=\sum_{k=1}^{K}N_k \log \theta_k \end{aligned} L(θ)=log(i=1nP(Y=yi))=log(i=1nk=1KθkI(Yi=ck))=log(k=1KθkNk)=k=1KNklogθk

其中NkN_kNk是样本类别为ckc_kck的样本数目
又因为∑k=1Kθk=1\sum_{k=1}^{K}\theta_k=1k=1Kθk=1,所以拉格朗日函数可以表示为:
L(θk,λ)=∑k=1KNklog⁡θk+λ(∑k=1Kθk−1) L(\theta_k,\lambda)=\sum_{k=1}^{K}N_k \log \theta_k+ \lambda (\sum_{k=1}^{K}\theta_k-1)L(θk,λ)=k=1KNklogθk+λ(k=1Kθk1)
拉格朗日函数对θk\theta_kθk求偏导可得:
∂L(θk,λ)θk=Nkθk+λ=0⇒Nk=−λθk{ \partial L(\theta_k,\lambda) \over {\theta_k} }={ N_k \over \theta_k}+\lambda=0 \Rightarrow N_k=-\lambda \theta_kθkL(θk,λ)=θkNk+λ=0Nk=λθk
对上式求和可得:
∑k=1K=Nk=−λ∑k=1kθk⇒N=−λ⇒θk=NkN得证 \sum_{k=1}^{K}=N_k=-\lambda\sum_{k=1}^{k}\theta_k \Rightarrow N=-\lambda \Rightarrow \theta_k=\frac {N_k}{N} \quad得证k=1K=Nk=λk=1kθkN=λθk=NNk

1、估计条件概率P(X(j)=ajl∣y=ck)P(X^{(j)}=a_{jl}|y=c_k)P(X(j)=ajly=ck)

P(X(j)=ajl∣y=ck)=θkjlP(X^{(j)}=a_{jl}|y=c_k)=\theta_{kjl}P(X(j)=ajly=ck)=θkjl
P(X(j)=ajl∣y=ck)=θkjl=∏k=1K∏j=1n∏l=1SjθkjlI(X(j)=ajl)P(X^{(j)}=a_{jl}|y=c_k)=\theta_{kjl}=\prod_{k=1}^{K}\prod_{j=1}^{n}\prod_{l=1}^{S_j}\theta_{kjl}^{I(X^{(j)}=a_{jl})}P(X(j)=ajly=ck)=θkjl=k=1Kj=1nl=1SjθkjlI(X(j)=ajl)
似然函数表示如下:
l(θ)=∏i=1NK(∏k=1K∏j=1n∏l=1SjθkjlI(Xi(j)=ajl))=∏k=1K∏j=1nθkjlNkjl \begin{aligned} l(\theta) &=\prod_{i=1}^{N_K}(\prod_{k=1}^{K}\prod_{j=1}^{n}\prod_{l=1}^{S_j}\theta_{kjl}^{I(X^{(j)}_i=a_{jl})} ) \\ & =\prod_{k=1}^{K}\prod_{j=1}^{n}\theta_{kjl}^{N_{kjl}} \end{aligned} l(θ)=i=1NK(k=1Kj=1nl=1SjθkjlI(Xi(j)=ajl))=k=1Kj=1nθkjlNkjl
其中NkjlN_{kjl}Nkjl表示数据集中属于类ckc_kck,且样本的第jjj维度取值为ajl的个数a_{jl}的个数ajl
所以对数似然函数表示如下:
L(θ)=∑k=1K∑j=1nNkjllog⁡θkjl L(\theta)=\sum_{k=1}^{K}\sum_{j=1}^{n}N_{kjl} \log \theta_{kjl}L(θ)=k=1Kj=1nNkjllogθkjl
又因为∑l=1Sjθkjl=1\sum_{l=1}^{S_j}\theta_{kjl}=1l=1Sjθkjl=1
拉格朗日函数可以表示为:
L(θ,λ)=∑k=1K∑j=1nNkjllog⁡θkjl+λ(∑l=1Sjθkjl−1) L(\theta,\lambda)=\sum_{k=1}^{K}\sum_{j=1}^{n}N_{kjl} \log \theta_{kjl}+\lambda(\sum_{l=1}^{S_j}\theta_{kjl}-1)L(θ,λ)=k=1Kj=1nNkjllogθkjl+λ(l=1Sjθkjl1)
⇒∂L(θ,λ)∂θkjl=Nkjlθkjl−λ=0\Rightarrow \frac {\partial L(\theta,\lambda)} {\partial \theta_{kjl}} =\frac {N_{kjl}}{\theta_{kjl}}-\lambda=0θkjlL(θ,λ)=θkjlNkjlλ=0
⇒∑l=1SjNkjl=λ∑l=1Sjθkjl=λ\Rightarrow \sum_{l=1}^{S_j}N_{kjl}=\lambda \sum_{l=1}^{S_j}\theta_{kjl}=\lambdal=1SjNkjl=λl=1Sjθkjl=λ
⇒λ=Nk\Rightarrow \lambda =N_kλ=Nk
⇒θkjl=NkjlNk\Rightarrow \theta_{kjl}=\frac {N_{kjl}}{N_k}θkjl=NkNkjl, 得证

方法2:贝叶斯估计

贝叶斯估计是为了解决极大似然估计中可能存在的所要估计的概率值为0的情况
先验概率估计:
P(Y=ck)=∑i=1nI(yi=ck)+λN+Kλ P(Y=c_k)={ {\sum_{i=1}^{n}I(y_i=c_k)+\lambda} \over {N+K\lambda} }P(Y=ck)=N+Kλi=1nI(yi=ck)+λ
条件概率估计:
P(X(j)=ajl∣Y=ck)=∑i=1nI(Xi(j)=ajl,yi=ck)+λ∑i=1nI(yi=ck)+Sjλ P(X^{(j)}=a_{jl}|Y=c_k)={ {\sum_{i=1}^{n}I(X_i^{(j)}=a_{jl},y_i=c_k)}+\lambda \over { \sum_{i=1}^{n}I(y_i=c_k) } +S_j\lambda}P(X(j)=ajlY=ck)=i=1nI(yi=ck)+Sjλi=1nI(Xi(j)=ajl,yi=ck)+λ
其中k=1,2,⋯ ,K,j=1,2,⋯ ,n,l=1,2,⋯Sjk=1,2,\cdots,K,j=1,2,\cdots,n,l=1,2,\cdots S_jk=1,2,,K,j=1,2,,n,l=1,2,Sj
x(j)∈{aj1,aj2,⋯ ,ajSj}x^{(j)} \in \{a_{j1},a_{j2},\cdots,a_{jS_j}\}x(j){aj1,aj2,,ajSj}

### 朴素贝叶斯算法的数学公式及其推导 #### 基本概念 在机器学习领域,朴素贝叶斯分类器是一种基于贝叶斯定理的概率分类方法。其核心假设是特征之间相互独立,这一假设使得计算变得更加高效和简化。 贝叶斯定理的核心公式如下所示: \[ P(C|X) = \frac{P(X|C)P(C)}{P(X)} \] 其中, - \( C \) 表示类别标签; - \( X \) 是输入样本的特征向量; - \( P(C|X) \) 是给定特征条件下类别的后验概率; - \( P(X|C) \) 是条件概率密度函数,表示已知类别下观察到特定特征的可能性; - \( P(C) \) 是先验概率,即某一类别出现的概率; - \( P(X) \) 是证据因子,在所有可能的类别中观测到该数据点的概率[^1]。 #### 条件独立性假设 为了进一步简化公式的复杂度,朴素贝叶斯引入了一个重要的假设——**条件独立性**。这意味着对于任意两个特征 \( x_i, x_j \),它们在给定类别的情况下彼此独立。因此可以将联合概率分解为各个特征的乘积形式: \[ P(X|C_k) = P(x_1 | C_k) \cdot P(x_2 | C_k) \cdots P(x_n | C_k) = \prod_{i=1}^{n} P(x_i | C_k) \] 这里 \( n \) 表示特征的数量,\( k \) 则代表具体的某个类别索引。 #### 后验最大化的决策规则 最终目标是从训练集中估计参数并预测新实例所属的最佳类别。依据上述理论框架,选择能使后验概率最大的那个类别作为输出结果: \[ \hat{y} = \argmax_C P(C|X) = \argmax_C \left( P(C)\prod_{i=1}^n P(x_i|C) \right) \] 由于分母部分 \( P(X) \) 对于所有的候选类别都相同,所以在实际操作过程中通常忽略它只比较分子即可完成优化过程[^2]。 ```python import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.naive_bayes import GaussianNB # 加载鸢尾花数据集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.5, random_state=0) gnb = GaussianNB() # 创建高斯朴素贝叶斯对象 model = gnb.fit(X_train, y_train) # 训练模型 predictions = model.predict(X_test) # 预测测试集上的标签 print(f'Accuracy: {np.mean(predictions == y_test):.3f}') # 输出准确率 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值