机器学习_Part4.26

"Machine_Learning"

Posted by LanZinYtt on May 27, 2026

机器学习_Part2

贝叶斯方法

背景知识

在贝叶斯方法中,核心问题是:已知观测数据后,如何更新我们对某个事件或类别的概率判断。

  • 先验概率(Prior Probability):在没有观测到当前样本特征之前,对某个类别的初始概率判断,记为
  • $ P(C_k) $ 其中 $C_k$ 表示第 $k$ 个类别。

  • 后验概率(Posterior Probability):在观测到样本 $x$ 之后,样本属于类别 $C_k$ 的概率,记为
  • $ P(C_k\mid x) $

  • 类条件概率:在类别 $C_k$ 已知的条件下,样本 $x$ 出现的概率,记为
  • $ P(x\mid C_k) $ 它刻画了“该类生成这个样本的可能性”。

  • 证据(Evidence):样本 $x$ 出现的总体概率,记为
  • $ P(x) $

  • 贝叶斯公式:
  • $ P(C_k\mid x) = \frac{P(x\mid C_k)P(C_k)}{P(x)} $

该公式表明:后验概率 $=$ 类条件概率 $\times$ 先验概率,再除以证据。也就是说,在观察到数据后,可以根据数据对原有认知进行修正。

贝叶斯方法

贝叶斯方法的基本思想是:对每个类别计算后验概率,然后选择后验概率最大的类别作为预测结果。

  • 分类准则(Bayes Decision Rule):
  • $ \hat{y} = \arg\max_{C_k} P(C_k\mid x) $

将贝叶斯公式代入可得:

  • $ \hat{y} = \arg\max_{C_k} \frac{P(x\mid C_k)P(C_k)}{P(x)} $

由于对同一个样本 $x$ 而言,$P(x)$ 对所有类别都相同,因此分类时通常只需比较:

  • $ \hat{y} = \arg\max_{C_k} P(x\mid C_k)P(C_k) $

因此,贝叶斯分类器的决策依据可以理解为:综合考虑“该类本身出现的可能性”和“该类生成当前样本的可能性”,选择最有可能的类别。

  • 最大后验概率分类准则(二分类):

设类别为 $\omega_1,\omega_2$,则样本 $x$ 的分类结果为

  • $ x \to \omega^* = \arg\max_{\omega_i} P(\omega_i\mid x) $ 对于二分类任务,只需比较

  • $ P(\omega_1\mid x) \quad \text{与} \quad P(\omega_2\mid x) $

根据贝叶斯公式,有

  • $ P(\omega_i\mid x) = \frac{p(x\mid \omega_i)P(\omega_i)}{p(x)}, \qquad i=1,2 $

因此只需比较

  • $ p(x\mid \omega_1)P(\omega_1) \quad \text{与} \quad p(x\mid \omega_2)P(\omega_2) $

当先验概率相同时,即 $P(\omega_1)=P(\omega_2)$,只需比较类条件概率:

  • $ p(x\mid \omega_1) \quad \text{与} \quad p(x\mid \omega_2) $

多分类情形可以完全类似地推广。

  • 最小错误概率分类准则:

若将样本 $x$ 判为类别 $\omega_i$,其错误概率定义为

  • $ P_e(\omega_i\mid x) = 1 - P(\omega_i\mid x) $

因此,最小化错误概率等价于最大化后验概率,即

  • $ \arg\min_{\omega_i} P_e(\omega_i\mid x) = \arg\max_{\omega_i} P(\omega_i\mid x) $

所以,最小错误概率分类准则与最大后验概率分类准则是等价的。

  • 最小风险分类准则:

在很多实际问题中,不同类型的分类错误代价并不相同,因此除了考虑错误概率,还需要考虑决策带来的风险。

以二分类问题 $\omega_1,\omega_2$ 为例,定义风险矩阵:

$ \Lambda = \begin{bmatrix} \lambda_{11} & \lambda_{12}
\lambda_{21} & \lambda_{22} \end{bmatrix} $

其中,$\lambda_{ij}$ 表示真实类别为 $\omega_i$ 时,却将其判为 $\omega_j$ 所带来的风险值。

