【模式识别与机器学习(3)】主要算法与技术(中篇:概率统计与回归方法)之贝叶斯方法(Bayesian)

文章目录

一、考试范围知识框架

  • 贝叶斯定理基础
  • 朴素贝叶斯分类器
  • 贝叶斯决策理论
  • 参数估计方法(最大似然估计、最大后验估计、贝叶斯参数估计)
  • EM算法

二、正文内容

1. 贝叶斯定理基础

关键词:利用已知判断未知,并能给出概率;先验概率、似然概率、后验概率、条件概率、贝叶斯公式

什么是贝叶斯定理?(用已知信息更新对未知事物的判断)

贝叶斯(Reverend Thomas Bayes, 1702-1763)是英国数学家,1763年发表《论机会学说问题的求解》,提出了著名的"贝叶斯定理(或贝叶斯公式)"和一种归纳推理方法。

简单来说,贝叶斯定理是一种"用已知信息更新我们对未知事物的判断"的方法。就像医生看病:先根据经验知道某种疾病的发病率(先验知识),然后看到病人的症状(新信息),最后更新判断这个病人得这种病的可能性(后验概率)。

概率基础

概率的基本概念

在机器学习中,我们经常需要处理两类变量:

  • x (观测变量,我们能看到的数据,比如病人的症状、天气情况等)
  • c (模型变量,我们想预测的结果,比如疾病类型、是否适合户外活动等)。

概率可以按照不同的方式分类:

1. 按变量存在形式分类:

  • 联合概率 p ( c , x ) p(c,x) p(c,x):两个事件同时发生的概率
    p ( c , x ) = p ( x ∣ c ) ⋅ p ( c ) = p ( c ∣ x ) ⋅ p ( x ) p(c,x) = p(x|c) \cdot p(c) = p(c|x) \cdot p(x) p(c,x)=p(x∣c)⋅p(c)=p(c∣x)⋅p(x)

  • 边缘概率 p ( x ) p(x) p(x) 或 p ( c ) p(c) p(c):只考虑一个变量的概率
    p ( c ) = ∑ x p ( c , x ) , p ( x ) = ∑ c p ( c , x ) p(c) = \sum_x p(c,x), \quad p(x) = \sum_c p(c,x) p(c)=x∑p(c,x),p(x)=c∑p(c,x)

  • 条件概率 p ( c ∣ x ) p(c|x) p(c∣x) 或 p ( x ∣ c ) p(x|c) p(x∣c):在已知一个事件发生的条件下,另一个事件发生的概率

2. 按是否具有观测数据分类:

