热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

onlinelda的dirichlet_expectation函数

2019独角兽企业重金招聘Python工程师标准起因看onlineldavb.py的时候看到求E[log(theta)]期望的函数如下:defdirichlet

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

起因

看onlineldavb.py的时候看到求E[log(theta)] 期望的函数如下:

def dirichlet_expectation(alpha):"""
For a vector theta ~ Dir(alpha), computes E[log(theta)] given alpha.
"""if (len(alpha.shape) == 1):return(psi(alpha) - psi(n.sum(alpha)))return(psi(alpha) - psi(n.sum(alpha, 1))[:, n.newaxis])
今天看了半天都不理解为何dirichlet的期望可以由上面的函数来实现,后来看到几个公式之后才明白,这里记录一下过程。

psi函数

psi应该是gamma函数的一阶导数,有以下代码可以理解:

>>> from scipy import special
>>> x = [2, 3, 25.5]
>>> special.polygamma(1, x)
array([ 0.64493407, 0.39493407, 0.03999467])
>>> special.polygamma(0, x) == special.psi(x)
array([ True, True, True], dtype=bool)
polygamma是gamma函数的N阶导数。

公式推导

\Psi(x) = \frac{d}{dx} \ln(\Gamma(x))

其它细节可参考链接:http://www.hiit.fi/u/ahonkela/dippa/node95.html

(话说osc如何插入公式?)



转:https://my.oschina.net/dancing/blog/187365



推荐阅读
author-avatar
潘月飞--_758
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有