中国餐馆过程:
这里有一个中国餐馆,餐馆里有
n+1
个桌子(其中只有一个桌子是没有人坐的,其他桌子都是有人坐的)。由于中国人喜欢热闹,自然喜欢坐在人多的桌子上。一个顾客来到了这个餐馆,按照桌子上人数的比例进行就坐(我们设为
p(a,t)
,
a
是第a 个顾客,
t
是第t 个桌子),人数越多概率就越大。对于那个空桌子,我们假象的人数为
r>0
,避免比例为0,没有人就坐。如果就坐的是空桌子,这个空桌子有人坐了,就不是空桌子了。因此中国餐馆自动生成一个新的桌子,餐馆变成了n + 2个桌子。第一个顾客选择第一个张桌子。
中国餐馆过程的代码(github)
中国餐馆过程的变种:
我们对于函数
p(a,t)
,进行修改,使之变为
a
与t 的相似度,而不是数量比例大小。因此有,如果
p(a,t)>1/(1+n)
,则去桌子
t
;否则概率为1/(1+n) 创造一个新桌子,
n/(n+1)
去桌子
t
<script type="math/tex" id="MathJax-Element-15">t</script>。
中国餐馆过程的变种代码(github)
参考文献:
http://eng.kifi.com/from-word2vec-to-doc2vec-an-approach-driven-by-chinese-restaurant-process/
https://www.cs.princeton.edu/courses/archive/fall07/cos597C/scribe/20070921.pdf
http://blog.datumbox.com/the-dirichlet-process-the-chinese-restaurant-process-and-other-representations/