欢迎光临
我们一直在努力

【机器学习】朴素贝叶斯 贝叶斯回归

第一部分:核心概率基础

1.1 全概率公式(Law of Total Probability)

设 $ {A_i}_{i=1}^{n} $ 为样本空间 $ \\Omega $ 的一个完备事件划分,即满足:
⋃i=1nAi=Ω,Ai∩Aj=∅ (i≠j),P(Ai)>0
\\bigcup_{i=1}^{n} A_i = \\Omega, \\quad A_i \\cap A_j = \\varnothing \\ (i \\neq j), \\quad P(A_i) > 0
i=1⋃n​Ai​=Ω,Ai​∩Aj​=∅ (i=j),P(Ai​)>0

则对任意事件 $ B $,有:
P(B)=∑i=1nP(Ai)⋅P(B∣Ai)
P(B) = \\sum_{i=1}^{n} P(A_i) \\cdot P(B \\mid A_i)
P(B)=i=1∑n​P(Ai​)⋅P(B∣Ai​)

生活例子:
假设 A1A_1A1​ 是“下雨”,A2A_2A2​ 是“不下雨”(完备划分)。BBB是“堵车”。那么 P(B)=P(下雨)P(堵车∣下雨)+P(不下雨)P(堵车∣不下雨)P(B)=P(下雨)P(堵车∣下雨)+P(不下雨)P(堵车∣不下雨)P(B)=P(下雨)P(堵车∣下雨)+P(不下雨)P(堵车∣不下雨)

物理含义:观测事件 $ B $ 的全概率,是在所有互斥“原因” $ A_i $ 下的边缘化(Marginalization),即对联合分布 $ P(A_i, B) $ 求和的边际分布。


1.2 贝叶斯定理(Bayes‘ Theorem)

由条件概率定义 $ P(A_i \\mid B) = \\frac{P(A_i, B)}{P(B)} $ 及全概率公式直接导出:
P(Ai∣B)=P(Ai)⋅P(B∣Ai)∑j=1nP(Aj)⋅P(B∣Aj)
P(A_i \\mid B) = \\frac{P(A_i) \\cdot P(B \\mid A_i)}{\\sum_{j=1}^{n} P(A_j) \\cdot P(B \\mid A_j)}
P(Ai​∣B)=∑j=1n​P(Aj​)⋅P(B∣Aj​)P(Ai​)⋅P(B∣Ai​)​

三要素:

  • 先验 $ P(A_i) $ —— 在观测数据前对假设 $ A_i $ 的信念强度
  • 似然 $ P(B \\mid A_i) $ —— 在假设 $ A_i $ 下观测到 $ B $ 的生成概率
  • 后验 $ P(A_i \\mid B) $ —— 融合数据后对假设的更新信念

归一化常数(Evidence):$ P(B) $,仅起归一化作用,在模型比较时可忽略。

第二部分:朴素贝叶斯分类器(Naive Bayes Classifier)

2.1 模型定义

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单但强大的分类算法。它的名字很形象:“朴素”指它的核心假设,“贝叶斯”指它的理论基础。

如果特征有几十个,$ P(X | C_k) $ 的联合概率计算量是天文数字,且需要海量数据。

朴素假设登场:假设所有特征 $ x_1, x_2, … $ 在给定类别 $ C_k $ 的条件下相互条件独立。
P(X∣Ck)=P(x1∣Ck)⋅P(x2∣Ck)⋅…⋅P(xn∣Ck)=∏i=1nP(xi∣Ck)
P(X | C_k) = P(x_1 | C_k) \\cdot P(x_2 | C_k) \\cdot … \\cdot P(x_n | C_k) = \\prod_{i=1}^{n} P(x_i | C_k)
P(X∣Ck​)=P(x1​∣Ck​)⋅P(x2​∣Ck​)⋅…⋅P(xn​∣Ck​)=i=1∏n​P(xi​∣Ck​)

