利用MATLAB中的PRTools计算未知mis分类的后验分布

利用MATLAB中的PRTools计算未知mis分类的后验分布,matlab,machine-learning,bayesian,Matlab,Machine Learning,Bayesian,我正在使用MATLAB库训练一些分类器,生成测试数据并测试分类器 我有以下资料: N:测试示例总数# k:#共 对每一类的错误分类 分类器和类 我想做: 计算并绘制错误分类未知概率(表示为q)的贝叶斯后验分布,即作为q本身的概率密度函数(因此,p(q)将绘制在q上,从0到1) 我有(数学公式,不是matlab代码!): 先验设置为1,所以我只需要计算似然和归一化常数 我知道可能性可以表示为(其中B(N,k)是二项系数): 。。。所以归一化常数只是上面后验值的积分,从0到1: P(k|N) =

我正在使用MATLAB库训练一些分类器,生成测试数据并测试分类器

我有以下资料:

  • N:测试示例总数#
  • k:#共 对每一类的错误分类 分类器和类
我想做:

计算并绘制错误分类未知概率(表示为q)的贝叶斯后验分布,即作为q本身的概率密度函数(因此,p(q)将绘制在q上,从0到1)

我有(数学公式,不是matlab代码!):

先验设置为1,所以我只需要计算似然和归一化常数

我知道可能性可以表示为(其中B(N,k)是二项系数):

。。。所以归一化常数只是上面后验值的积分,从0到1:

P(k|N) = B(N,k) * integralFromZeroToOne( q^k * (1-q)^(N-k) )
(二项系数(B(N,k))可以省略,尽管它出现在似然常数和归一化常数中)

现在,我听说归一化常数的积分应该可以作为一个级数来计算。。。比如:

k!(N-k)! / (N+1)!
对吗?(我有一些关于本系列的课堂讲稿,但不知道是针对标准化常数积分,还是针对mis分类(q)的总体分布)


此外,欢迎您提供一些提示,如如何实际计算?(阶乘很容易产生截断错误,对吗?)。。。还有,如何实际计算最终图(q上的后验分布,从0到1)。

我对贝叶斯后验分布确实没有做太多的研究(现在还没有),但我会尽力帮助你完成所给出的内容。首先,

k!(N-k)! / (N+1)! = 1 / (B(N,k) * (N + 1))
你可以在Matlab中用nchoosek()计算二项式系数,尽管文档中确实说,大系数可能会有精度问题。N和k有多大

第二,根据Mathematica的说法

integralFromZeroToOne( q^k * (1-q)^(N-k) ) = pi * csc((k-N)*pi) * Gamma(1+k)/(Gamma(k-N) * Gamma(2+N))
其中,
csc()
是余割函数,
Gamma()
是余割函数。然而,伽马(x)=(x-1)!我们马上就用。问题是底部有一个函数Gamma(k-N),k-N是负数。但是,将在这方面帮助我们,以便我们最终:

= (N-k)! * k! / (N+1)!

显然,你的笔记是正确的。

q
作为错误分类的概率。然后,您在
N
运行中观察到
k
错误分类的概率如下所示:

p(k | N,q)=B(N,k)q^k(1-q)^(N-k)

然后,您需要为
q
假设一个合适的先验值,该先验值介于0和1之间。上面的共轭先验是beta分布。如果
q~β(a,b)
那么后验分布也是β分布。请参考以下信息:

f(q |-)~Beta(a+k,b+N-k)


希望这能有所帮助。

我已经知道,前面的是=1(悲观)。事实上,我最关心的是:k!(N-k)!/(N+1),但非常感谢您的回答!当然请注意,如果您确实假设previor是Beta,那么您将不会遇到计算阶乘的问题。通过假设β分布的a=1和b=1,可以使β等效于均匀分布,即prior=1。另外,你的问题中的术语有点不标准。例如,P(k | q,n)是可能性/概率,而不是后验概率。事实上,假设先验=1等于假设q~Beta(1,1)。关于术语:事实上,我混淆了可能性和后验概率。现在已经修复了术语。非常感谢!理解表达式((N-k)!*k!/(N+1)!)的起源是我主要关心的问题,因此这非常有帮助!没问题。我很高兴能记住我以前在物理学家数学课上学到的一些数学知识。
integralFromZeroToOne( q^k * (1-q)^(N-k) ) = pi * csc((k-N)*pi) * Gamma(1+k)/(Gamma(k-N) * Gamma(2+N))
= (N-k)! * k! / (N+1)!