关于Maximum Likelihood Estimate(极大似然估计)的思考

本文介绍了最大似然估计(MLE)的起源及其在遗传学中的应用背景,并对比了线性回归与逻辑回归(LR)的不同之处。通过对两种回归方法的解析,帮助读者理解LR参数的经典解法——MLE的基本原理。

一、MLE提出的背景

    通过维基百科查询得知,MLE由遗传学家及统计学家罗纳德.费雪在1912年至1922年间开始使用。由此联想到MLE的遗传学背景,在遗传学中,显性研究即为最大可能性研究,通过对于各独立个体计算发生或者存活概率,来确定最后显著表达的群体。

   在多个独立个体求集体存活的概率时,即为数学中的样本相互独立条件下,求此组样本的联合概率分布。通过当联合概率分布达到最大值时,求得对应的参数。

二、对比线性回归与LR

    线性回归:以最小化因变量实际值与估计值的均方,来求得对应的自变量参数与常量。

    LR:可以视为线性回归的一种映射,将因变量的变化范围压缩至0-1。在LR的参数求解时,可以通过对p(y=1|w)与p(y=0|w)的比值取对数,可获得类似于线性回归表达式形式,可通过线性回归的The Least Square Method(最小二乘法)来求解参数。

    对于LR参数的经典解法ML,采用MLE的背景来进行理解。假定每个样本相互独立,通过连乘求得联合概率分布,对联合概率分布进行极大值求导,选取最大值情况下求对应的参数值。

