我在实现异常检测的多元高斯分布时遇到了一些问题。
我已经从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来开发算法。
以下是展示我的问题的快照
考虑红色边界方程的乘法,因为红色边界的LHS只是一个实数
请帮助我理解我哪里错了
谢谢
答案 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