中餐馆过程算法翻译及代码实现

在概率论中,中国餐馆过程是一个时间离散的(discrete-time)随机过程(stochastic process),类似于中国餐馆中坐在餐桌旁的顾客。想象一个这样的情景,一家中国餐厅拥有无限数量的圆形桌子,每个桌子都有无限的容量。此时,顾客1坐在第一张桌子旁。下一个顾客要么坐在与顾客1相同的桌子旁,要么坐在下一张桌子旁。这样的情况会一直持续下去,每个顾客要么选择坐在已有其他顾客的桌子旁,要么选择一张未被占用的桌子,其中,选择已有顾客桌子的概率与该桌子已经存在的顾客数量成比例(即,与含有少量顾客的桌子相比,他们更愿意坐在含有更多顾客的桌子旁)。在时间 n n n n n n个顾客已经被划分为 m 区 ≤ n m区 \leq n mn个桌子。此过程的结果具有可交换性,这意味着顾客所就坐的顺序不会影响最终分配的可能性。该性质极大地简化了群体遗传学,语言学分析和图像识别中的许多问题。

1 定义

在任何正整数时间n,该随机过程的值是由集合 { 1 , 2 , 3 , . . . , n } \{1,2,3,...,n\} {1,2,3...n}生成的分区 B n B_n Bn,其概率分布通过如下方式确定。在时间 n = 1 n = 1 n=1时,以概率1获得普通划分 { { 1 } } \{\{1\}\} {{1}}。在时间 n + 1 n + 1 n+1,元素 n + 1 n + 1 n+1可以是:
  1. 添加到分区Bn的一个块中,其中每个块以概率 ∣ b ∣ ( n + 1 ) \frac{|b|}{(n + 1)} (n+1)b被选择,其中 ∣ b ∣ | b | b是块的大小(即元素的数量)。
  2. 作为新的块添加到分区 B n B_n Bn,概率为 1 ( n + 1 ) \frac{1}{(n + 1)} (n+1)1
  如此生成的随机分区具有一些特殊性质。它是可交换的,即重新改变 { 1 , . . . , n } \{1,...,n\} {1...n}的顺序不会改变 B n Bn Bn中分区的分布,而且在通过从 { 1 , . . . , n } \{1,...,n\} {1...n}中删除元素 n n n而获得的 n − 1 n - 1 n1分区定律的意义上它是一致的。时刻 n n n的随机分区与时刻 n − 1 n-1 n1的随机分区的规律相同。
  分配给任何特定分区的概率(忽略顾客坐在某张桌子周围的顺序)是(从 n = 1 n=1 n=1开始增长进行理解)
P r ( B n = B ) = ∏ b ∈ B ( ∣ b ∣ − 1 ) ! n ! Pr(B_n=B)=\frac{\prod_{b\in B}(|b|-1)!}{n!} Pr(Bn=B)=n!bB(b1)!
其中 b b b是分区 B B B的一个块, ∣ b ∣ | b | b是该块的大小(即元素的数量)。

2 一般化

