多元高斯分布在统计学和机器学习领域中扮演着关键的角色。在这个分布的框架下,我们经常会遇到边缘高斯分布和条件高斯分布,它们分别涉及了从原始分布中选择一部分变量和在已知条件下计算其他变量的概率分布。本文将深入研究这两个概念,探讨它们的核心思想、数学表示以及在实际问题中的应用。
边缘高斯分布指的是多元高斯分布中部分变量的概率分布。当我们考虑一个多元高斯分布,其中包含多个随机变量,边缘高斯分布就是在该多元分布中选择其中一部分变量形成的概率分布。假设有一个 n-维的多元高斯分布,其随机变量为X=[X1,X2,…,Xn]T,均值向量为 μ=[μ1,μ2,…,μn]T,协方差矩阵为 Σ。那么,X 的概率密度函数为:
现在,我们想要考虑其中的一部分变量,例如,我们关心的是 Xa=[X1,X2,…,Xk]T,其中 k 其中, 边缘高斯分布的核心思想在于从多元高斯分布中边缘化(marginalization)得到。通过对多元高斯分布中未关心的变量进行积分,我们得到了新的概率分布。在实际问题中,当我们只关心随机变量的一部分时,可以使用边缘高斯分布简化模型,降低计算复杂度。 维度的降低: 边缘概率分布允许我们从高维随机变量中提取关心的部分,使得问题的复杂性得到降低。在实际应用中,许多问题中只关心某些变量的分布,边缘化允许我们将注意力集中在重要的部分上。 简化问题: 通过边缘化,我们可以将原问题简化为更易处理的子问题。这在统计推断、机器学习模型的开发以及贝叶斯推理中都是常见的操作。 独立性的建模: 边缘概率分布允许我们对随机变量的独立性进行建模。如果两个变量在边缘分布下是独立的,那么它们的联合分布可以通过简单地将各自的边缘分布相乘得到。 条件高斯分布是在给定部分变量的取值的条件下,其他变量的概率分布。设有一个 n-维多元高斯分布 X=[X1,X2,…,Xn]T,我们感兴趣的是在已知Xk=xk 的条件下,其余变量的概率分布,即 P(X−k∣Xk=xk)。 条件高斯分布的表达式为: 其中, 条件高斯分布的计算涉及到在已知条件下的条件概率计算。通过对多元高斯分布的联合概率密度函数进行归一化,我们得到了条件概率的表达式。条件高斯分布在很多领域都有着重要的应用,特别是在贝叶斯推断和滤波问题中。通过给定一些观测值,我们可以更新我们对未观测变量的信念,得到条件高斯分布。 数学上的可解性: 高斯条件概率分布的优势之一是数学上的可解性。在高斯条件概率分布中,给定条件下的分布仍然是高斯分布,这使得许多计算变得简单和高效。 参数化建模: 高斯分布通过均值和协方差两个参数来描述,而高斯条件概率分布在给定条件下仍然保持这种参数化建模的特性。这使得模型的参数可以通过训练数据来估计,进而用于预测和推断。 中心极限定理: 根据中心极限定理,多个独立随机变量的和趋近于高斯分布。因此,在许多实际问题中,通过条件化和边缘化操作,可以将复杂的分布逼近为高斯条件概率分布,从而更容易进行建模和分析。 相同点: 不同点: 在 MATLAB 中,我们可以通过生成随机样本和计算概率密度函数来演示边缘高斯分布和条件高斯分布。我将使用 MATLAB R2018a 的一些基本函数来说明这两者之间的异同。 上面的 MATLAB 代码演示了如何生成和可视化二维多元高斯分布的样本,并展示了边缘高斯分布和在条件 Y<=1 下的 X1 的条件高斯分布。
Key Points:
条件高斯分布(Conditional Gaussian Distribution):
Key Points:
边缘高斯分布和条件高斯分布的异同:
mu = [0; 0];
Sigma = [1, 0.5; 0.5, 2];
rng(1); % 设置随机种子以确保结果可重复性
X = mvnrnd(mu, Sigma, 1000);
% 提取 X 的第一个维度,即 X1
X1 = X(:, 1);
X2 = X(:, 2);
% 创建一个新的 figure
figure;
% 绘制原始分布
subplot(2, 1, 1);
scatter(X1, X2, 'b.');
title('原始多元高斯分布');
xlabel('X');
ylabel('Y');
% 绘制 X1 的边缘高斯分布的直方图
subplot(2, 2, 3);
histogram(X1, 'Normalization', 'pdf', 'EdgeColor', 'w');
title('边缘高斯分布示例 - X1');
xlabel('X1');
ylabel('概率密度');
% 计算边缘高斯分布的理论概率密度函数
mu_X1 = mu(1);
sigma_X1 = sqrt(Sigma(1, 1));
x_range = linspace(min(X1), max(X1), 100);
pdf_X1 = normpdf(x_range, mu_X1, sigma_X1);
% 绘制理论概率密度函数
hold on;
plot(x_range, pdf_X1, 'r', 'LineWidth', 2);
legend('样本直方图', '理论概率密度函数');
% 标出均值和标准差
text(mu_X1, 0.1, sprintf('均值: %.2f', mu_X1), 'Color', 'r', 'VerticalAlignment', 'top', 'HorizontalAlignment', 'center');
text(mu_X1 - sigma_X1, 0.15, sprintf('标准差: %.2f', sigma_X1), 'Color', 'g', 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');
hold off;
% 在 Y=1 的条件下提取 X1 的样本
Y_condition = X(:, 2) <= 1;
X1_conditioned = X(Y_condition, 1);
% 绘制在 Y=1 条件下 X1 的直方图
subplot(2, 2, 4);
histogram(X1_conditioned, 'Normalization', 'pdf', 'EdgeColor', 'w');
title('条件高斯分布示例 - 在 Y<=1 条件下 X1');
xlabel('X1');
ylabel('概率密度');
% 计算条件高斯分布的理论概率密度函数
mu_X1_conditioned = mean(X1_conditioned);
sigma_X1_conditioned = std(X1_conditioned);
pdf_X1_conditioned = normpdf(x_range, mu_X1_conditioned, sigma_X1_conditioned);
% 绘制理论概率密度函数
hold on;
plot(x_range, pdf_X1_conditioned, 'r', 'LineWidth', 2);
legend('样本直方图', '理论概率密度函数');
% 标出均值和标准差
text(mu_X1_conditioned, 0.15, sprintf('均值: %.2f', mu_X1_conditioned), 'Color', 'r', 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'center');
text(mu_X1_conditioned - sigma_X1_conditioned, 0.2, sprintf('标准差: %.2f', sigma_X1_conditioned), 'Color', 'g', 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');
hold off;