我有一个高维高斯的平均M和协方差矩阵V.我想计算从点p到M的距离,考虑到V(I猜测它是P与M的标准偏差的距离?)。计算从点p到高维的距离高斯(M,V)
差异地说,我从M处取一个椭圆一西格玛,并想检查p是否在该椭圆内。
我有一个高维高斯的平均M和协方差矩阵V.我想计算从点p到M的距离,考虑到V(I猜测它是P与M的标准偏差的距离?)。计算从点p到高维的距离高斯(M,V)
差异地说,我从M处取一个椭圆一西格玛,并想检查p是否在该椭圆内。
如果V
是高斯的有效协方差矩阵提供,则它是对称正定,因此定义了一个有效的标量乘积。顺便说一句inv(V)
也是。
因此,假定m和p列向量,可以定义距离为:
d1 = sqrt((M-p)'*V*(M-p));
d2 = sqrt((M-p)'*inv(V)*(M-p));
Matlab的方法之一将重写d2
为(可能一些不必要的括号内):
d2 = sqrt((M-p)'*(V\(M-p)));
好的是,当V是单位矩阵时,d1==d2
它对应于经典的欧几里德距离。要找到它,你必须使用d1
或d2
作为练习(对不起,我的工作的一部分是教学)。写出多维高斯公式,并将其与1D情况进行比较,因为多维情况只是1D的特定情况(或执行一些数值实验)。注意:在非常高维空间或许多要测试的点上,可以从V的特征向量和特征值(即椭圆体的主轴及其相应的方差)中找到更聪明/更快的方式。
希望这会有所帮助。
A.
这似乎是它。谢谢! – 2010-12-15 22:45:02
这个东西有一个名字:[Mahalanobis distance](https://en.wikipedia.org/wiki/Mahalanobis_distance)。 :-) – 2013-11-29 18:29:21
也许我完全没有了,但是这不是一样的只是要求每个维度:我在西格玛?
伪代码:
foreach(dimension d)
(M(d) - sigma(d) < p(d) < M(d) + sigma(d)) ?
因为你想知道如果p是您高斯的每一个层面里面。所以实际上,这只是一个空间问题,你的高斯不必对它做任何事情(除了M和西格马这些只是距离)。
在MATLAB中,你可以尝试像:
all(M - sigma < p < M + sigma)
到那个地方的距离可能是,在这里我不知道欧氏距离的函数。也许dist的作品:
dist(M, p)
因为M只是一个点,在空间和P以及。只有2个向量。 现在是最后一个。你想知道的西格马的形式的距离:
% create a distance vector and divide it by sigma
M - p ./ sigma
我认为这将做伎俩。
这个解决方案是行不通的,因为它没有考虑到协方差(椭圆是“倾斜”,在某种程度上)。虽然谢谢! – 2010-12-15 21:51:33
考虑计算的点的概率给出的正态分布:
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由统计工具箱
尝试http://math.stackexchange.com/ – Jacob 2010-12-15 21:31:49