<think>我们正在讨论高斯混合模型(GMM)的参数估计方法,特别是使用EM算法和MLE优化调整模型参数(包括均值、方差/协方差矩阵)以达到预设精度的方法。 根据引用[3]和[4],EM算法是一种迭代算法,用于求解包含隐变量的混合模型的最大似然估计。在GMM中,隐变量表示每个样本点属于哪个高斯分量。 步骤概述: 1. 初始化参数:包括每个高斯分量的权重 $\pi_k$,均值 $\mu_k$,协方差矩阵 $\Sigma_k$(对于多维数据)。初始化方法可以随机初始化或使用K-means等算法进行初步聚类。 2. E步(Expectation):基于当前参数,计算每个样本 $x_i$ 属于第 $k$ 个高斯分量的后验概率(即责任值 $\gamma_{ik}$)。 $$ \gamma_{ik} = \frac{\pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j \mathcal{N}(x_i|\mu_j, \Sigma_j)} $$ 3. M步(Maximization):利用E步计算的责任值更新参数,使得似然函数增大。 - 更新权重:$\pi_k^{(new)} = \frac{\sum_{i=1}^N \gamma_{ik}}{N}$ - 更新均值:$\mu_k^{(new)} = \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\sum_{i=1}^N \gamma_{ik}}$ - 更新协方差矩阵:$\Sigma_k^{(new)} = \frac{\sum_{i=1}^N \gamma_{ik} (x_i - \mu_k^{(new)})(x_i - \mu_k^{(new)})^\top}{\sum_{i=1}^N \gamma_{ik}}$ 4. 检查收敛条件:通常使用对数似然函数的变化量或参数变化量是否小于预设阈值(精度要求)来判断是否停止迭代。对数似然函数的计算如下: $$ \log p(X|\theta) = \sum_{i=1}^N \log \left( \sum_{k=1}^K \pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k) \right) $$ 如果两次迭代的对数似然变化量 $|\log p(X|\theta^{(t)}) - \log p(X|\theta^{(t-1)})| < \epsilon$(其中 $\epsilon$ 是预设精度,如1e-5),则停止迭代。 但是,直接使用上述基本EM算法可能无法保证达到预设精度,因为EM算法可能收敛到局部最优。我们可以考虑以下优化调整方法: 1. **多次随机初始化**:由于EM算法对初始值敏感,我们可以多次随机初始化参数并运行EM算法,选择对数似然最大的结果。 2. **设置迭代次数上限**:防止不收敛时无限迭代。 3. **正则化**:在计算协方差矩阵时,可能遇到奇异矩阵(当某个分量的样本数不足时),可以添加一个小的正则化项(如 $\lambda I$)确保协方差矩阵可逆。 4. **使用加速EM算法**:如使用外推加速(例如:PEM算法)或者使用共轭梯度等优化方法。 具体实现步骤(伪代码): 初始化:设定精度阈值 $\epsilon$,最大迭代次数 $T$,初始化参数 $\theta^{(0)} = \{ \pi_k, \mu_k, \Sigma_k \}_{k=1}^K$ 设置对数似然函数值 $L_0 = -\infty$ for $t=1$ to $T$: E步:计算每个样本的责任值 $\gamma_{ik}$(注意:计算高斯分布的概率密度时,使用当前的参数) M步:更新参数 $\pi_k, \mu_k, \Sigma_k$ 计算当前迭代的对数似然 $L_t$ 如果 $|L_t - L_{t-1}| < \epsilon$: 跳出循环 else: 继续迭代 输出参数 注意:在编程实现中,计算高斯分布的概率密度函数时,为了避免数值下溢,通常使用对数概率密度进行计算(但责任值的计算公式中需要指数运算,所以需要谨慎处理)。另外,协方差矩阵的更新要保证其对称正定性。 引用[1][2][3][4][5]都提到了EM算法在GMM中的应用,其中引用[4]详细推导了EM算法在GMM中的迭代公式。 因此,使用EM算法优化调整GMM参数达到预设精度的方法就是通过迭代E步和M步,直到对数似然函数的变化小于预设的精度阈值。 下面我们按照要求回答问题,并生成相关问题。 </think>### 使用 EM 算法优化 GMM 参数达到预设精度的方法 高斯混合模型(GMM)的参数优化通过 **EM 算法(期望最大化算法)** 实现,其核心是通过迭代调整高斯单元的均值 $\mu_k$、协方差矩阵 $\Sigma_k$ 和权重 $\pi_k$ 以最大化对数似然函数。以下是逐步优化至预设精度 $\epsilon$ 的方法: --- #### 1. **参数初始化** - **权重初始化**:$\pi_k = \frac{1}{K}$ ($K$ 为高斯单元数量) - **均值初始化**:随机选取数据点作为 $\mu_k$ 或使用 K-means 聚类中心[^2] - **协方差初始化**:$\Sigma_k = \frac{1}{N} \sum_{i=1}^N (x_i - \bar{x})(x_i - \bar{x})^\top$(全局样本协方差) - **设定收敛阈值**:$\epsilon$(如 $10^{-5}$)和最大迭代次数 $T_{\text{max}}$(如 1000)。 --- #### 2. **EM 算法迭代步骤** **(a) E 步(Expectation)** 计算样本 $x_i$ 属于第 $k$ 个高斯单元的后验概率(责任值 $\gamma_{ik}$): $$ \gamma_{ik} = \frac{\pi_k \mathcal{N}(x_i | \mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j \mathcal{N}(x_i | \mu_j, \Sigma_j)} $$ 其中 $\mathcal{N}(\cdot)$ 为多元高斯概率密度函数[^4]。 **(b) M 步(Maximization)** 基于责任值更新参数(最大化似然函数): - **权重更新**: $$ \pi_k^{\text{new}} = \frac{1}{N} \sum_{i=1}^N \gamma_{ik} $$ - **均值更新**: $$ \mu_k^{\text{new}} = \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\sum_{i=1}^N \gamma_{ik}} $$ - **协方差矩阵更新**: $$ \Sigma_k^{\text{new}} = \frac{\sum_{i=1}^N \gamma_{ik} (x_i - \mu_k^{\text{new}})(x_i - \mu_k^{\text{new}})^\top}{\sum_{i=1}^N \gamma_{ik}} $$ --- #### 3. **收敛性判断与精度控制** - **计算对数似然函数**: $$ \log \mathcal{L}(\theta) = \sum_{i=1}^N \log \left( \sum_{k=1}^K \pi_k \mathcal{N}(x_i | \mu_k, \Sigma_k) \right) $$ - **收敛条件**: - 若 $|\log \mathcal{L}(\theta^{(t)}) - \log \mathcal{L}(\theta^{(t-1)})| < \epsilon$,则停止迭代(达到精度) - 若迭代次数 $t > T_{\text{max}}$,强制停止(防止不收敛)[^3]。 --- #### 4. **优化策略(提升精度与效率)** 1. **正则化协方差矩阵**: 添加小常数项避免奇异矩阵:$\Sigma_k := \Sigma_k + \lambda I$($\lambda=10^{-6}$)[^4]。 2. **早停机制(Early Stopping)**: 若连续 $m$ 次迭代似然函数变化量 $\delta < 10\epsilon$,提前终止。 3. **参数约束**: - 限制协方差矩阵为对角阵(简化计算) - 固定权重 $\pi_k$(若先验分布已知)[^1]。 4. **多初始值策略**: 随机初始化多次运行 EM,选取似然值最高的结果(避免局部最优)[^5]。 --- #### 5. **Python 实现示例(关键代码)** ```python import numpy as np from scipy.stats import multivariate_normal def gmm_em(X, K, epsilon=1e-5, max_iter=1000): # 初始化参数 N, D = X.shape pi = np.ones(K) / K mu = X[np.random.choice(N, K, replace=False)] Sigma = [np.cov(X.T) for _ in range(K)] log_likelihood_old = -np.inf for t in range(max_iter): # E步:计算责任值 gamma = np.zeros((N, K)) for k in range(K): gamma[:, k] = pi[k] * multivariate_normal(mu[k], Sigma[k]).pdf(X) gamma /= gamma.sum(axis=1, keepdims=True) # M步:更新参数 Nk = gamma.sum(axis=0) pi = Nk / N mu = gamma.T @ X / Nk[:, None] for k in range(K): diff = X - mu[k] Sigma[k] = (gamma[:, k] * diff.T) @ diff / Nk[k] + 1e-6 * np.eye(D) # 正则化 # 检查收敛性 log_likelihood = 0 for k in range(K): log_likelihood += pi[k] * multivariate_normal(mu[k], Sigma[k]).pdf(X) log_likelihood = np.log(log_likelihood).sum() if abs(log_likelihood - log_likelihood_old) < epsilon: break log_likelihood_old = log_likelihood return pi, mu, Sigma ``` --- #### **关键说明** - **精度控制**:通过 `epsilon` 直接控制对数似然的变化量阈值。 - **MLE 保障**:EM 算法保证每次迭代提升似然值,最终收敛到局部最优解[^3]。 - **复杂度**:单次迭代复杂度 $O(NKD^2)$($D$ 为维度),适用于中小规模数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值