若把样本 $x$ 判为类别 $\omega_j$,则其条件风险为

  • $ R(\omega_j\mid x) = \sum_{i} \lambda_{ij} P(\omega_i\mid x) $

最小风险分类准则就是选择条件风险最小的类别:

  • $ x \to \omega^* = \arg\min_{\omega_j} R(\omega_j\mid x) $

该准则更加一般:当不同错误代价不同的时候,最小风险分类比单纯最小错误概率分类更符合实际需求。

朴素贝叶斯分类器

朴素贝叶斯分类器(Naive Bayes Classifier)是在贝叶斯分类方法基础上发展起来的一类简单而有效的分类器。它的核心思想是:在给定类别的条件下,(名字中“朴素”的由来)假设各个特征之间相互条件独立,从而将复杂的联合概率计算转化为多个一维概率的乘积。

设样本的特征向量为

  • $ x = (x_1,x_2,\dots,x_d) $

类别集合为 $C_1,C_2,\dots,C_K$。根据贝叶斯公式,样本属于类别 $C_k$ 的后验概率为

  • $ P(C_k\mid x) = \frac{P(x\mid C_k)P(C_k)}{P(x)} $

其中,直接计算高维特征的类条件概率 $P(x\mid C_k)$ 往往比较困难。朴素贝叶斯作出如下条件独立假设:

  • $ P(x\mid C_k) = P(x_1,x_2,\dots,x_d\mid C_k) = \prod_{j=1}^{d} P(x_j\mid C_k) $

于是后验概率可写为

  • $ P(C_k\mid x) \propto P(C_k) \prod_{j=1}^{d} P(x_j\mid C_k) $

因此,朴素贝叶斯分类器的分类规则为:

  • $ \hat{y} = \arg\max_{C_k} P(C_k) \prod_{j=1}^{d} P(x_j\mid C_k) $

这说明朴素贝叶斯分类器通过“先验概率 $\times$ 各特征条件概率乘积”来决定样本所属类别。

在实际应用中,模型参数通常由训练数据估计:

  • 先验概率估计:
  • $ P(C_k) = \frac{N_k}{N} $ 其中,$N_k$ 表示训练集中属于类别 $C_k$ 的样本数,$N$ 表示总样本数。

  • 条件概率估计: 对离散特征,可通过频率统计估计 $P(x_j\mid C_k)$; 对连续特征,常假设其服从高斯分布,可通过MLE计算,从而得到高斯朴素贝叶斯模型。

为了避免某个条件概率估计为 $0$ 而导致整个乘积为 $0$,常采用拉普拉斯平滑(Laplace Smoothing):

  • $ P(x_j=a\mid C_k) = \frac{N_{kja}+1}{N_k + V_j} $

其中,$N_{kja}$ 表示在类别 $C_k$ 中第 $j$ 个特征取值为 $a$ 的样本数,$V_j$ 表示第 $j$ 个特征可能的取值个数。

朴素贝叶斯分类器的优点是模型简单、训练和预测速度快、对小规模数据也较有效;缺点是条件独立假设通常过强,在特征相关性较强时性能可能受到影响。

集成学习

Bagging方法

Bagging(Bootstrap Aggregating)是一类并行式集成学习方法,其核心思想是:通过对训练集进行有放回抽样,构造多个不同的训练子集,在每个子集上训练一个基学习器,最后再将这些学习器的结果进行综合。

设共有 $T$ 个基学习器,第 $t$ 个基学习器的输出为 $h_t(x)$,则:

  • 对于分类问题,常采用多数投票法:
    • $ H(x) = \arg\max_{y} \sum_{t=1}^{T} I(h_t(x)=y) $
  • 对于回归问题,常采用平均法:
    • $ H(x) = \frac{1}{T}\sum_{t=1}^{T} h_t(x) $

其中,$I(\cdot)$ 为示性函数,当条件成立时取 $1$,否则取 $0$。

Bagging 的主要步骤为:

  1. 从原始训练集有放回地抽样,得到 $T$ 个训练子集;
  2. 在每个训练子集上分别训练一个基学习器;
  3. 将所有基学习器的输出进行投票或平均,得到最终结果。
  • 留一自举法(Out-of-Bag, OOB):