这种结构可以推广到具有两个参数的模型, α \alpha α θ \theta θ,分别称为折扣和强度(或浓度)参数。 在时间 n + 1 n + 1 n+1,下一个到达的顾客发现 ∣ B ∣ |B| B 中的桌子都被占用了,并决定按以下概率坐到一个空桌子旁(这里的 θ \theta θ为狄利克雷过程中的 α \alpha α
θ + ∣ B ∣ α n + θ , \frac{\theta+|B|\alpha}{n+\theta}, n+θθ+Bα,
或者按以下概率做到人数为 ∣ b ∣ |b| b的桌子b旁
∣ b ∣ − α n + θ . \frac{|b|-\alpha}{n+\theta}. n+θbα.
  为了使结构能够有效的用于概率计算,有必要假设 α &lt; 0 \alpha&lt;0 α<0 θ = − L α \theta= - L\alpha θ=Lα L ∈ { 1 , 2 , . . . } L\in \{1,2,...\} L{1,2...};或者假设 0 ≤ α &lt; 1 0\leq\alpha&lt;1 0α<1 θ &gt; − α \theta&gt;-\alpha θ>α
  在该模型下,根据Pochhammer k符号,分配给任何特定 n n n所对应分区B的概率是
P r ( B n = B ) = ( θ + α ) ∣ B ∣ − 1 , α ( θ + 1 ) n − 1 , 1 ∏ b ∈ B ( 1 − α ) ∣ b ∣ − 1 , 1 Pr(B_n=B)=\frac{(\theta+\alpha)_{|B|-1,\alpha}}{(\theta+1)_{n-1,1}} \prod_{b\in B}(1-\alpha)_{|b|-1,1} Pr(Bn=B)=(θ+1)n1,1(θ+α)B1,αbB(1α)b1,1
在上面公式中,按照惯例, ( a ) 0 , c = 1 (a)_{0,c}=1 (a)0,c=1,并且对于 b &gt; 0 b&gt;0 b>0,有
( a ) b , c = ∏ i = 0 b − 1 ( a + i c ) = { a b if c=0 c b Γ ( a / c + b ) Γ ( a / c ) otherwise (a)_{b,c}=\prod_{i=0}^{b-1}(a+ic)=\begin{cases} a^b&amp; \text{if c=0}\\ \frac{c^b\Gamma(a/c+b)}{\Gamma(a/c)}&amp; \text{otherwise} \end{cases} (a)b,c=i=0b1(a+ic)={abΓ(a/c)cbΓ(a/c+b)if c=0otherwise
  因此,对于 θ &gt; 0 \theta&gt; 0 θ>0的情况,分区概率可以用Gamma函数表示为
P r ( B n = B ) = Γ ( θ ) Γ ( θ + n ) α ∣ B ∣ Γ ( θ / α + ∣ B ∣ ) Γ ( θ / α ) ∏ b ∈ B Γ ( ∣ b ∣ − α ) Γ ( 1 − α ) . Pr(B_n=B)=\frac{\Gamma(\theta)}{\Gamma(\theta+n)} \frac{\alpha^{|B|}\Gamma(\theta/\alpha+|B|)}{\Gamma(\theta/\alpha)} \prod_{b\in B}\frac{\Gamma(|b|-\alpha)}{\Gamma(1-\alpha)}. Pr(Bn=B)=Γ(θ+n)Γ(θ)Γ(θ/α)αBΓ(θ/α+B)bBΓ(1α)Γ(bα).
  在只包含一个参数的情况,即 α = 0 \alpha=0 α=0,上式可简化为
P r ( B n = B ) = Γ ( θ ) θ ∣ B ∣ Γ ( θ + n ) ∏ b ∈ B Γ ( ∣ b ∣ ) . Pr(B_n=B)=\frac{\Gamma(\theta)\theta^{|B|}}{\Gamma(\theta+n)} \prod_{b\in B}\Gamma(|b|). Pr(Bn=B)=Γ(θ+n)Γ(θ)θBbBΓ(b).
或者在 θ = 0 \theta=0 θ=0时,
P r ( B n = B ) = α ∣ B ∣ − 1 Γ ( ∣ B ∣ ) Γ ( n ) ∏ b ∈ B Γ ( ∣ b ∣ − α ) Γ ( 1 − α ) . Pr(B_n=B)=\frac{\alpha^{|B|-1}\Gamma(|B|)}{\Gamma(n)} \prod_{b\in B}\frac{\Gamma(|b|-\alpha)}{\Gamma(1-\alpha)}. Pr(Bn=B)=Γ(n)αB1Γ(B)bBΓ(1α)Γ(bα).
  如前所述,分配给任何特定分区的概率仅取决于块大小,因此如前所述,随机分区具有可交换性。一致性也仍然存在。
  如果 α = 0 \alpha=0 α=0,则由此产生的整数n的随机分区的概率分布是具有参数θ的Ewens分布,被用于群体遗传学和生物多样性的统一中性理论。

2.1 推导

接下来介绍一种推导此分区概率的方法。 令 C i C_i Ci为添加数字 i i i的随机块,对于 i = 1 , 2 , 3 , . . . . i = 1,2,3,.... i=1,2,3....,有
P r ( C i = c ∣ C 1 , . . . , C i − 1 ) = { θ + ∣ B ∣ α θ + i − 1 if c ∈ new block, ∣ b ∣ − α θ + i − 1 if c ∈ b; Pr(C_i=c|C_1,...,C_{i-1})=\begin{cases} \frac{\theta+|B|\alpha}{\theta+i-1}&amp; \text{if c} \in \text{new block,} \\ \frac{|b|-\alpha}{\theta+i-1}&amp; \text{if c} \in \text{b;} \end{cases} Pr(Ci=cC1,...,Ci1)={θ+i1θ+Bαθ+i1bαif cnew block,if cb;
  当 i i i 1 1 1 n n n时,由集合 { 1 , . . . , n } \{1,...,n\} {1,...,n}所产生的分区 B n B_n Bn的概率是上式概率的乘积。现在考虑块b的大小:每次我们添加一个元素时它会增加1。 当要将最后一个元素添加到块b中时,块大小为 ( ∣ b ∣ − 1 ) (| b | - 1) (b1)。 例如,考虑如下的选择序列:(生成新块b)(加入块b)(加入块b)(加入块b)。 最后,块b有4个元素,上式中分子的乘积得到 θ ⋅ 1 ⋅ 2 ⋅ 3 θ·1·2·3 θ123。按照这个逻辑,我们得到如上所述的 P r ( B n = B ) Pr(Bn = B) Pr(Bn=B)

2.2 桌子的数目

对于一个参数情况,在 α = 0 \alpha= 0 α=0 0 &lt; θ &lt; ∞ 0 &lt;\theta &lt;\infty 0<θ<的情况下,假设有 n n n个顾客,预期的桌子数是
∑ k = 1 n θ θ + k − 1 = θ ( Ψ ( θ + n ) − Ψ ( θ ) ) \sum_{k=1}^{n}\frac{\theta}{\theta+k-1}=\theta(\Psi(\theta+n)-\Psi(\theta)) k=1nθ+k1θ=θ(Ψ(θ+n)Ψ(θ))
其中 Ψ ( θ ) \Psi(\theta) Ψ(θ)伽玛函数(digamma function)。
  在通常情况 ( α &gt; 0 ) (\alpha&gt; 0) (α>0),预期的桌子数是
Γ ( θ + n + α ) Γ ( θ + 1 ) α Γ ( θ + n ) Γ ( θ + α ) − θ α . \frac{\Gamma(\theta+n+\alpha)\Gamma(\theta+1)}{\alpha\Gamma(\theta+n)\Gamma(\theta+\alpha)}-\frac{\theta}{\alpha}. αΓ(θ+n)Γ(θ+α)Γ(θ+n+α)Γ(θ+1)αθ.

2.3 印度自助餐过程

可以调整模型使得每个数据点 i i i不再唯一地与类相关联(即,我们不再构造分区),而是可以与类的任何组合相关联。 这加强了餐桌的类比,因此这可以被比作一个过程,其中一系列顾客从自助餐提供的无限选择的菜肴的一些子集中采样。 到目前为止,用餐者对菜肴进行采样的概率与菜肴在用餐者中的普及程度成正比,此外,用餐者可以从未经测试的菜肴中采样。 这已被命名为印度自助餐过程,可用于推断数据中的潜在特征。

3 应用

中国餐馆的过程与狄利克雷过程(Dirichlet processes)Pólya’s urn scheme密切相关,因此可用于贝叶斯统计的应用,包括非参数贝叶斯方法。 广义中餐馆过程与Pitman–Yor process密切相关。 这些过程已被用于许多应用,包括建模文本,聚类生物微阵列数据,生物多样性建模和图像重建。

原文:https://en.wikipedia.org/wiki/Chinese_restaurant_process
代码:https://github.com/makeplanetoheaven/blogArticle/tree/master/RandomProcess

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值