从模型定义出发推导似然函数和 MLE 确实是机器学习中的一个难点,尤其是涉及到具体模型变体时。多项式事件模型是朴素贝叶斯处理文本分类的核心模型之一。让我们一步步拆解这个过程,清晰地展示如何从模型定义写出似然函数 L(θ) 并推导出 ϕ_{k|y} 的 MLE。
1. 模型定义回顾 (Multinomial Event Model)
- 输入: 一封邮件表示为一个词序列
x = (x_1, x_2, ..., x_{n_i}),其中n_i是第i封邮件的长度(词的数量)。 - 特征
x_j: 邮件中第j个位置的词。它的值是词汇表中的索引k (k = 1, 2, ..., d),d是词汇表大小。 - 标签
y: 邮件类别(垃圾邮件y=1,非垃圾邮件y=0)。 - 模型假设 (朴素贝叶斯核心): 给定邮件的类别
y,邮件中每个位置j上出现什么词x_j是相互独立的。 - 概率分布: 每个位置
j上的词x_j服从一个分类分布 (Categorical Distribution),这个分布依赖于邮件的类别y。 - 参数:
ϕ_{k|y=1} = P(x_j = k | y = 1):当邮件是垃圾邮件 (y=1) 时,邮件中任意位置j出现词汇表第k个词的概率。ϕ_{k|y=0} = P(x_j = k | y = 0):当邮件是非垃圾邮件 (y=0) 时,邮件中任意位置j出现词汇表第k个词的概率。ϕ_y = P(y=1):邮件是垃圾邮件的先验概率。
- 关键点: 同一个词
k在y=1和y=0下的概率不同 (ϕ_{k|y=1}vsϕ_{k|y=0})。模型考虑了词出现的频率(同一个词k可以在邮件中出现多次)。
2. 写出单封邮件的似然 P(x, y; θ)
我们的目标是计算观察到的数据(邮件 x 及其标签 y)在给定参数 θ = (ϕ_y, {ϕ_{k|y=1}}, {ϕ_{k|y=0}}) 下的联合概率 P(x, y; θ)。这就是单封邮件的似然。
- 根据概率链式法则和模型假设:
P(x, y; θ) = P(y; θ) * P(x | y; θ) P(y; θ)就是先验概率:P(y; θ) = (ϕ_y)^y * (1 - ϕ_y)^{1-y}(这是一个伯努利分布)P(x | y; θ)是给定类别y下邮件x的条件概率。根据朴素贝叶斯假设 (位置独立性):P(x | y; θ) = P(x_1, x_2, ..., x_{n_i} | y; θ) = ∏_{j=1}^{n_i} P(x_j | y; θ)P(x_j | y; θ)是给定类别y下,第j个位置出现词x_j的概率。这由我们的分类分布参数定义:- 如果
y=1,则P(x_j = k | y=1; θ) = ϕ_{k|y=1} - 如果
y=0,则P(x_j = k | y=0; θ) = ϕ_{k|y=0}我们可以用一个简洁的写法表示这个条件概率:P(x_j | y; θ) = (ϕ_{x_j|y=1})^y * (ϕ_{x_j|y=0})^{1-y} - 解释:当
y=1时,(ϕ_{x_j|y=1})^1 * (ϕ_{x_j|y=0})^0 = ϕ_{x_j|y=1};当y=0时,(ϕ_{x_j|y=1})^0 * (ϕ_{x_j|y=0})^1 = ϕ_{x_j|y=0}。完美匹配定义。
- 如果
- 组合起来: 将
P(y; θ)和P(x | y; θ)代入联合概率:P(x, y; θ) = [ (ϕ_y)^y * (1 - ϕ_y)^{1-y} ] * [ ∏_{j=1}^{n_i} (ϕ_{x_j|y=1})^y * (ϕ_{x_j|y=0})^{1-y} ]
3. 写出整个数据集的似然 L(θ)
假设我们有 m 封独立的训练邮件 {(x^{(1)}, y^{(1)}), (x^{(2)}, y^{(2)}), ..., (x^{(m)}, y^{(m)})}。整个数据集的似然 L(θ) 是所有单封邮件联合概率的乘积:
L(θ) = P(data; θ) = ∏_{i=1}^{m} P(x^{(i)}, y^{(i)}; θ)
将第 i 封邮件的联合概率 P(x^{(i)}, y^{(i)}; θ) 代入:
L(θ) = ∏_{i=1}^{m} { [ (ϕ_y)^{y^{(i)}} * (1 - ϕ_y)^{1-y^{(i)}} ] * [ ∏_{j=1}^{n_i} (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ] }
4. 写出对数似然 l(θ) = log L(θ)
直接优化连乘的 L(θ) 很困难。取对数将乘积转化为求和,方便求导:
l(θ) = log L(θ) = ∑_{i=1}^{m} log P(x^{(i)}, y^{(i)}; θ)
= ∑_{i=1}^{m} { log[ (ϕ_y)^{y^{(i)}} * (1 - ϕ_y)^{1-y^{(i)}} ] + log[ ∏_{j=1}^{n_i} (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ] }
利用对数性质 log(a*b) = log(a) + log(b) 和 log(a^c) = c * log(a) 展开:
l(θ) = ∑_{i=1}^{m} { [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ] + [ ∑_{j=1}^{n_i} log( (ϕ_{x_j^{(i)}|y=1})^{y^{(i)}} * (ϕ_{x_j^{(i)}|y=0})^{1-y^{(i)}} ) ] }
= ∑_{i=1}^{m} { [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ] + [ ∑_{j=1}^{n_i} { y^{(i)} log(ϕ_{x_j^{(i)}|y=1}) + (1 - y^{(i)}) log(ϕ_{x_j^{(i)}|y=0}) } ] }
5. 推导 ϕ_{k|y=1} 的 MLE
我们的目标是找到最大化 l(θ) 的参数 ϕ_{k|y=1}。同时,我们需要满足概率分布的约束:对于每个 y,所有词的概率之和必须为 1,即 ∑_{k=1}^{d} ϕ_{k|y=1} = 1。这是一个带约束的优化问题,使用拉格朗日乘子法。
- 聚焦于
ϕ_{k|y=1}相关的项: 观察l(θ),只有包含log(ϕ_{x_j^{(i)}|y=1})的项与ϕ_{k|y=1}有关。具体来说,是那些y^{(i)} = 1的邮件 (i) 和这些邮件中的词位置 (j)。l(θ)中与ϕ_{k|y=1}相关的部分是:∑_{i=1}^{m} ∑_{j=1}^{n_i} y^{(i)} log(ϕ_{x_j^{(i)}|y=1}) - 引入指示函数: 为了更清晰地统计垃圾邮件 (
y^{(i)}=1) 中词汇k出现的总次数,我们引入指示函数1{·}:1{y^{(i)} = 1}:第i封邮件是垃圾邮件时为 1,否则为 0。1{x_j^{(i)} = k}:第i封邮件的第j个位置的词是词汇k时为 1,否则为 0。
- 重写相关项:
∑_{i=1}^{m} ∑_{j=1}^{n_i} y^{(i)} log(ϕ_{x_j^{(i)}|y=1}) = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * log(ϕ_{x_j^{(i)}|y=1})= ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * [ ∑_{k=1}^{d} 1{x_j^{(i)} = k} log(ϕ_{k|y=1}) ](因为x_j^{(i)}只能是某个k)= ∑_{k=1}^{d} [ ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1} * 1{x_j^{(i)} = k} ] log(ϕ_{k|y=1}) - 定义计数: 令
N_{k|y=1} = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1 ∧ x_j^{(i)} = k}。这就是所有垃圾邮件中,词汇k出现的总次数。 令N_{y=1} = ∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1}。这就是所有垃圾邮件的总词数(注意是词数,不是邮件数)。 相关项简化为:∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1}) - 构建拉格朗日函数: 为了在约束
∑_{k=1}^{d} ϕ_{k|y=1} = 1下最大化∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1}),引入拉格朗日乘子λ:L(ϕ_{1|y=1}, ..., ϕ_{d|y=1}, λ) = ∑_{k=1}^{d} N_{k|y=1} log(ϕ_{k|y=1}) + λ (1 - ∑_{k=1}^{d} ϕ_{k|y=1}) - 求偏导并令其为零:
- 对
ϕ_{k|y=1}求偏导:∂L / ∂ϕ_{k|y=1} = (N_{k|y=1}) / ϕ_{k|y=1} - λ = 0=>ϕ_{k|y=1} = N_{k|y=1} / λ... (1) - 对
λ求偏导:∂L / ∂λ = 1 - ∑_{k=1}^{d} ϕ_{k|y=1} = 0=>∑_{k=1}^{d} ϕ_{k|y=1} = 1... (2)
- 对
- 解方程: 将方程 (1) 代入方程 (2):
∑_{k=1}^{d} (N_{k|y=1} / λ) = 1=>(1 / λ) ∑_{k=1}^{d} N_{k|y=1} = 1=>λ = ∑_{k=1}^{d} N_{k|y=1} - 代入求解
ϕ_{k|y=1}: 将λ代回方程 (1):ϕ_{k|y=1} = N_{k|y=1} / λ = N_{k|y=1} / ∑_{k=1}^{d} N_{k|y=1} - 解释分母:
∑_{k=1}^{d} N_{k|y=1}是对词汇表中所有词k在垃圾邮件中出现次数的求和。这正是我们之前定义的N_{y=1}(所有垃圾邮件的总词数)。 - 最终 MLE:
ϕ_{k|y=1}^{MLE} = (N_{k|y=1}) / (N_{y=1}) = [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{x_j^{(i)} = k ∧ y^{(i)} = 1}] / [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 1}]
6. 推导 ϕ_{k|y=0} 的 MLE
推导过程与 ϕ_{k|y=1} 完全对称,只需将 y^{(i)} = 1 替换为 y^{(i)} = 0:
ϕ_{k|y=0}^{MLE} = [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{x_j^{(i)} = k ∧ y^{(i)} = 0}] / [∑_{i=1}^{m} ∑_{j=1}^{n_i} 1{y^{(i)} = 0}]
7. 推导 ϕ_y 的 MLE (补充)
虽然问题主要问 ϕ_{k|y},但 ϕ_y 的推导更简单直接,因为它只依赖于标签 y,不依赖于词 x。
- 聚焦于
ϕ_y相关的项: 观察l(θ),与ϕ_y相关的部分是:∑_{i=1}^{m} [ y^{(i)} log(ϕ_y) + (1 - y^{(i)}) log(1 - ϕ_y) ] - 求导并令其为零: 直接对
ϕ_y求导:∂l(θ) / ∂ϕ_y = [ ∑_{i=1}^{m} y^{(i)} ] / ϕ_y - [ ∑_{i=1}^{m} (1 - y^{(i)}) ] / (1 - ϕ_y) = 0 - 解方程:
(∑_{i=1}^{m} y^{(i)}) / ϕ_y = [ ∑_{i=1}^{m} (1 - y^{(i)}) ] / (1 - ϕ_y)令m_1 = ∑_{i=1}^{m} y^{(i)}(垃圾邮件总数),m_0 = ∑_{i=1}^{m} (1 - y^{(i)})(非垃圾邮件总数),m = m_1 + m_0(总邮件数)。 代入:m_1 / ϕ_y = m_0 / (1 - ϕ_y)m_1 (1 - ϕ_y) = m_0 ϕ_ym_1 - m_1 ϕ_y = m_0 ϕ_ym_1 = ϕ_y (m_0 + m_1)m_1 = ϕ_y * m - 最终 MLE:
ϕ_y^{MLE} = m_1 / m = (∑_{i=1}^{m} 1{y^{(i)} = 1}) / m
总结与直观解释
ϕ_y^{MLE} = (垃圾邮件数量) / (总邮件数量): 垃圾邮件的比例。ϕ_{k|y=1}^{MLE} = (词汇 k 在所有垃圾邮件中出现的总次数) / (所有垃圾邮件的总词数): 在垃圾邮件这个大文本集合中,词k出现的相对频率。ϕ_{k|y=0}^{MLE} = (词汇 k 在所有非垃圾邮件中出现的总次数) / (所有非垃圾邮件的总词数): 在非垃圾邮件这个大文本集合中,词k出现的相对频率。
关键点回顾:
- 模型定义明确: 定义了特征
x_j(词索引),标签y,核心假设 (位置独立性),参数ϕ_{k|y},ϕ_y的具体含义。 - 联合概率: 利用模型假设 (链式法则 + 条件独立性) 写出单封邮件的联合概率
P(x, y; θ)。 - 数据集似然: 假设数据独立同分布,整个数据集的似然是所有单封邮件联合概率的乘积
L(θ) = ∏_i P(x^{(i)}, y^{(i)}; θ)。 - 对数似然: 取对数
l(θ) = log L(θ)简化计算。 - 分离参数: 在
l(θ)中识别出与目标参数 (ϕ_{k|y=1}) 相关的项∑_i ∑_j 1{y^{(i)}=1} log(ϕ_{x_j^{(i)}|y=1})。 - 使用指示函数计数: 用
1{·}函数将相关项重写为∑_k N_{k|y=1} log(ϕ_{k|y=1}),其中N_{k|y=1}是词汇k在垃圾邮件中的总频数。 - 约束优化 (拉格朗日): 在
∑_k ϕ_{k|y=1} = 1的约束下,最大化∑_k N_{k|y=1} log(ϕ_{k|y=1})。 - 求导解方程: 对拉格朗日函数求偏导并令其为零,解出
ϕ_{k|y=1} = N_{k|y=1} / N_{y=1}(N_{y=1}是垃圾邮件总词数)。 - 直观解释: MLE 估计结果具有非常直观的意义——类别先验是类别的比例,词的条件概率是词在对应类别文档集合中的相对频率。
这个推导过程清晰地展示了如何从多项式事件模型的定义出发,严谨地推导出其关键参数 ϕ_{k|y} 的最大似然估计。理解这个过程的核心在于熟练应用概率模型、对数似然、指示函数统计计数以及带约束的优化方法。