至此,模型构建的核心任务,就变成了从训练数据中“统计”出这两组数值:

  • 先验概率 $ P(C_k) $:各类别在总样本中的占比。
  • 条件概率 $ P(x_i | C_k) $:每个特征在每个类别下的分布情况

  • 2.2 具体构建流程

    1. 计算先验概率

    非常简单,直接用频率估计概率:
    P(Ck)=类别 Ck 的样本数总样本数
    P(C_k) = \\frac{\\text{类别 } C_k \\text{ 的样本数}}{\\text{总样本数}}
    P(Ck​)=总样本数类别 Ck​ 的样本数​

    2. 计算条件概率(这里分两种情况)

    情况A:特征为离散型数据(如单词是否出现)
    直接用频率:
    P(xi∣Ck)=在类别 Ck 中,特征 xi 出现的次数类别 Ck 的总样本数
    P(x_i | C_k) = \\frac{\\text{在类别 } C_k \\text{ 中,特征 } x_i \\text{ 出现的次数}}{\\text{类别 } C_k \\text{ 的总样本数}}
    P(xi​∣Ck​)=类别 Ck​ 的总样本数在类别 Ck​ 中,特征 xi​ 出现的次数​

    平滑处理(重要):如果某个特征在训练集中没出现过,概率会变成0,导致整个乘积为0。所以必须引入拉普拉斯平滑,分子加1,分母加特征总数,避免零概率。

    情况B:特征为连续型数据(如身高、温度)
    通常假设特征服从高斯分布(正态分布),然后计算每个类别下该特征的均值和方差,代入正态分布概率密度函数求出概率:
    P(xi∣Ck)=12πσk,i2exp⁡(−(xi−μk,i)22σk,i2)
    P(x_i | C_k) = \\frac{1}{\\sqrt{2\\pi\\sigma_{k,i}^2}} \\exp\\left(-\\frac{(x_i – \\mu_{k,i})^2}{2\\sigma_{k,i}^2}\\right)
    P(xi​∣Ck​)=2πσk,i2​​1​exp(−2σk,i2​(xi​−μk,i​)2​)

    3. 存储模型参数

    训练完毕时,模型实际上保存的就是一张“概率表”,包含:

    • 每个类别的先验概率。
    • 每个类别下,每个特征的条件概率(离散型是频率表,连续型是均值和方差)。

    2.3 举个极简例子(离散型)

    一、训练数据集(6个样本,3个特征)

    编号天气(特征1)时段(特征2)是否节假日(特征3)地铁晚点(标签)
    1 雨 早高峰 否 是
    2 晴 早高峰 是 否
    3 雨 晚高峰 否 是
    4 阴 平峰 否 否
    5 雨 平峰 是 否
    6 晴 晚高峰 否 是

    二、构建模型第一步:计算先验概率 P(标签)

    先看标签“晚点”和“不晚点”各有多少个:

    • 晚点(是):样本1、3、6 → 共 3 个
    • 不晚点(否):样本2、4、5 → 共 3 个

    总样本数 = 6,所以先验概率为:

    P(晚点=是)=36=0.5
    P(晚点=是) = \\frac{3}{6} = 0.5
    P(晚点=是)=63​=0.5

    P(晚点=否)=36=0.5
    P(晚点=否) = \\frac{3}{6} = 0.5
    P(晚点=否)=63​=0.5


    三、构建模型第二步:计算条件概率 P(特征 | 标签)

    现在我们要分别统计“晚点”和“不晚点”这两类中,各个特征取值的频率。

  • 在“晚点=是”的3个样本中(编号1、3、6)
  • 特征取值出现次数条件概率
    天气 雨 2次(1、3) 2/3 ≈ 0.667
    天气 晴 1次(6) 1/3 ≈ 0.333
    天气 阴 0次 0/3 = 0
    时段 早高峰 1次(1) 1/3 ≈ 0.333
    时段 晚高峰 2次(3、6) 2/3 ≈ 0.667
    时段 平峰 0次 0/3 = 0
    节假日 是 0次 0/3 = 0
    节假日 否 3次(1、3、6) 3/3 = 1
  • 在“晚点=否”的3个样本中(编号2、4、5)
  • 特征取值出现次数条件概率
    天气 雨 1次(5) 1/3 ≈ 0.333
    天气 晴 1次(2) 1/3 ≈ 0.333
    天气 阴 1次(4) 1/3 ≈ 0.333
    时段 早高峰 1次(2) 1/3 ≈ 0.333
    时段 晚高峰 0次 0/3 = 0
    时段 平峰 2次(4、5) 2/3 ≈ 0.667
    节假日 是 2次(2、5) 2/3 ≈ 0.667
    节假日 否 1次(4) 1/3 ≈ 0.333

    四、模型参数汇总(概率表)

    类别先验 P天气=雨天气=晴天气=阴时段=早高峰时段=晚高峰时段=平峰节假日=是节假日=否
    晚点=是 0.5 2/3 1/3 0 1/3 2/3 0 0 1
    晚点=否 0.5 1/3 1/3 1/3 1/3 0 2/3 2/3 1/3

    注意:表格中有很多0,这在真实建模时会导致乘积为0,实际应用必须做拉普拉斯平滑。但为了让你看清原始统计过程,我先保留原始频率。


    五、用模型做预测(新样本)

    现在来了一个新样本,特征为:天气=晴,时段=早高峰,节假日=是。
    我们要判断它属于“晚点”还是“不晚点”。

    计算“晚点=是”的后验得分(忽略分母 P(X)):
    Score是=P(是)×P(晴∣是)×P(早高峰∣是)×P(节假日=是∣是)
    \\text{Score}_{是} = P(是) \\times P(晴|是) \\times P(早高峰|是) \\times P(节假日=是|是)
    Score是​=P(是)×P(晴∣是)×P(早高峰∣是)×P(节假日=是∣是)

    代入表格:
    Score是=0.5×13×13×0=0
    \\text{Score}_{是} = 0.5 \\times \\frac{1}{3} \\times \\frac{1}{3} \\times 0 = 0
    Score是​=0.5×31​×31​×0=0

    计算“晚点=否”的后验得分
    Score否=P(否)×P(晴∣否)×P(早高峰∣否)×P(节假日=是∣否)
    \\text{Score}_{否} = P(否) \\times P(晴|否) \\times P(早高峰|否) \\times P(节假日=是|否)
    Score否​=P(否)×P(晴∣否)×P(早高峰∣否)×P(节假日=是∣否)

    代入表格:
    Score否=0.5×13×13×23=127≈0.037
    \\text{Score}_{否} = 0.5 \\times \\frac{1}{3} \\times \\frac{1}{3} \\times \\frac{2}{3} = \\frac{1}{27} \\approx 0.037
    Score否​=0.5×31​×31​×32​=271​≈0.037

    比较结果

    • “是”的得分为 0
    • “否”的得分为 0.037

    模型预测:地铁不晚点(否)。


    六、解决零概率问题(拉普拉斯平滑)

    上面的预测中,“晚点=是”因为“节假日=是”在训练集里没出现过,直接得了0分,这显然不合理。
    实际建模时,我们会给每个计数加1(拉普拉斯平滑),分母加上该特征的可能取值个数。

    以“天气”为例,它有3种取值(雨、晴、阴),平滑后的条件概率为:

    P(雨∣是)=2+13+3=36=0.5
    P(雨|是) = \\frac{2+1}{3+3} = \\frac{3}{6} = 0.5
    P(雨∣是)=3+32+1​=63​=0.5

    P(晴∣是)=1+16=26≈0.333
    P(晴|是) = \\frac{1+1}{6} = \\frac{2}{6} ≈ 0.333
    P(晴∣是)=61+1​=62​≈0.333

    P(阴∣是)=0+16≈0.167
    P(阴|是) = \\frac{0+1}{6} ≈ 0.167
    P(阴∣是)=60+1​≈0.167

    这样所有概率都大于0,再预测时就不会出现硬零了。


    2.4 三种常见变体

    变体特征类型条件分布形式适用场景
    伯努利朴素贝叶斯(Bernoulli NB) 二元(0/1) $ X_j \\sim \\text{Bernoulli}(\\theta_{y,j}) $ 文本分类中词是否出现
    多项式朴素贝叶斯(Multinomial NB) 计数(非负整数) $ \\mathbf{X} \\mid Y \\sim \\text{Multinomial}(\\boldsymbol{\\theta}_y) $ 文本词频、TF-IDF特征
    高斯朴素贝叶斯(Gaussian NB) 连续值 $ X_j \\mid Y \\sim \\mathcal{N}(\\mu_{y,j}, \\sigma_{y,j}^2) $ 连续型数值特征

    高斯 NB 中,参数估计为:
    μ^y,j=1Ny∑i:y(i)=yxj(i),σ^y,j2=1Ny∑i:y(i)=y(xj(i)−μ^y,j)2
    \\hat{\\mu}_{y,j} = \\frac{1}{N_y} \\sum_{i: y^{(i)}=y} x_j^{(i)}, \\quad
    \\hat{\\sigma}_{y,j}^2 = \\frac{1}{N_y} \\sum_{i: y^{(i)}=y} (x_j^{(i)} – \\hat{\\mu}_{y,j})^2
    μ^​y,j​=Ny​1​i:y(i)=y∑​xj(i)​,σ^y,j2​=Ny​1​i:y(i)=y∑​(xj(i)​−μ^​y,j​)2

    条件概率密度为:
    P(Xj=x∣Y=y)=12πσ^y,j2exp⁡(−(x−μ^y,j)22σ^y,j2)
    P(X_j = x \\mid Y = y) = \\frac{1}{\\sqrt{2\\pi \\hat{\\sigma}_{y,j}^2}} \\exp\\left(-\\frac{(x – \\hat{\\mu}_{y,j})^2}{2\\hat{\\sigma}_{y,j}^2}\\right)
    P(Xj​=x∣Y=y)=2πσ^y,j2​​1​exp(−2σ^y,j2​(x−μ^​y,j​)2​)


    2.5 优缺点

    • 优点:训练时间复杂度为 $ O(Nd) $;对缺失数据鲁棒;可作为在线学习的基模型。
    • 缺点:条件独立假设在多数实际场景中违反;对输入特征的分布形式敏感(高斯假设不一定成立);概率估计的校准度(Calibration)较差。

    第三部分:贝叶斯回归(Bayesian Regression)

    3.1 模型范式

    贝叶斯回归不是某一种具体算法,而是一种参数估计的范式(Paradigm),将回归模型的参数视为随机变量,赋予其先验分布,并通过观测数据更新为后验分布。

    设回归模型为:
    y=f(x;θ)+ε,ε∼N(0,σ2)
    y = f(\\mathbf{x}; \\boldsymbol{\\theta}) + \\varepsilon, \\quad \\varepsilon \\sim \\mathcal{N}(0, \\sigma^2)
    y=f(x;θ)+ε,ε∼N(0,σ2)

    线性情形下:$ f(\\mathbf{x}; \\boldsymbol{\\theta}) = \\boldsymbol{\\theta}^\\top \\mathbf{x} $。

    核心目标:计算参数的后验分布:
    P(θ∣D)=P(θ)⋅P(D∣θ)P(D)
    P(\\boldsymbol{\\theta} \\mid \\mathcal{D}) = \\frac{P(\\boldsymbol{\\theta}) \\cdot P(\\mathcal{D} \\mid \\boldsymbol{\\theta})}{P(\\mathcal{D})}
    P(θ∣D)=P(D)P(θ)⋅P(D∣θ)​

    其中:

    • $ P(\\boldsymbol{\\theta}) $:先验分布(Prior),编码对参数的先验知识
    • $ P(\\mathcal{D} \\mid \\boldsymbol{\\theta}) = \\prod_{i=1}^{N} \\mathcal{N}(y_i \\mid \\boldsymbol{\\theta}^\\top \\mathbf{x}_i, \\sigma^2) $:似然函数(Likelihood)
    • $ P(\\mathcal{D}) = \\int P(\\mathcal{D} \\mid \\boldsymbol{\\theta}) P(\\boldsymbol{\\theta}) , d\\boldsymbol{\\theta} $:边际似然(Marginal Likelihood / Evidence)

    3.2 共轭先验情形(Conjugate Prior)

    当先验与似然共轭时,后验具有解析闭式解。

    线性回归 + 高斯似然 + 高斯先验:

    设 $ \\boldsymbol{\\theta} \\sim \\mathcal{N}(\\mathbf{0}, \\lambda^{-1} \\mathbf{I}) $,且 $ \\sigma^2 $ 已知。

    后验为:
    θ∣D∼N(μn,Σn)
    \\boldsymbol{\\theta} \\mid \\mathcal{D} \\sim \\mathcal{N}(\\boldsymbol{\\mu}_n, \\boldsymbol{\\Sigma}_n)
    θ∣D∼N(μn​,Σn​)

    其中:
    Σn−1=λI+1σ2X⊤X,μn=1σ2ΣnX⊤y
    \\boldsymbol{\\Sigma}_n^{-1} = \\lambda \\mathbf{I} + \\frac{1}{\\sigma^2} \\mathbf{X}^\\top \\mathbf{X}, \\quad
    \\boldsymbol{\\mu}_n = \\frac{1}{\\sigma^2} \\boldsymbol{\\Sigma}_n \\mathbf{X}^\\top \\mathbf{y}
    Σn−1​=λI+σ21​X⊤X,μn​=σ21​Σn​X⊤y

    观测:该后验均值等价于岭回归(Ridge Regression)的解,即 $ L_2 $ 正则化线性回归。因此,贝叶斯回归中的高斯先验与频率学派的正则化项存在严格的对应关系。


    3.3 非共轭情形与近似推断

    当先验与似然不共轭(如 $ L_1 $ 先验 / Laplace 先验)或模型非线性时,后验无解析形式,需依赖近似推断。

    方法类别原理复杂度适用规模
    MCMC(马尔可夫链蒙特卡洛) 采样法 构建以目标后验为平稳分布的马尔可夫链,生成大量样本进行蒙特卡洛积分 $ O(N \\cdot T) ,,, T $ 为采样步数 中等数据($ N \\sim 10^4 $)
    变分推断(VI) 确定性近似 在分布族 $ \\mathcal{Q} $ 中寻找与后验 KL 散度最小的近似分布 $ q^* = \\arg\\min_{q \\in \\mathcal{Q}} D_{KL}(q \\parallel P) $ 通常 $ O(N) $,可扩展 大数据($ N \\sim 10^6 $)
    拉普拉斯近似 确定性近似 在后验众数处做二阶泰勒展开,以高斯分布局部近似 低 后验近似单峰时

    MCMC 的典型算法包括 Gibbs 采样 和 Metropolis-Hastings;变分推断的现代实现包括 ADVI(Automatic Differentiation Variational Inference)。


    3.4 预测分布(Posterior Predictive Distribution)

    贝叶斯回归的最终输出不是单点估计,而是后验预测分布:
    P(y∗∣x∗,D)=∫P(y∗∣x∗,θ)⋅P(θ∣D) dθ
    P(y_* \\mid \\mathbf{x}_*, \\mathcal{D}) = \\int P(y_* \\mid \\mathbf{x}_*, \\boldsymbol{\\theta}) \\cdot P(\\boldsymbol{\\theta} \\mid \\mathcal{D}) \\, d\\boldsymbol{\\theta}
    P(y∗​∣x∗​,D)=∫P(y∗​∣x∗​,θ)⋅P(θ∣D)dθ

    该分布自然编码了两种不确定性:

  • 偶然不确定性(Aleatoric Uncertainty):来自数据本身的噪声 $ \\varepsilon $(不可约减)
  • 认知不确定性(Epistemic Uncertainty):来自参数估计的不确定性(可通过增加数据减少)
  • 在数据稀疏区域,认知不确定性自动扩大,预测区间变宽,这是贝叶斯回归相比点估计方法的本质优势。


    3.5 与正则化方法的对应关系

    先验分布对应的正则化项频率学派等价模型
    高斯先验 $ \\mathcal{N}(0, \\lambda^{-1}I) $ $ L_2 $ 范数 岭回归(Ridge)
    拉普拉斯先验 $ \\text{Laplace}(0, \\lambda^{-1}) $ $ L_1 $ 范数 Lasso 回归
    马蹄先验(Horseshoe) 自适应收缩 稀疏贝叶斯学习(SBL)

    先验的对数形式对应正则化损失项,这是 MAP 估计(最大化后验)与正则化优化目标之间的标准等价关系。

    赞(0)
    未经允许不得转载:171主机测评 » 【机器学习】朴素贝叶斯 贝叶斯回归
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址