Gibbs采样公式:
![](https://i-blog.csdnimg.cn/blog_migrate/e7c3f451d2ccdeb7f6e09d4d8d6247ff.png)
LDA并行考虑:
列 某文章的单词A依赖于另外一个文章相同单词A采样后修改的nw,nwsum行 同一篇文章的后一个单词依赖于前一个单词修改后的nd,ndsum
主题 同一个主题后一次采样依赖于同一个主题前一次采样的nwsum
解决方案:
1. AD-LDA 按行进行拆分,nd,ndsum拆分到各台机器, nw,nwsum被完全copy到各台机器.各个节点一轮执行完毕后,进行一次merge.![](https://i-blog.csdnimg.cn/blog_migrate/e7f2aae9be2ae7b7366abc3c7dba7842.png)
缺点: 1) nw,nwsum互不知道其他机器的存在进行采样,会带来误差; 2)nw内存空间浪费
2. Spark-lda 转换成wordid排序后,只有同一行和同一列的会存在依赖,其他可以采用对角线法组内并行组间串行的方法。在切分时如果不够均衡可以采用随机交换行列的方式找各块差距最大值最小的那一次。整个算法中nwsum肯定会有冲突也就是这个算法的误差所在。采用global update的方法,每台机器merge back。 之后同一个单词的nw和同一个文档的nd统计量合并(spark中采用broadcast的方法)。该算法混淆度已经能和单机差不多。