多元高斯分布公式的实现

时间:2014-10-28 15:12:03

标签: matlab machine-learning octave cluster-analysis gaussian

我在实现异常检测的多元高斯分布时遇到了一些问题。

我已经从Andrew Ng笔记中提到了公式

http://www.holehouse.org/mlclass/15_Anomaly_Detection.html

下面是我面临的问题

假设我有一个具有2个特征和m个训练集的数据集,即n = 2,并且想要确定我的多元高斯概率p(x; mu; sigma),它应该是[m * 1]矩阵,因为它通过特征相关产生估计的高斯值。

我面临的问题是我无法使用公式来生成矩阵[m * 1]。

我使用Octave作为IDE来开发算法。

以下是展示我的问题的快照

enter image description here

考虑红色边界方程的乘法,因为红色边界的LHS只是一个实数

enter image description here

请帮助我理解我哪里错了

谢谢

1 个答案:

答案 0 :(得分:4)

我认为你的尺寸不对。

假设您有n=2个实例的二维(m)数据。我们可以将这些数据存储为MATLAB中的n-by-m矩阵(列是数据实例,行表示要素/维度)。在这种情况下,我们有:

  • X大小为nxm的数据矩阵,每个实例x = X(:,i)都是大小为nx1的向量(我们惯例中的列向量)。
  • mu是平均向量(mu = mean(X,2))。这也是与实例nx1相同大小的列向量。
  • sigma是协方差矩阵(sigma = cov(X.'))。它的大小为nxn(它描述了每个维度如何与其他维度相互变化)。

因此,您以红色突出显示的部分涉及以下大小的表达式:

 = ([nx1] - [nx1])' * [nxn] * ([nx1] - [nx1])
 = [1xn] * [nxn] * [nx1]
 = 1x1