用于Matlab中分类的gm分布

时间:2012-03-30 22:26:32

标签: matlab

假设我有两个使用

获得的gmdistibution模型
modeldata1=gmdistribution.fit(data1,1);
modeldata2=gmdistribution.fit(data2,1);

现在我有一个未知的'数据'观察,我想知道它是否属于data1data2

基于我对这些函数的理解,使用后验,集群或pdf命令的nlogn输出不是一个好的衡量标准,因为我将'data'与两个不同的分布进行比较。

我应该使用什么度量或输出来查找p(data|modeldata1) and p(data|modeldata2)

非常感谢,

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你想为一个1级或2级分配一个新的,未知的数据点,并使用gmdistribution.fit找到的每个类的描述符(在本例中为平均向量和协方差矩阵)。 / p>

在看到这个新数据点时,我们称之为x,你应该问问自己是什么 p(modeldata1 | x)和p(modeldata2 | x),其中一个是你应该分配给x的最高值。

那你怎么找到这些?您只需应用贝叶斯规则并选择哪一个是最大的:

p(modeldata1 | x) = p(x|modeldata1)p(modeldata1)/p(x)
p(modeldata1 | x) = p(x|modeldata2)p(modeldata2)/p(x)

这里你不需要计算p(x),因为它在每个等式中是相同的。

那么,现在你根据每个类的训练点数(或使用一些给定的信息)来估计先验p(modeldata1)和p(modeldata2),然后计算

p(x|modeldata1)=1/((2pi)^d/2 * sqrt(det(Sigma1)))*exp(0.5*(x-mu1)/Sigma1*(x-mu1))

其中d是数据的维度,Sigma是协方差矩阵,mu是平均向量。然后你要求p(data | modeldata1)。 (记得在进行分类时也要使用p(modeldata1)和p(modeldata2)。

我知道这有点不清楚,但希望它可以帮助你朝着正确的方向迈出一步。

编辑:就个人而言,我发现了一个可视化,如下图所示(来自Theodoridis和Koutroumbas的模式识别)。在这里你有两个高斯混合,有一些先验和不同的协方差矩阵。蓝色区域是您选择一个类别的地方,而灰色区域是选择另一个类别的地方。 enter image description here