这是贝叶斯方法中最重要的三种概率:

  • 先验概率 p ( c ) p(c) p(c):在没有观测数据的情况下,我们对类别 c c c 的初始判断。例如:在没有看到任何症状时,我们知道某种疾病的发病率是 1%
  • 似然概率 p ( x ∣ c ) p(x|c) p(x∣c):在给定类别 c c c 的条件下,观测到数据 x x x 的概率。例如:如果一个人得了某种疾病,出现某个症状的概率是 80%
  • 后验概率 p ( c ∣ x ) p(c|x) p(c∣x):在观测到数据 x x x 后,类别 c c c 的概率。例如:看到某个症状后,这个人得这种疾病的概率是多少?(看到这个症状之后大夫诊断病情
贝叶斯公式

贝叶斯定理的核心公式是:

P ( C ∣ X ) = P ( X ∣ C ) ⋅ P ( C ) P ( X ) P(C|X) = \frac{P(X|C) \cdot P(C)}{P(X)} P(C∣X)=P(X)P(X∣C)⋅P(C)

让我们用更通俗的方式理解这个公式:P ( C ) P(C) P(C) 是类别 C C C 的先验概率(在没有看到数据 X X X 之前,我们对类别 C C C 的初始判断);P ( X ) P(X) P(X) 是数据 X X X 的先验概率(数据 X X X 出现的概率,与类别无关);P ( X ∣ C ) P(X|C) P(X∣C) 是似然概率(如果类别是 C C C,观测到数据 X X X 的概率);P ( C ∣ X ) P(C|X) P(C∣X) 是后验概率(看到数据 X X X 后,类别是 C C C 的概率)。

贝叶斯公式告诉我们:后验概率 = (似然概率 × 先验概率) / 数据概率

贝叶斯方法的优势

关键点:

  1. 能够基于概率处理不确定性;
  2. 概率阈值低于多少放弃判断

贝叶斯方法的一个重要特点是能够处理不确定性。这个特点体现在两个方面:

1. 可以给出具有不确定性的预测,明确地知道系统的处理能力

传统分类方法(如决策树、kNN)通常只给出一个确定的类别标签,比如"这是猫"或"这是狗"。但贝叶斯方法会告诉你概率,比如"这是猫的概率是 85%,是狗的概率是 15%"。

实际例子对比:

  • 传统方法:看到一张模糊的图片 → "这是猫"(100%确定)
  • 贝叶斯方法:看到一张模糊的图片 → "这是猫的概率是 60%,是狗的概率是 30%,不确定的概率是 10%"

贝叶斯方法通过概率值告诉你:
置信度有多高 (如果概率是 95%,说明很有把握;如果概率是 51%,说明把握不大);
系统有多可靠(概率值接近 1.0 或 0.0 时,系统很确定;概率值接近 0.5 时,系统不确定)。

2. 当系统遇到无法理解的场景时,能够给出"无法处理"的回答

有些机器学习方法(特别是深度神经网络)即使遇到从未见过的数据,也会强行给出一个分类结果,但这个结果很可能是错误的。

贝叶斯方法可以通过概率值判断:如果所有类别的概率都很低(比如都低于某个阈值),说明这个样本可能不在训练数据的分布范围内,系统可以拒绝分类。

实际例子对比:

假设我们训练了一个识别猫和狗的模型:

  • 传统方法:遇到一张汽车的图片 → 强行分类为"猫"(错误!)
  • 贝叶斯方法 :遇到一张汽车的图片 → 计算后发现: P ( 猫 ∣ 汽车图片 ) = 0.3 P(\text{猫} | \text{汽车图片}) = 0.3 P(猫∣汽车图片)=0.3, P ( 狗 ∣ 汽车图片 ) = 0.25 P(\text{狗} | \text{汽车图片}) = 0.25 P(狗∣汽车图片)=0.25,两个概率都很低,且都不超过阈值 0.5,系统回答:"无法确定,这个样本可能不属于训练数据的分布范围"

为什么这很重要?

这就像一个有自知之明的医生:好医生 看到不熟悉的症状 → "这个症状我无法确定是什么病,建议做进一步检查"(诚实、负责);差医生看到不熟悉的症状 → 随便给一个诊断(可能误诊,造成严重后果)。

在医疗诊断、自动驾驶、金融风控等高风险场景 中,能够识别"不确定"和"无法处理"的情况非常重要,因为:承认不确定给出错误答案更安全;可以触发人工干预或进一步检查;避免因为过度自信而造成严重后果。

这种能力让贝叶斯方法特别适合需要可靠性评估风险控制的应用场景。

2. 朴素贝叶斯分类器

关键词

  1. 一种分类方法:文本分类,垃圾过滤等方面表现优秀;
  2. 朴素:因为做了条件独立性假设(属性独立,后验概率不受影响);
  3. 朴素贝叶斯分类器选择后验概率最大的类别作为预测结果;
  4. 实际使用频率估计来计算这些概率
什么是朴素贝叶斯分类器?

朴素贝叶斯分类器(Naive Bayes Classifier)是一种基于贝叶斯定理的分类方法。它之所以叫"朴素"(Naive),是因为它做了一个简化假设:假设所有特征(属性)之间是相互独立的。虽然这个假设在现实中往往不成立(比如"长头发"和"女性服饰"这两个特征通常是相关的),但朴素贝叶斯在实际应用中表现却出人意料地好,特别是在文本分类、垃圾邮件过滤等场景中。

假设我们有一个待分类的样本,它有 n n n 个属性(特征):

  • 属性变量 X 1 , X 2 , ... , X n X_1, X_2, \ldots, X_n X1,X2,...,Xn(比如:天气、温度、湿度、风力),
  • 类别变量 C C C(比如:是否适合户外活动,取值为 yes 或 no)。待分类样本的属性值分别是 a 1 , a 2 , ... , a n a_1, a_2, \ldots, a_n a1,a2,...,an(比如:晴天、凉爽、高湿度、有风),
  • 目标是计算这个样本属于各个类别 c i c_i ci 的概率 P ( c i ∣ a 1 , a 2 , ... , a n ) P(c_i | a_1, a_2, \ldots, a_n) P(ci∣a1,a2,...,an),取最大概率作为分类依据

根据贝叶斯公式,我们有:

P ( c i ∣ a 1 , a 2 , ... , a n ) = P ( a 1 , a 2 , ... , a n ∣ c i ) ⋅ P ( c i ) P ( a 1 , a 2 , ... , a n ) P(c_i | a_1, a_2, \ldots, a_n) = \frac{P(a_1, a_2, \ldots, a_n | c_i) \cdot P(c_i)}{P(a_1, a_2, \ldots, a_n)} P(ci∣a1,a2,...,an)=P(a1,a2,...,an)P(a1,a2,...,an∣ci)⋅P(ci)

注意:分母 P ( a 1 , a 2 , ... , a n ) P(a_1, a_2, \ldots, a_n) P(a1,a2,...,an) 对于所有类别 c i c_i ci 都是相同的,所以在比较不同类别的后验概率时,我们可以忽略它(因为它只是一个归一化常数)。

计算 P ( a 1 , a 2 , ... , a n ∣ c i ) P(a_1, a_2, \ldots, a_n | c_i) P(a1,a2,...,an∣ci) 需要知道所有属性值的联合概率,这在属性很多时计算量非常大。

朴素贝叶斯的核心假设 :在给定类别 c i c_i ci 的条件下,各个属性变量之间是条件独立 的。也就是说,如果我们知道类别是 c i c_i ci,那么属性 X 1 X_1 X1 的值不会影响属性 X 2 X_2 X2 的值。这个假设让我们可以将联合概率分解为各个属性概率的乘积:

P ( a 1 , a 2 , ... , a n ∣ c i ) = P ( a 1 ∣ c i ) ⋅ P ( a 2 ∣ c i ) ⋅ ... ⋅ P ( a n ∣ c i ) = ∏ j = 1 n P ( a j ∣ c i ) P(a_1, a_2, \ldots, a_n | c_i) = P(a_1 | c_i) \cdot P(a_2 | c_i) \cdot \ldots \cdot P(a_n | c_i) = \prod_{j=1}^{n} P(a_j | c_i) P(a1,a2,...,an∣ci)=P(a1∣ci)⋅P(a2∣ci)⋅...⋅P(an∣ci)=j=1∏nP(aj∣ci)

分类决策规则

朴素贝叶斯分类器选择后验概率最大的类别作为预测结果:

预测类别 = arg ⁡ max ⁡ c i ∈ C P ( c i ∣ a 1 , a 2 , ... , a n ) \text{预测类别} = \arg\max_{c_i \in C} P(c_i | a_1, a_2, \ldots, a_n) 预测类别=argci∈CmaxP(ci∣a1,a2,...,an)

由于分母 P ( a 1 , a 2 , ... , a n ) P(a_1, a_2, \ldots, a_n) P(a1,a2,...,an) 对所有类别都相同,我们可以简化为:

预测类别 = arg ⁡ max ⁡ c i ∈ C P ( a 1 , a 2 , ... , a n ∣ c i ) ⋅ P ( c i ) \text{预测类别} = \arg\max_{c_i \in C} P(a_1, a_2, \ldots, a_n | c_i) \cdot P(c_i) 预测类别=argci∈CmaxP(a1,a2,...,an∣ci)⋅P(ci)

进一步利用条件独立性假设:

预测类别 = arg ⁡ max ⁡ c i ∈ C P ( c i ) ⋅ ∏ j = 1 n P ( a j ∣ c i ) \text{预测类别} = \arg\max_{c_i \in C} P(c_i) \cdot \prod_{j=1}^{n} P(a_j | c_i) 预测类别=argci∈CmaxP(ci)⋅j=1∏nP(aj∣ci)

在实际应用中,我们使用频率估计来计算这些概率:

  1. 先验概率 P ( c i ) P(c_i) P(ci):类别 c i c_i ci 在训练数据中出现的频率
    P ( c i ) = 类别 c i 的样本数 总样本数 P(c_i) = \frac{\text{类别 } c_i \text{ 的样本数}}{\text{总样本数}} P(ci)=总样本数类别 ci 的样本数

  2. 条件概率 P ( a j ∣ c i ) P(a_j | c_i) P(aj∣ci):在类别 c i c_i ci 中,属性 X j X_j Xj 取值为 a j a_j aj 的频率
    P ( a j ∣ c i ) = 类别 c i 中属性 X j = a j 的样本数 类别 c i 的样本数 P(a_j | c_i) = \frac{\text{类别 } c_i \text{ 中属性 } X_j = a_j \text{ 的样本数}}{\text{类别 } c_i \text{ 的样本数}} P(aj∣ci)=类别 ci 的样本数类别 ci 中属性 Xj=aj 的样本数

实际应用示例(找到最大后验概率,得出分类)

示例1:天气数据分类

假设我们有一个天气数据集,用于预测是否适合户外活动。数据集包含14个样本,每个样本有4个属性:天气(Outlook)、温度(Temperature)、湿度(Humidity)、风力(Windy)。

训练数据统计:

  • 类别分布:9个"yes"(适合),5个"no"(不适合)
  • 先验概率: P ( yes ) = 9 / 14 P(\text{yes}) = 9/14 P(yes)=9/14, P ( no ) = 5 / 14 P(\text{no}) = 5/14 P(no)=5/14

条件概率示例(部分):

  • P ( Sunny ∣ yes ) = 2 / 9 P(\text{Sunny} | \text{yes}) = 2/9 P(Sunny∣yes)=2/9(在"适合"的样本中,天气为"晴天"的比例)
  • P ( Cool ∣ yes ) = 3 / 9 P(\text{Cool} | \text{yes}) = 3/9 P(Cool∣yes)=3/9(在"适合"的样本中,温度为"凉爽"的比例)
  • P ( High ∣ yes ) = 3 / 9 P(\text{High} | \text{yes}) = 3/9 P(High∣yes)=3/9(在"适合"的样本中,湿度为"高"的比例)
  • P ( True ∣ yes ) = 3 / 9 P(\text{True} | \text{yes}) = 3/9 P(True∣yes)=3/9(在"适合"的样本中,有风的比例)

预测新样本:

假设新样本的属性值为:Sunny(晴天)、Cool(凉爽)、High(高湿度)、True(有风)

计算 P ( yes ∣ Sunny , Cool , High , True ) P(\text{yes} | \text{Sunny}, \text{Cool}, \text{High}, \text{True}) P(yes∣Sunny,Cool,High,True):
P ( yes ∣ D ) = P ( Sunny ∣ yes ) ⋅ P ( Cool ∣ yes ) ⋅ P ( High ∣ yes ) ⋅ P ( True ∣ yes ) ⋅ P ( yes ) P ( D ) = ( 2 / 9 ) × ( 3 / 9 ) × ( 3 / 9 ) × ( 3 / 9 ) × ( 9 / 14 ) P ( D ) = 0.0053 P ( D ) P(\text{yes} | D) = \frac{P(\text{Sunny} | \text{yes}) \cdot P(\text{Cool} | \text{yes}) \cdot P(\text{High} | \text{yes}) \cdot P(\text{True} | \text{yes}) \cdot P(\text{yes})}{P(D)} = \frac{(2/9) \times (3/9) \times (3/9) \times (3/9) \times (9/14)}{P(D)} = \frac{0.0053}{P(D)} P(yes∣D)=P(D)P(Sunny∣yes)⋅P(Cool∣yes)⋅P(High∣yes)⋅P(True∣yes)⋅P(yes)=P(D)(2/9)×(3/9)×(3/9)×(3/9)×(9/14)=P(D)0.0053

计算 P ( no ∣ Sunny , Cool , High , True ) P(\text{no} | \text{Sunny}, \text{Cool}, \text{High}, \text{True}) P(no∣Sunny,Cool,High,True):
P ( no ∣ D ) = P ( Sunny ∣ no ) ⋅ P ( Cool ∣ no ) ⋅ P ( High ∣ no ) ⋅ P ( True ∣ no ) ⋅ P ( no ) P ( D ) = ( 3 / 5 ) × ( 1 / 5 ) × ( 4 / 5 ) × ( 3 / 5 ) × ( 5 / 14 ) P ( D ) = 0.0206 P ( D ) P(\text{no} | D) = \frac{P(\text{Sunny} | \text{no}) \cdot P(\text{Cool} | \text{no}) \cdot P(\text{High} | \text{no}) \cdot P(\text{True} | \text{no}) \cdot P(\text{no})}{P(D)} = \frac{(3/5) \times (1/5) \times (4/5) \times (3/5) \times (5/14)}{P(D)} = \frac{0.0206}{P(D)} P(no∣D)=P(D)P(Sunny∣no)⋅P(Cool∣no)⋅P(High∣no)⋅P(True∣no)⋅P(no)=P(D)(3/5)×(1/5)×(4/5)×(3/5)×(5/14)=P(D)0.0206

由于 P ( no ∣ D ) > P ( yes ∣ D ) P(\text{no} | D) > P(\text{yes} | D) P(no∣D)>P(yes∣D),所以预测结果为"no"(不适合户外活动)。

示例2:图像性别分类

假设我们要根据图像特征判断性别:类别 C 1 C_1 C1 = 男人, C 2 C_2 C2 = 女人;特征 X 1 X_1 X1 = 长头发, X 2 X_2 X2 = 白皮肤, X 3 X_3 X3 = 细眉毛, X 4 X_4 X4 = 女性服饰。

对于一张图片,计算它属于"女人"的概率:

P ( C 2 ∣ X ) = P ( X 1 ∣ C 2 ) ⋅ P ( X 2 ∣ C 2 ) ⋅ P ( X 3 ∣ C 2 ) ⋅ P ( X 4 ∣ C 2 ) ⋅ P ( C 2 ) P ( X ) P(C_2 | X) = \frac{P(X_1 | C_2) \cdot P(X_2 | C_2) \cdot P(X_3 | C_2) \cdot P(X_4 | C_2) \cdot P(C_2)}{P(X)} P(C2∣X)=P(X)P(X1∣C2)⋅P(X2∣C2)⋅P(X3∣C2)⋅P(X4∣C2)⋅P(C2)

类似地计算 P ( C 1 ∣ X ) P(C_1 | X) P(C1∣X),然后选择概率较大的类别作为预测结果。

朴素贝叶斯的优缺点

优点:

  • 简单易懂,实现容易
  • 训练速度快,只需要统计频率
  • 对小规模数据表现良好
  • 对噪声数据不敏感
  • 可以处理多分类问题

缺点:

  • "朴素"假设(属性独立)在现实中往往不成立
  • 如果某个属性值在训练数据中 从未出现,会导致概率为0(需要使用平滑技术解决
  • 对输入数据的表达形式敏感

3. 贝叶斯决策理论

关键词

  1. 优化决策核心:后验概率+错误决策的损失做出最优策略
  2. 最小错误率决策:适用于所有错误代价相同的场景(如识别猫和狗)
  3. 最小风险决策:适用于不同错误代价不同的场景(如医疗诊断、金融风控)
什么是贝叶斯决策?

贝叶斯决策(Bayesian decision)通过综合考虑决策的后验概率错误决策的损失来做出最优决策。

想象你在做一个重要的决定:比如医生诊断疾病、银行判断是否放贷、自动驾驶判断是否刹车。贝叶斯决策理论告诉我们,不仅要考虑"哪个选项最可能正确",还要考虑"如果判断错了,损失有多大"。

最小错误率贝叶斯决策

核心思想:选择错误率最小的决策,不考虑错误的代价。

决策规则 :如果 p ( c = 1 ∣ x ) > p ( c = 2 ∣ x ) p(c=1|x) > p(c=2|x) p(c=1∣x)>p(c=2∣x),则 x x x 被判定为 c = 1 c=1 c=1;否则 x x x 被判定为 c = 2 c=2 c=2。

通俗理解:就像做选择题,哪个选项概率大就选哪个,不管选错了扣多少分。

例子 :识别猫和狗。看到一张图片,计算后: P ( 猫 ∣ 图片 ) = 0.6 P(\text{猫} | \text{图片}) = 0.6 P(猫∣图片)=0.6, P ( 狗 ∣ 图片 ) = 0.4 P(\text{狗} | \text{图片}) = 0.4 P(狗∣图片)=0.4。决策:选择概率更大的"猫"。

最小风险贝叶斯决策

核心思想 :选择平均损失最小的决策,考虑不同错误的代价不同。

为什么需要最小风险决策?

在现实生活中,不同的错误代价是不同的:

  1. 医疗诊断中把癌症误诊为良性(漏诊)的代价,远大于把良性误诊为癌症(误诊)的代价;
  2. 垃圾邮件过滤中把正常邮件误判为垃圾邮件(误杀)的代价,可能大于把垃圾邮件误判为正常邮件(漏杀)的代价;
  3. 金融风控中把高风险客户误判为低风险(放贷)的损失,远大于把低风险客户误判为高风险(拒贷)的损失。

损失矩阵

损失矩阵 λ i j \lambda_{ij} λij 表示:本应为第 j j j 类的样本,被误判为第 i i i 类的损失

例子:医疗诊断的损失矩阵

假设有两个类别: c 1 c_1 c1 = 癌症, c 2 c_2 c2 = 良性

实际类别 \ 预测类别 预测为癌症 预测为良性
实际是癌症 0(正确) 100(漏诊,损失大)
实际是良性 10(误诊,损失小) 0(正确)

这个损失矩阵告诉我们:把癌症误判为良性:损失 = 100(非常严重);把良性误判为癌症:损失 = 10(可以接受,因为可以进一步检查)。

条件风险

条件风险 R ( α i ∣ x ) R(\alpha_i | x) R(αi∣x) 表示:在观测到数据 x x x 时,采取决策 α i \alpha_i αi 的期望损失

R ( α i ∣ x ) = ∑ j λ ( α i ∣ c = j ) ⋅ p ( c = j ∣ x ) R(\alpha_i | x) = \sum_{j} \lambda(\alpha_i | c=j) \cdot p(c=j | x) R(αi∣x)=j∑λ(αi∣c=j)⋅p(c=j∣x)

决策规则:选择使得条件风险最小的决策。

实际例子:医疗诊断

假设看到某个症状后: P ( 癌症 ∣ 症状 ) = 0.3 P(\text{癌症} | \text{症状}) = 0.3 P(癌症∣症状)=0.3, P ( 良性 ∣ 症状 ) = 0.7 P(\text{良性} | \text{症状}) = 0.7 P(良性∣症状)=0.7。

如果预测为癌症 (决策 α 1 \alpha_1 α1):
R ( α 1 ∣ x ) = λ ( α 1 ∣ 癌症 ) ⋅ 0.3 + λ ( α 1 ∣ 良性 ) ⋅ 0.7 = 0 × 0.3 + 10 × 0.7 = 7 R(\alpha_1 | x) = \lambda(\alpha_1 | \text{癌症}) \cdot 0.3 + \lambda(\alpha_1 | \text{良性}) \cdot 0.7 = 0 \times 0.3 + 10 \times 0.7 = 7 R(α1∣x)=λ(α1∣癌症)⋅0.3+λ(α1∣良性)⋅0.7=0×0.3+10×0.7=7

如果预测为良性 (决策 α 2 \alpha_2 α2):
R ( α 2 ∣ x ) = λ ( α 2 ∣ 癌症 ) ⋅ 0.3 + λ ( α 2 ∣ 良性 ) ⋅ 0.7 = 100 × 0.3 + 0 × 0.7 = 30 R(\alpha_2 | x) = \lambda(\alpha_2 | \text{癌症}) \cdot 0.3 + \lambda(\alpha_2 | \text{良性}) \cdot 0.7 = 100 \times 0.3 + 0 \times 0.7 = 30 R(α2∣x)=λ(α2∣癌症)⋅0.3+λ(α2∣良性)⋅0.7=100×0.3+0×0.7=30

虽然 P ( 良性 ∣ 症状 ) = 0.7 > 0.3 P(\text{良性} | \text{症状}) = 0.7 > 0.3 P(良性∣症状)=0.7>0.3,但考虑到漏诊癌症的损失太大(100),应该选择"预测为癌症"(风险更小:7 < 30)。

两种决策方法的关系

当损失定义为0-1损失 时(所有错误的代价都相同): λ ( α i ∣ c = j ) = 0 \lambda(\alpha_i | c=j) = 0 λ(αi∣c=j)=0(如果 i = j i = j i=j,正确), λ ( α i ∣ c = j ) = 1 \lambda(\alpha_i | c=j) = 1 λ(αi∣c=j)=1(如果 i ≠ j i \neq j i=j,错误)。此时,最小风险贝叶斯决策就退化为最小错误率贝叶斯决策。

总结

  • 最小错误率决策:适用于所有错误代价相同的场景(如识别猫和狗)
  • 最小风险决策:适用于不同错误代价不同的场景(如医疗诊断、金融风控)

4. 参数估计方法(从数据中学习模型的参数)

关键词

  1. 最大似然估计:找到使得观测数据出现概率最大的参数值。
  2. 最大后验估计:结合先验
  3. 贝叶斯参数估计:估计参数的概率分布,
什么是参数估计?

在机器学习中,我们经常需要从数据中学习模型的参数

比如:

  1. 朴素贝叶斯中需要估计 P ( c i ) P(c_i) P(ci) 和 P ( a j ∣ c i ) P(a_j | c_i) P(aj∣ci);
  2. 线性回归中需要估计回归系数 β \beta β;
  3. 高斯分布中需要估计均值 μ \mu μ 和方差 σ 2 \sigma^2 σ2。

参数估计就是:根据观测到的数据,找到最合适的模型参数值

最大似然估计(MLE)

核心思想:找到使得观测数据出现概率最大的参数值。就像警察破案,找到最能让证据(数据)说得通的解释(参数)。

数学表达 :在给定观测数据 D D D 时,找到使得似然函数 p ( D ∣ θ ) p(D|\theta) p(D∣θ) 最大的参数 θ \theta θ:

θ ^ M L E = arg ⁡ max ⁡ θ p ( D ∣ θ ) \hat{\theta}{MLE} = \arg\max{\theta} p(D|\theta) θ^MLE=argθmaxp(D∣θ)

为了计算方便,通常使用似然函数的自然对数(对数似然)作为优化目标,因为:乘积变成求和,计算更简单;对数函数单调递增,最大值位置不变

例子:估计硬币的正面概率

假设抛硬币10次,观察到7次正面,3次反面。用最大似然估计硬币正面概率 p p p:

  • 似然函数: L ( p ) = p 7 ( 1 − p ) 3 L(p) = p^7 (1-p)^3 L(p)=p7(1−p)3
  • 对数似然: ln ⁡ L ( p ) = 7 ln ⁡ p + 3 ln ⁡ ( 1 − p ) \ln L(p) = 7\ln p + 3\ln(1-p) lnL(p)=7lnp+3ln(1−p)
  • 求导并令其等于0: 7 p − 3 1 − p = 0 \frac{7}{p} - \frac{3}{1-p} = 0 p7−1−p3=0
  • 解得: p ^ = 7 / 10 = 0.7 \hat{p} = 7/10 = 0.7 p^=7/10=0.7

特点:只考虑数据,不考虑先验知识;数据量大时效果好;可能过拟合(完全依赖数据)。

最大后验估计(MAP)

核心思想:在考虑数据的同时,也考虑参数的先验知识。不仅看证据(数据),还考虑常识(先验)。就像法官判案,既要看证据,也要考虑被告的历史记录。

数学表达 :找到使得后验概率 p ( θ ∣ D ) p(\theta|D) p(θ∣D) 最大的参数 θ \theta θ:

θ ^ M A P = arg ⁡ max ⁡ θ p ( θ ∣ D ) = arg ⁡ max ⁡ θ p ( D ∣ θ ) ⋅ p ( θ ) p ( D ) = arg ⁡ max ⁡ θ p ( D ∣ θ ) ⋅ p ( θ ) \hat{\theta}{MAP} = \arg\max{\theta} p(\theta|D) = \arg\max_{\theta} \frac{p(D|\theta) \cdot p(\theta)}{p(D)} = \arg\max_{\theta} p(D|\theta) \cdot p(\theta) θ^MAP=argθmaxp(θ∣D)=argθmaxp(D)p(D∣θ)⋅p(θ)=argθmaxp(D∣θ)⋅p(θ)

注意:分母 p ( D ) p(D) p(D) 与 θ \theta θ 无关,可以忽略。

与最大似然估计的区别MLE 只最大化 p ( D ∣ θ ) p(D|\theta) p(D∣θ)(似然),MAP 最大化 p ( D ∣ θ ) ⋅ p ( θ ) p(D|\theta) \cdot p(\theta) p(D∣θ)⋅p(θ)(似然 × 先验)。

例子:估计硬币的正面概率(带先验)

假设我们先验知道 :这个硬币来自一个工厂,该工厂生产的硬币正面概率通常在0.4-0.6之间(先验知识)。如果观测到7次正面,3次反面:MLE估计: p ^ = 0.7 \hat{p} = 0.7 p^=0.7(完全相信数据);MAP估计:可能得到 p ^ = 0.55 \hat{p} = 0.55 p^=0.55(在数据和先验之间平衡)。

特点:结合数据和先验知识;可以防止过拟合;需要知道先验分布。

贝叶斯参数估计

核心思想 :不估计参数的单一值,而是估计参数的概率分布 。MLE和MAP都给出一个"点估计"(比如 p = 0.7 p = 0.7 p=0.7),而贝叶斯估计给出一个"分布"(比如 p p p 在0.6-0.8之间的概率是80%)。

数学表达:通过贝叶斯公式计算参数的后验分布:

p ( θ ∣ D ) = p ( D ∣ θ ) ⋅ p ( θ ) p ( D ) p(\theta|D) = \frac{p(D|\theta) \cdot p(\theta)}{p(D)} p(θ∣D)=p(D)p(D∣θ)⋅p(θ)

与MAP的区别MAP 找到后验分布的最大值 (一个点),贝叶斯估计 保留整个后验分布(所有可能的值及其概率)。

实际应用

在训练完成后,对于新的测试样本 x ∗ x^* x∗,我们可以利用参数的后验分布计算类条件概率:

p ( x ∗ ∣ D ) = ∫ p ( x ∗ ∣ θ ) ⋅ p ( θ ∣ D ) d θ p(x^*|D) = \int p(x^*|\theta) \cdot p(\theta|D) d\theta p(x∗∣D)=∫p(x∗∣θ)⋅p(θ∣D)dθ

这相当于对所有可能的参数值进行加权平均,权重是参数的后验概率。

例子:预测新样本

假设我们估计了参数 θ \theta θ 的后验分布: p ( θ = 0.6 ∣ D ) = 0.3 p(\theta = 0.6 | D) = 0.3 p(θ=0.6∣D)=0.3, p ( θ = 0.7 ∣ D ) = 0.5 p(\theta = 0.7 | D) = 0.5 p(θ=0.7∣D)=0.5, p ( θ = 0.8 ∣ D ) = 0.2 p(\theta = 0.8 | D) = 0.2 p(θ=0.8∣D)=0.2。

预测新样本时,不是只用 θ = 0.7 \theta = 0.7 θ=0.7(MAP),而是考虑所有可能的值:用 θ = 0.6 \theta = 0.6 θ=0.6 预测,权重0.3;用 θ = 0.7 \theta = 0.7 θ=0.7 预测,权重0.5;用 θ = 0.8 \theta = 0.8 θ=0.8 预测,权重0.2;最后加权平均得到最终预测。

特点:保留了不确定性信息;计算复杂(需要积分);理论上最完整,但实际中常用MAP近似。

EM算法(期望最大化算法)

核心思想 :当数据中有隐藏变量(我们看不到的变量)时,通过迭代的方式估计参数。就像拼图,有些碎片(隐藏变量)丢失了,我们需要一边猜测碎片的样子,一边拼图,反复调整直到拼图完整。

应用场景:数据中有缺失值;混合模型(不知道每个样本属于哪个子模型);聚类问题(不知道每个样本属于哪个簇)。

算法流程

  1. 初始化 :随机初始化参数 θ ( 0 ) \theta^{(0)} θ(0)
  2. 迭代直到收敛
    • E步骤(Expectation) :根据当前参数估计,计算隐藏变量的期望值
    • M步骤(Maximization):根据隐藏变量的期望值,重新估计参数,使得数据的似然性最大

例子:混合高斯模型

假设数据来自两个高斯分布的混合,但我们不知道每个样本来自哪个分布:

  • E步骤:根据当前参数,计算每个样本属于分布1的概率和属于分布2的概率
  • M步骤:根据这些概率(权重),重新估计两个分布的均值和方差
  • 重复E和M步骤,直到参数不再变化

特点:适用于有隐藏变量的情况;保证每次迭代后似然函数不减小;可能收敛到局部最优解;广泛应用于聚类、主题模型等。

三种估计方法的对比
方法 输出 是否考虑先验 适用场景
最大似然估计(MLE) 参数的点估计 数据量大,无先验知识
最大后验估计(MAP) 参数的点估计 有先验知识,需要防止过拟合
贝叶斯参数估计 参数的概率分布 需要保留不确定性信息

选择建议

  • 数据充足且无先验知识 → 使用MLE
  • 有先验知识或数据不足 → 使用MAP
  • 需要量化不确定性 → 使用贝叶斯估计
  • 数据有隐藏变量 → 使用EM算法
相关推荐
AI科技星1 小时前
加速正电荷产生的电场、引力场与磁场变化率方向关系的数学求导验证——基于张祥前统一场论核心方程
数据结构·人工智能·经验分享·算法·机器学习·计算机视觉
zore_c1 小时前
【C语言】文件操作详解1(文件的打开与关闭)
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
资深web全栈开发1 小时前
[特殊字符] LeetCode 2141:如何让 N 台电脑续航最久?——“二分答案“套路一文讲透
算法·leetcode
刃神太酷啦1 小时前
C++的IO流和C++的类型转换----《Hello C++ Wrold!》(29)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode
稚辉君.MCA_P8_Java1 小时前
Gemini永久会员 哈希表(Hash Table)高效的数据结构
java·数据结构·后端·算法·架构
Teroin1 小时前
LeetCode55 跳跃游戏
数据结构·算法·leetcode
summer__77771 小时前
【期末复习01】-算法题ProgramDesign
java·算法
CoderYanger1 小时前
递归、搜索与回溯-记忆化搜索:40.矩阵中的最长递增路径
java·线性代数·算法·leetcode·矩阵·1024程序员节
报错小能手2 小时前
数据结构 不带头结点的双向循环链表
数据结构·算法·链表