1. 似然函数的概念与起源
在统计学和机器学习领域,似然函数(Likelihood function)是一个基础但极其重要的概念。我第一次接触这个概念是在研究生时期的统计推断课程上,当时教授用了一个非常生动的比喻:假设你是一位侦探,犯罪现场留下的证据是固定不变的,而似然函数就是用来评估不同嫌疑人作案可能性的工具。
严格来说,似然函数是给定观测数据X时,关于参数θ的函数,记作L(θ|X)。它与概率函数形式相同,但解释的角度完全不同。概率函数描述的是在已知参数θ的情况下,观测到数据X的可能性;而似然函数则是在观测到数据X后,评估不同参数θ合理性的工具。
关键区别:概率是参数固定、数据变化;似然是数据固定、参数变化。这个区别看似细微,实则至关重要。
2. 似然函数的数学表达与性质
2.1 数学定义形式
对于独立同分布(i.i.d.)的样本X₁,X₂,...,Xₙ,似然函数通常表示为各样本点概率密度(或质量)函数的乘积:
L(θ|x) = ∏ f(xᵢ|θ)
其中f(xᵢ|θ)是给定参数θ下xᵢ的概率密度(或质量)函数。在实际应用中,我们更常使用对数似然函数:
ℓ(θ|x) = log L(θ|x) = ∑ log f(xᵢ|θ)
这种转换有三个主要优势:
- 将乘积转换为求和,计算更稳定
- 对数函数的单调性保持极值位置不变
- 许多概率分布的指数形式在对数转换后简化
2.2 似然函数的核心性质
相对性:似然函数的值本身没有绝对意义,只有相对大小有意义。我们关心的是不同θ值对应的似然比。
不变性:如果η = g(θ)是θ的一一对应变换,那么L*(η|x) = L(g⁻¹(η)|x)。
渐近性:在大样本情况下,似然函数会呈现出近似正态分布的形状(Wilks定理)。
3. 似然函数的实际应用场景
3.1 参数估计:最大似然估计(MLE)
最大似然估计是似然函数最经典的应用。其基本思想是:找到使观测数据出现概率最大的参数值。用数学表达就是:
θ̂_MLE = argmax L(θ|x)
在实际操作中,我们通常会:
- 写出似然函数表达式
- 取对数得到对数似然函数
- 对θ求导并令导数为零
- 解方程得到估计值
注意事项:有时解析解难以获得,需要使用数值优化方法(如牛顿法、梯度下降等)。
3.2 假设检验:似然比检验
似然比检验(LRT)是比较两个嵌套模型的有效方法。检验统计量为:
λ = 2[ℓ(θ̂|x) - ℓ(θ₀|x)]
其中θ̂是无约束下的MLE,θ₀是零假设下的参数值。在常规条件下,λ渐近服从χ²分布。
3.3 模型选择:AIC和BIC
基于似然函数的模型选择准则:
- AIC = -2ℓ(θ̂|x) + 2k
- BIC = -2ℓ(θ̂|x) + k log n
其中k是参数个数,n是样本量。这些准则在模型复杂度与拟合优度之间进行权衡。
4. 常见概率分布的似然函数示例
4.1 正态分布
对于X ~ N(μ,σ²),样本x₁,...,xₙ的对数似然函数为:
ℓ(μ,σ²|x) = -n/2 log(2π) - n/2 log(σ²) - 1/(2σ²) ∑(xᵢ-μ)²
求导可得MLE: μ̂ = x̄ σ̂² = 1/n ∑(xᵢ-x̄)²
4.2 伯努利分布
对于X ~ Bernoulli(p),对数似然函数为:
ℓ(p|x) = ∑[xᵢ log p + (1-xᵢ)log(1-p)]
MLE为: p̂ = (∑xᵢ)/n
4.3 泊松分布
对于X ~ Poisson(λ),对数似然函数为:
ℓ(λ|x) = -nλ + (∑xᵢ)logλ - ∑log(xᵢ!)
MLE为: λ̂ = x̄
5. 似然函数的数值计算技巧
5.1 处理小概率问题
当概率值非常小时,直接计算可能导致下溢(underflow)。常用解决方案:
- 使用对数似然
- 在必要时使用log-sum-exp技巧
- 对数据进行标准化处理
5.2 优化算法选择
对于复杂模型,MLE可能需要数值优化。常用方法包括:
- 梯度下降法
- 牛顿法
- BFGS算法
- EM算法(存在隐变量时)
5.3 并行计算策略
对于大规模数据,可以:
- 将数据分块
- 计算每块的对数似然
- 将结果相加
这种方法特别适合MapReduce框架。
6. 似然函数的常见误区与注意事项
6.1 似然与概率的混淆
最常见的错误是将似然函数解释为概率分布。必须记住:
- 似然函数不是概率密度函数
- 似然函数对θ的积分不一定为1
- 似然函数可以任意缩放
6.2 样本量不足的问题
在小样本情况下:
- MLE可能有偏
- 似然函数形状可能不规则
- 可能需要使用贝叶斯方法引入先验
6.3 模型误设的影响
如果模型假设错误:
- MLE可能不一致
- 标准误估计可能有偏
- 需要进行模型诊断
7. 高级话题:似然函数的扩展应用
7.1 剖面似然函数
当关注部分参数时,可以将其他参数"剖出":
L_p(θ₁) = max_{θ₂} L(θ₁,θ₂)
这在处理nuisance参数时特别有用。
7.2 拟似然函数
当完整似然难以指定时,可以使用基于矩条件的拟似然函数,适用于广义线性模型等场景。
7.3 经验似然
一种非参数方法,不假设具体分布形式,而是基于经验分布函数构建似然。
8. 实际案例分析:线性回归中的似然函数
考虑线性回归模型:
y = Xβ + ε, ε ~ N(0,σ²I)
其对数似然函数为:
ℓ(β,σ²|y,X) = -n/2 log(2π) - n/2 log(σ²) - 1/(2σ²)||y-Xβ||²
MLE解与OLS估计一致: β̂ = (X'X)⁻¹X'y σ̂² = ||y-Xβ̂||²/n
这个例子展示了似然函数与传统统计方法的联系。
9. 计算实现:Python代码示例
import numpy as np from scipy.optimize import minimize from scipy.stats import norm # 生成模拟数据 np.random.seed(42) true_mu, true_sigma = 2.5, 1.2 n_samples = 100 data = np.random.normal(true_mu, true_sigma, n_samples) # 定义负对数似然函数(因为优化器通常最小化) def neg_log_likelihood(params, data): mu, sigma = params if sigma <= 0: # 确保sigma为正 return np.inf return -np.sum(norm.logpdf(data, loc=mu, scale=sigma)) # 初始猜测 initial_guess = [1.0, 1.0] # 优化 result = minimize(neg_log_likelihood, initial_guess, args=(data,), method='L-BFGS-B', bounds=((None, None), (1e-6, None))) mu_mle, sigma_mle = result.x print(f"MLE for mu: {mu_mle:.4f} (true: {true_mu})") print(f"MLE for sigma: {sigma_mle:.4f} (true: {true_sigma})")10. 似然函数在机器学习中的应用
10.1 逻辑回归
逻辑回归的损失函数实际上是负对数似然函数:
ℓ(β|y,X) = ∑[yᵢ log pᵢ + (1-yᵢ)log(1-pᵢ)]
其中pᵢ = 1/(1+exp(-xᵢ'β))
10.2 神经网络
在分类任务中,交叉熵损失函数对应于多项分布的对数似然;在回归任务中,MSE对应于正态分布的对数似然。
10.3 生成模型
VAE、GAN等生成模型都隐式或显式地涉及似然函数或它的近似。