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算法

 

所用的数据结构和流程图如下:

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

posted @ 2013-08-31 20:35  小楼_lambda  阅读(509)  评论(0)    收藏  举报