由于 Bagging 采用的是有放回抽样,所以每次自举采样后,原始训练集中会有一部分样本没有被抽到。这些未被抽中的样本称为袋外样本(out-of-bag samples),可用于对当前基学习器进行验证。

设训练集大小为 $N$,某个样本在一次抽样中未被选中的概率为

  • $ 1-\frac{1}{N} $

经过 $N$ 次有放回抽样后,该样本始终未被抽中的概率约为

  • $ \left(1-\frac{1}{N}\right)^N \approx e^{-1} \approx 0.368 $

因此,大约有 $36.8\%$ 的样本会成为袋外样本,可以直接用来估计模型的泛化误差,而不必额外划分验证集。

  • Bagging 算法为什么有效:

Bagging 的主要作用是降低模型的方差。设多个基学习器的输出分别为 $h_1(x),h_2(x),\dots,h_T(x)$,最终集成输出为它们的平均:

  • $ H(x) = \frac{1}{T}\sum_{t=1}^{T} h_t(x) $

若各基学习器相互独立,且方差都为 $\sigma^2$,则集成输出的方差为

  • $ \operatorname{Var}(H(x)) = \operatorname{Var}\left(\frac{1}{T}\sum_{t=1}^{T} h_t(x)\right) = \frac{1}{T^2}\sum_{t=1}^{T} \operatorname{Var}(h_t(x)) = \frac{\sigma^2}{T} $

可见,随着基学习器数量 $T$ 增加,集成结果的方差会减小,因此模型预测会更加稳定。实际中各基学习器通常并非完全独立,但只要它们之间不是完全相关,Bagging 依然能够起到明显的方差降低作用,这也是其有效性的主要原因。

随机森林(Random Forest)是 Bagging 的代表算法之一,它以决策树作为基学习器,并在 Bagging 的基础上进一步引入特征随机选择机制。

其基本思想是:

  1. 通过自举采样生成多个训练子集;
  2. 在每个子集上训练一棵决策树;
  3. 在每个节点划分时,不是从全部特征中选择最优划分特征,而是先随机选取一部分特征,再从这部分特征中选择最优划分;
  4. 最终将多棵决策树的结果进行投票或平均,得到集成结果。

设每次节点划分时随机选取的特征子集大小为 $m$,总特征数为 $d$,则有

  • $ m < d $

这种随机选特征的方式能够降低各棵树之间的相关性,从而进一步增强 Bagging 降低方差的效果。

随机森林的优点包括:

  • 具有较好的泛化能力;
  • 能够处理高维数据;
  • 对噪声和异常值不太敏感;
  • 可以估计特征的重要性。

因此,随机森林可以看作是“Bagging + 决策树 + 特征随机选择”的组合模型,是集成学习中非常常用的方法。

Boosting方法

Boosting 是一类串行式集成学习方法,其核心思想是:按照顺序训练多个基学习器,后一个学习器重点关注前一个学习器难以正确分类的样本,从而逐步提高整体性能。

与 Bagging 不同,Boosting 更强调“逐步修正前面的错误”。最终模型通常表示为多个弱学习器的加权组合:

  • $ H(x) = \sum_{t=1}^{T} \alpha_t h_t(x) $

其中,$h_t(x)$ 表示第 $t$ 个基学习器,$\alpha_t$ 表示该学习器的权重。

Boosting 的基本思想可以概括为:

  1. 初始时,给每个训练样本分配相同权重;
  2. 训练第一个基学习器;
  3. 根据分类结果,提高被错误分类样本的权重,降低被正确分类样本的权重;
  4. 继续训练下一个基学习器,使其更关注难分样本;
  5. 将多个基学习器加权组合,形成最终强学习器。

Boosting 的代表算法是 AdaBoost。在二分类情形下,若第 $t$ 个基学习器的错误率为 $\varepsilon_t$,则其权重常写为:

  • $ \alpha_t = \frac{1}{2} \ln \frac{1-\varepsilon_t}{\varepsilon_t} $

最终分类器可写为:

  • $ H(x) = \operatorname{sign}\left(\sum_{t=1}^{T} \alpha_t h_t(x)\right) $

Boosting 往往能够显著提高分类精度,但对噪声和异常点相对敏感,因为这些样本在迭代过程中可能被不断放大其影响。