假设我有两个使用
获得的gmdistibution模型modeldata1=gmdistribution.fit(data1,1);
modeldata2=gmdistribution.fit(data2,1);
现在我有一个未知的'数据'观察,我想知道它是否属于data1
或data2
。
基于我对这些函数的理解,使用后验,集群或pdf命令的nlogn输出不是一个好的衡量标准,因为我将'data'与两个不同的分布进行比较。
我应该使用什么度量或输出来查找p(data|modeldata1) and p(data|modeldata2)
?
非常感谢,
答案 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的模式识别)。在这里你有两个高斯混合,有一些先验和不同的协方差矩阵。蓝色区域是您选择一个类别的地方,而灰色区域是选择另一个类别的地方。