概率密度估计(Probability Density Estimation)和最大似然估计(Maximum Likelihood Estimation)详解
概率密度估计(PDE)和最大似然估计(MLE)是统计学和机器学习中两个重要概念。PDE 旨在描述数据的概率分布,而 MLE 是一种优化技术,用于估计模型参数使得观测数据的概率最大化。本篇文章将详细解释它们的基本原理、实现方法和应用场景,结合代码示例和图解,帮助你更容易学习和应用这些技术。
1. 概率密度估计(PDE)
1.1 PDE 的定义
概率密度估计是一种非参数方法,用于估计随机变量的概率分布。给定一组样本数据,目标是找到一个概率密度函数 ( f(x) ),使得:
\[
P(a \leq X \leq b) = \int_a^b f(x) dx
\]
其中 ( f(x) \geq 0 ),并满足:
\[
\int_{-\infty}^{\infty} f(x) dx = 1
\]
1.2 常见方法
直方图(Histogram):
- 将数据分成多个区间,并计算每个区间的频率。
核密度估计(Kernel Density Estimation, KDE):
- 使用核函数(如高斯核)平滑地估计数据分布。
1.3 核密度估计的公式
核密度估计的概率密度函数定义为:
\[
\hat{f}(x) = \frac{1}{n h} \sum_{i=1}^n K\left(\frac{x - x_i}{h}\right)
\]
- ( n ):样本数量。
- ( h ):带宽,控制平滑程度。
- ( K ):核函数(如高斯核)。
1.4 Python 实现 KDE
以下是核密度估计的实现和可视化:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KernelDensity
# 生成数据
np.random.seed(42)
data = np.random.normal(0, 1, 100)
# 核密度估计
kde = KernelDensity(kernel='gaussian', bandwidth=0.2).fit(data[:, None])
x = np.linspace(-3, 3, 1000)[:, None]
log_density = kde.score_samples(x)
# 可视化
plt.hist(data, bins=30, density=True, alpha=0.5, label="Histogram")
plt.plot(x, np.exp(log_density), label="KDE", color="red")
plt.title("Kernel Density Estimation")
plt.legend()
plt.show()
运行结果:
- 直方图显示了数据的分布。
- 红线为核密度估计的平滑曲线。
2. 最大似然估计(MLE)
2.1 MLE 的定义
最大似然估计是一种参数估计方法,通过最大化样本数据的似然函数来估计模型参数。
对于参数 ( \theta ),给定观测数据 ( {x_1, x_2, \dots, x_n} ),MLE 目标是最大化以下似然函数:
\[
L(\theta) = \prod_{i=1}^n f(x_i | \theta)
\]
通常通过最大化对数似然函数来简化计算:
\[
\ell(\theta) = \log L(\theta) = \sum_{i=1}^n \log f(x_i | \theta)
\]
2.2 MLE 的步骤
- 假设数据分布(如正态分布)。
- 写出似然函数 ( L(\theta) )。
- 对 ( \theta ) 求导,找到最大值点。
2.3 MLE 的应用
- 正态分布参数估计:估计均值 ( \mu ) 和标准差 ( \sigma )。
- 泊松分布参数估计:估计事件发生率 ( \lambda )。
3. MLE 实例:正态分布参数估计
以下是正态分布参数的最大似然估计实现:
理论推导
对于正态分布 ( f(x | \mu, \sigma) ):
\[
f(x | \mu, \sigma) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{(x - \mu)^2}{2 \sigma^2}\right)
\]
对数似然函数为:
\[
\ell(\mu, \sigma) = -\frac{n}{2} \log(2 \pi) - \frac{n}{2} \log(\sigma^2) - \frac{1}{2 \sigma^2} \sum_{i=1}^n (x_i - \mu)^2
\]
最大化 ( \ell(\mu, \sigma) ),解得:
\[
\mu = \frac{1}{n} \sum_{i=1}^n x_i, \quad \sigma^2 = \frac{1}{n} \sum_{i=1}^n (x_i - \mu)^2
\]
Python 实现
# 生成数据
data = np.random.normal(5, 2, 1000)
# 计算 MLE
mu_mle = np.mean(data)
sigma_mle = np.std(data)
print(f"MLE 均值 (mu): {mu_mle}")
print(f"MLE 标准差 (sigma): {sigma_mle}")
# 可视化
plt.hist(data, bins=30, density=True, alpha=0.5, label="Histogram")
x = np.linspace(min(data), max(data), 1000)
pdf = (1 / (np.sqrt(2 * np.pi) * sigma_mle)) * np.exp(-0.5 * ((x - mu_mle) / sigma_mle) ** 2)
plt.plot(x, pdf, label="Estimated PDF", color="red")
plt.title("MLE for Normal Distribution")
plt.legend()
plt.show()
运行结果:
- 直方图 显示了数据分布。
- 红线 是基于 MLE 的正态分布估计曲线。
4. 图解 PDE 和 MLE
图解 1:PDE 的工作原理
样本数据 --> 核密度函数 --> 平滑概率密度曲线
图解 2:MLE 的优化过程
样本数据 --> 构建似然函数 --> 最大化参数
5. 总结
- 概率密度估计(PDE) 提供了一种非参数方法,用于估计随机变量的概率分布,特别是在无明确分布假设时表现优异。
- 最大似然估计(MLE) 是参数估计的基本方法,基于概率模型最大化观测数据的可能性。
- 在实际问题中,可以结合 PDE 和 MLE 构建混合模型,以适应更复杂的数据分布。
希望本文通过代码示例和图解,帮助你更清晰地理解 PDE 和 MLE。
评论已关闭