gpt4 book ai didi

matlab - 使用 MATLAB 中的 PRTools 计算未知错误分类的后验分布

转载 作者:行者123 更新时间:2023-11-30 08:47:45 26 4
gpt4 key购买 nike

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

我有以下详细信息:

  • N:测试示例总数
  • k:# 的每个错误分类分类器和类

我想做:

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

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

Posterior = Likelihood * Prior  / Normalization constant = 
P(q|k,N) = P(k|q,N) * P(q|N) / P(k|N)

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

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

P(k|q,N) = B(N,k) * q^k * (1-q)^(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)!

这是正确的吗? (我有这个系列的一些讲义,但无法弄清楚它是针对归一化常数积分,还是针对错误分类(q)的整体分布)

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

最佳答案

我确实没有对贝叶斯后验分布做太多工作(并且有一段时间没有),但我会尽力帮助您提供帮助。首先,

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

您可以使用 nchoosek() 在 Matlab 中计算二项式系数,尽管文档中确实指出大系数可能存在精度问题。 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()gamma function 。然而,Gamma(x) = (x-1)!我们稍后会使用它。问题是我们在底部有一个函数 Gamma(k-N) 并且 k-N 将为负。然而,reflection formula将帮助我们做到这一点,以便我们最终得到:

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

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

关于matlab - 使用 MATLAB 中的 PRTools 计算未知错误分类的后验分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2908923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com