大家好,欢迎来到IT知识分享网。
目录
最大似然估计(Maximum Likelihood Estimation,MLE)
基本概念
最大似然估计是一种估计统计模型参数的方法,目的是找到使观测数据出现概率最大的参数值。换句话说,MLE 选择使观测数据最可能出现的参数值。对于给定数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \ldots, x_n\} X={
x1,x2,…,xn} 和参数 θ \theta θ,MLE 通过最大化似然函数 L ( θ ; X ) L(\theta; X) L(θ;X) 来估计参数:
L ( θ ; X ) = P ( X ∣ θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta; X) = P(X|\theta) = \prod_{i=1}^n P(x_i|\theta) L(θ;X)=P(X∣θ)=i=1∏nP(xi∣θ)
为了简化计算,通常使用对数似然函数:
ℓ ( θ ; X ) = log L ( θ ; X ) = ∑ i = 1 n log P ( x i ∣ θ ) \ell(\theta; X) = \log L(\theta; X) = \sum_{i=1}^n \log P(x_i|\theta) ℓ(θ;X)=logL(θ;X)=i=1∑nlogP(xi∣θ)
通过最大化对数似然函数 ℓ ( θ ; X ) \ell(\theta; X) ℓ(θ;X) 来求得参数 θ \theta θ 的估计值。
例子:正态分布参数估计
对于一组来自正态分布 N ( μ , σ 2 ) N(\mu, \sigma^2) N(μ,σ2) 的样本数据,想要估计参数 μ \mu μ 和 σ 2 \sigma^2 σ2。对于正态分布,似然函数为:
L ( μ , σ 2 ; X ) = ∏ i = 1 n 1 2 π σ 2 exp ( − ( x i − μ ) 2 2 σ 2 ) L(\mu, \sigma^2; X) = \prod_{i=1}^n \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x_i – \mu)^2}{2\sigma^2}\right) L(μ,σ2;X)=i=1∏n2πσ21exp(−2σ2(xi−μ)2)
对数似然函数为:
ℓ ( μ , σ 2 ; X ) = − n 2 log ( 2 π σ 2 ) − 1 2 σ 2 ∑ i = 1 n ( x i − μ ) 2 \ell(\mu, \sigma^2; X) = -\frac{n}{2} \log (2\pi\sigma^2) – \frac{1}{2\sigma^2} \sum_{i=1}^n (x_i – \mu)^2 ℓ(μ,σ2;X)=−2nlog(2πσ2)−2σ21i=1∑n(xi−μ)2
通过对 μ \mu μ 和 σ 2 \sigma^2 σ2 求导并设为零,可以得到参数的估计值:
μ ^ = 1 n ∑ i = 1 n x i \hat{\mu} = \frac{1}{n} \sum_{i=1}^n x_i μ^=n1i=1∑nxi
σ ^ 2 = 1 n ∑ i = 1 n ( x i − μ ^ ) 2 \hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^n (x_i – \hat{\mu})^2 σ^2=n1i=1∑n(xi−μ^)2
MLE 的特点
- 一致性:在大样本情况下,MLE 估计值会收敛于真实参数。
- 渐进正态性:在大样本下,MLE 估计值的分布趋近于正态分布。
- 高效性:在大样本下,MLE 是最优无偏估计,即它的方差达到 Cramer-Rao 下界。
Python实现
import numpy as np # 生成样本数据 np.random.seed(0) data = np.random.normal(loc=5, scale=2, size=1000) # MLE估计 mu_hat = np.mean(data) sigma_hat = np.std(data, ddof=1) print(f"估计的均值: {
mu_hat}") print(f"估计的标准差: {
sigma_hat}")
期望最大化算法(Expectation-Maximization,EM)
基本概念
EM算法是一种迭代方法,用于在存在隐变量或缺失数据的情形下估计模型参数。它包括两个主要步骤:期望步(E步)和最大化步(M步)。
- E步(Expectation Step):在给定当前参数估计值 θ ( t ) \theta^{(t)} θ(t) 的情况下,计算隐变量的期望值。
- M步(Maximization Step):在给定隐变量期望值的情况下,最大化对数似然函数,以更新参数估计值。
例子:高斯混合模型
对于一个包含两个高斯分布的混合模型,观测数据来自这两个分布,但不知道每个数据点来自哪个分布。因此目标是估计每个高斯分布的参数和混合权重。
- 初始化:随机初始化参数 θ = ( μ 1 , σ 1 , μ 2 , σ 2 , π ) \theta = (\mu_1, \sigma_1, \mu_2, \sigma_2, \pi) θ=(μ1,σ1,μ2,σ2,π)。
- E步:计算每个数据点属于每个分布的概率(责任值):
γ i 1 = π 1 N ( x i ∣ μ 1 , σ 1 2 ) π 1 N ( x i ∣ μ 1 , σ 1 2 ) + π 2 N ( x i ∣ μ 2 , σ 2 2 ) \gamma_{i1} = \frac{\pi_1 \mathcal{N}(x_i | \mu_1, \sigma_1^2)}{\pi_1 \mathcal{N}(x_i | \mu_1, \sigma_1^2) + \pi_2 \mathcal{N}(x_i | \mu_2, \sigma_2^2)} γi1=π1N(xi∣μ1,σ12)+π2N(xi∣μ2,σ22)π1N(xi∣μ1,σ12)
γ i 2 = 1 − γ i 1 \gamma_{i2} = 1 – \gamma_{i1} γi2=1−γi1
- M步:根据责任值更新参数:
m u 1 ( t + 1 ) = ∑ i = 1 n γ i 1 x i ∑ i = 1 n γ i 1 mu_1^{(t+1)} = \frac{\sum_{i=1}^n \gamma_{i1} x_i}{\sum_{i=1}^n \gamma_{i1}} mu1(t+1)=∑i=1nγi1∑i=1nγi1xi
σ 1 ( t + 1 ) 2 = ∑ i = 1 n γ i 1 ( x i − μ 1 ( t + 1 ) ) 2 ∑ i = 1 n γ i 1 \sigma_1^{(t+1)2} = \frac{\sum_{i=1}^n \gamma_{i1} (x_i – \mu_1^{(t+1)})^2}{\sum_{i=1}^n \gamma_{i1}} σ1(t+1)2=∑i=1nγi1∑i=1nγi1(xi−μ1(t+1))2
π 1 ( t + 1 ) = 1 n ∑ i = 1 n γ i 1 \pi_1^{(t+1)} = \frac{1}{n} \sum_{i=1}^n \gamma_{i1} π1(t+1)=n1i=1∑nγi1
μ 2 ( t + 1 ) = ∑ i = 1 n γ i 2 x i ∑ i = 1 n γ i 2 \mu_2^{(t+1)} = \frac{\sum_{i=1}^n \gamma_{i2} x_i}{\sum_{i=1}^n \gamma_{i2}} μ2(t+1)=∑i=1nγi2∑i=1nγi2xi
σ 2 ( t + 1 ) 2 = ∑ i = 1 n γ i 2 ( x i − μ 2 ( t + 1 ) ) 2 ∑ i = 1 n γ i 2 \sigma_2^{(t+1)2} = \frac{\sum_{i=1}^n \gamma_{i2} (x_i – \mu_2^{(t+1)})^2}{\sum_{i=1}^n \gamma_{i2}} σ2(t+1)2=∑i=1nγi2∑i=1nγi2(xi−μ2(t+1))2
π 2 ( t + 1 ) = 1 n ∑ i = 1 n γ i 2 \pi_2^{(t+1)} = \frac{1}{n} \sum_{i=1}^n \gamma_{i2} π2(t+1)=n1i=1∑nγi2
- 重复:重复E步和M步,直到参数收敛。
EM 算法的特点
- 处理隐变量:EM 算法特别适用于有隐变量或不完全数据的情况。
- 收敛性:EM 算法保证每次迭代都不会降低似然函数的值,但不保证找到全局最优解。
- 应用广泛:EM 算法在聚类(如高斯混合模型)、图像恢复、缺失数据填充等领域有广泛应用。
Python实现
import numpy as np from scipy.stats import norm # 生成样本数据 np.random.seed(0) data = np.concatenate([np.random.normal(5, 1, 300), np.random.normal(10, 2, 700)]) # 初始化参数 mu1, sigma1, pi1 = 4, 1, 0.5 mu2, sigma2, pi2 = 8, 1, 0.5 # EM算法 def em_algorithm(data, mu1, sigma1, pi1, mu2, sigma2, pi2, tol=1e-6, max_iter=100): for _ in range(max_iter): # E步 gamma1 = pi1 * norm.pdf(data, mu1, sigma1) gamma2 = pi2 * norm.pdf(data, mu2, sigma2) gamma_sum = gamma1 + gamma2 gamma1 /= gamma_sum gamma2 /= gamma_sum # M步 mu1_new = np.sum(gamma1 * data) / np.sum(gamma1) sigma1_new = np.sqrt(np.sum(gamma1 * (data - mu1_new)2) / np.sum(gamma1)) pi1_new = np.mean(gamma1) mu2_new = np.sum(gamma2 * data) / np.sum(gamma2) sigma2_new = np.sqrt(np.sum(gamma2 * (data - mu2_new)2) / np.sum(gamma2)) pi2_new = np.mean(gamma2) # 检查收敛 if np.abs(mu1_new - mu1) < tol and np.abs(mu2_new - mu2) < tol: break mu1, sigma1, pi1 = mu1_new, sigma1_new, pi1_new mu2, sigma2, pi2 = mu2_new, sigma2_new, pi2_new return mu1, sigma1, pi1, mu2, sigma2, pi2 mu1, sigma1, pi1, mu2, sigma2, pi2 = em_algorithm(data, mu1, sigma1, pi1, mu2, sigma2, pi2) print(f"估计的均值1: {
mu1}, 标准差1: {
sigma1}, 混合系数1: {
pi1}") print(f"估计的均值2: {
mu2}, 标准差2: {
sigma2}, 混合系数2: {
pi2}")
总结
- 极大似然估计(MLE)是一种直接通过最大化似然函数来估计模型参数的方法,适用于完全观测的数据。MLE 通过最大化观测数据的对数似然函数来找到最优参数。
- 最大期望算法(EM)是一种迭代优化算法,适用于存在隐变量或不完全数据的情况。EM 通过交替执行期望步骤(计算隐变量的期望对数似然函数)和最大化步骤(最大化期望对数似然函数)来逐步优化参数估计。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125191.html