MATLAB朴素贝叶斯'后验'函数的解释
Posted
技术标签:
【中文标题】MATLAB朴素贝叶斯\'后验\'函数的解释【英文标题】:Interpretation of MATLAB's NaiveBayses 'posterior' functionMATLAB朴素贝叶斯'后验'函数的解释 【发布时间】:2013-03-12 13:56:37 【问题描述】:在我们创建了一个朴素贝叶斯分类器对象nb
(例如,具有多元多项式 (mvmn
) 分布)之后,我们可以使用nb
对象对测试数据调用posterior
函数。这个函数有3个输出参数:
[post,cpre,logp] = 后验(nb,test)
我了解post
的计算方式及其含义,cpre
也是预测的类别,基于每个类别的最大后验概率。
问题是关于logp
。很清楚它是如何计算的(测试中每个模式的 PDF 的对数),但我不明白这个度量的含义以及如何在朴素贝叶斯程序的上下文中使用它。非常感谢您对此的任何说明。
谢谢。
【问题讨论】:
【参考方案1】:您所指的logp
是log likelihood,这是衡量模型拟合程度的一种方法。我们使用对数概率来防止计算机在非常小的浮点数上出现下溢,而且还因为加法比乘法快。
如果您使用不同的起点多次学习分类器,您会得到不同的结果,因为似然函数不是对数凹的,这意味着您会陷入局部最大值。如果您计算后验的似然根据您的原始数据,您将获得模型的可能性。尽管可能性可以很好地衡量一组参数与另一组参数的拟合程度,但您需要注意您不是 overfitting。
在您的情况下,您正在计算一些未观察到的(测试)数据的可能性,这让您了解您学习的分类器在数据上的拟合程度。如果您尝试基于测试集学习此模型,您将根据最高测试似然度选择参数;但是一般来说,当你这样做时,最好使用validation set。你在这里做的是计算predictive likelihood。
计算对数似然不限于朴素贝叶斯分类器,实际上可以为任何贝叶斯模型(高斯混合、潜在狄利克雷分配等)计算。
【讨论】:
感谢您的回答。由于每个测试点的 PDF 都在 [0,1] 范围内,因此logp
将在 (-infinity, 0] 范围内。据我了解,此度量 (logp) 越高,我们拟合的分类器预测新模式的效果就越好。是对吗?根据所有后验概率的最大值来选择预测类,我说得对吗?或者我们在这种情况下也记录日志?谢谢
logp
可以是肯定的,如果你有 singularities 这样的东西。 PDF 只集成到 1,它可以评估大于 1。你在这里做的是计算 predictive likelihood。
谢谢,这些链接非常有用。所以,简单地说,如果我们观察到logp = x
的新数据点,我们可以从这个x
值做出任何推断,或者我们只能说与其他点相比的一些相对信息? IE。如果 x 是大负数,接近零或大正数
您通常在整个数据集上计算似然性,而不仅仅是单个点。这对于单个点来说是毫无意义的,除非例如在混合模型中您想要计算哪个混合组件最有可能生成它。
Hm..这实际上是最初的问题... Matlab 文档解释说:[POST,CPRE,LOGP] = POSTERIOR(NB,TEST) 返回 LOGP,一个 N×1 % 向量包含概率密度 % 函数 (PDF) 的对数估计值。 LOGP(I) 是点 I 的 PDF 的对数。点 I 的 PDF % 值是 % % Prob(point I | class J) * Prclass J % % 占所有类的总和。跨度>
以上是关于MATLAB朴素贝叶斯'后验'函数的解释的主要内容,如果未能解决你的问题,请参考以下文章