【问题标题】:Calculate distance from point p to high dimensional Gaussian (M, V)计算点 p 到高维高斯 (M, V) 的距离
【发布时间】:2011-05-26 04:47:24
【问题描述】:

我有一个平均 M 和协方差矩阵 V 的高维高斯。我想计算从点 p 到 M 的距离,考虑到 V(我猜这是 p 与 M 的标准差的距离?)。

换个说法,我在距离 M 1 sigma 处取一个椭圆,并想检查 p 是否在该椭圆内。

【问题讨论】:

标签: matlab distance gaussian ellipse


【解决方案1】:

也许我完全不在了,但这不等于只询问每个维度:我在 sigma 中吗?

伪代码:

foreach(dimension d)
    (M(d) - sigma(d) < p(d) < M(d) + sigma(d)) ?

因为您想知道 p 是否在您的高斯的每个维度内。所以实际上,这只是一个空间问题,您的高斯不必对它做任何事情(M 和 sigma 除外,它们只是距离)。

在 MATLAB 中,您可以尝试以下操作:

all(M - sigma < p < M + sigma)

到那个地方的距离可能是,我不知道欧几里得距离的函数。也许 dist 有效:

dist(M, p)

因为 M 只是空间中的一个点,p 也是如此。只有 2 个向量。 现在是最后一个。您想以 sigma 的形式了解距离:

% create a distance vector and divide it by sigma
M - p ./ sigma

我认为这样可以解决问题。

【讨论】:

  • 这个解决方案不起作用,因为它没有考虑协方差(椭圆在某种程度上是“倾斜的”)。不过谢谢!
【解决方案2】:

考虑在给定正态分布的情况下计算点的概率:

M = [1 -1];             %# mean vector
V = [.9 .4; .4 .3];     %# covariance matrix
p = [0.5 -1.5];         %# 2d-point
prob = mvnpdf(p,M,V);   %# probability P(p|mu,cov)

函数MVNPDF由统计工具箱提供

【讨论】:

    【解决方案3】:

    如果V 是一个有效的高斯协方差矩阵,则它是对称正定矩阵,因此定义了一个有效的标量积。顺便说一句inv(V) 也可以。

    因此,假设 M 和 p 是列向量,您可以将距离定义为:

    d1 = sqrt((M-p)'*V*(M-p));
    d2 = sqrt((M-p)'*inv(V)*(M-p));
    

    Matlab 方式可以重写d2as(可能是一些不必要的括号):

    d2 = sqrt((M-p)'*(V\(M-p)));
    

    好消息是,当 V 是单位矩阵时,d1==d2 对应于经典欧几里得距离。要找到您是否必须使用d1d2 作为练习(对不起,我的部分工作是教学)。写出多维高斯公式并将其与一维情况进行比较,因为多维情况只是一维的一种特殊情况(或进行一些数值实验)。

    注意:在非常高维空间或要测试很多点时,您可能会从 V 的特征向量和特征值(即椭圆体的主轴及其相应的方差)中找到一种聪明/更快的方法。

    希望这会有所帮助。

    一个。

    【讨论】:

    猜你喜欢
    • 2014-01-08
    • 1970-01-01
    • 2017-08-10
    • 2014-08-21
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多