已知
- 显然默认
x 是一个列向量 还需注意的是,当传递进去的是样本矩阵
X (以行为样本) 而不是列向量x ,则在计算指数部分时,-1/2*sum(X/Sigma .* X, 2);
当多元高斯分布退化为一元高斯时,
Σ 对应着σ2 (方差),而不是标准差(standard deviation)- 这里
d=(x−μ)TΣ−1(x−μ)−−−−−−−−−−−−−−−−√ 也称为马氏距离;
是对一元高斯分布对应的d=x−μσ 得拓展; - 多元时的
d=(x−μ)TΣ−1(x−μ)−−−−−−−−−−−−−−−−√ 也可视为某种程度的 z-分数,尤其在变量之间彼此独立,并且方差相同时,d=∥x−μ∥σ (z-分数),
- d=1,68%
- d=2,95%
- d=3, 99%
3σ rule for multivariate normal distribution
1. 条件高斯分布(Conditional Gaussian distributions)
Multivariate normal distribution - Wikipedia
2. 编程时的技巧
αexp(f(x)) 的计算通常转换为,求对数,再求指数的形式:elogαexp(f(x))=elogα+f(x) p=1|Σ|(2π)D√exp(−12(x−μ)TΣ−1(x−μ)) ⇒logp=−D2log(2π)−12log|Σ|−12(x−μ)TΣ−1(x−μ)
3. 多元高斯概率密度函数的 matlab 实现
function p = gaussProb(X, mu, Sigma)
d = size(Sigma, 2);
X = bsxfun(@minus, X, mu(:)');
log1 = -d/2*log(2*pi)-1/2*logdet(Sigma);
log2 = -1/2*sum(X/Sigma .* X, 2);
p = exp(log1+log2);
end
- 这里的
X (样本矩阵)以行为样本;