LDA训练算法:
(1)随机初始化α和β(一般α取值为50/主题数,β取值为0.1);
(2)以下步骤迭代直到收敛:
(2.1)对训练集中的每篇文档:
(2.1.1)利用当前的α和β值计算每篇文档的主题分布、每个词所属的主题分布(具体算法见下文);
(2.2)累积所有文档中,属于主题k(k=1…K)的词的个数,得到向量gammas;以及词i(i=1…V)属于主题k的次数,得到矩阵betas;
(2.3)根据当前的gammas,利用Newton-Raphson迭代方法求得当前的最优α值;
(2.4)对矩阵betas的列归一化,直接得到当前的β值,即每个主题的词的分布;
(3)输出达到收敛时的α和β的值。
步骤(2.1.1)的算法与基于训练好的模型来进行预测的算法是相同的。它也是一个EM迭代算法,具体算法如下:
LDA预测算法:
(1)以平均分布初始化K维向量nt,ntk是当前文档中属于类别k的词的个数,nt可视为未归一化的文档的主题分布;
(2)以下步骤迭代直到nt达到稳定:
(2.1)根据当前的α值(决定主题的先验分布),以及当前的nt值(当前文档的主题分布),以及当前的β值(主题的词的分布),计算文档中的各个词的主题分布,得到矩阵q, qij=文档中的第i个词属于主题k的概率(具体计算方法参考LDA论文以及variational inference方法);
(2.2)利用矩阵q的值更新向量nt的值。
(3)将nt归一化作为文档的主题分布,矩阵q则为文档中每个词的主题分布。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9506.html