lda源码分析
lda 是一种 topic model,属于更广泛的graphical models。主要用于对离散数据集的统计建模。具体可以参考lda创始人的paper, 原理和推导在此不做赘述。
同时 David M.Blei 实现了lda的c 代码,参数推导用的是 em & variational inference. 这部分原理可以参考 prml 的 相应章节。
下面对这部分代码做一下分析:
代码本身并不大,也就 ~1300 lines。
cokus.h cokus.h // 随机数生成器
utils.h utils.c // gamma\digmma\trigmma 相关的函数计算
lda.h // 所用数据结构的定义
lda-data.h lda-data.c // 读取语料
lda-alpha.h lda-alpha.c // newton法求alpha
lda-model.h lda-model.c // 加载释放模型,初始化统计数据相关
lda-inference.h lda-inference.c // variational inference求参 gamma phi
lda-estimate.h lda-estimate.c // 程序入口。 实现了em算法
所用的数据结构和流程图如下:

(*^__^*) 嘻嘻…… 希望对大家有一点帮助

浙公网安备 33010602011771号