LDA主题模型的训练算法和预测算法
2015-08-21 17:55
281 查看
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则为文档中每个词的主题分布。
(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则为文档中每个词的主题分布。
相关文章推荐
- android开发中与后台通讯中公共参数的解决方案
- Android性能优化典范(二)
- Poj.2398 Toy Storage【数学几何】 2015/08/21
- python2.x 数据模型
- 理解SVG的viewport,viewBox,preserveAspectRatio
- Hibernate中,将session绑定到线程时,在保存和查询数据的代码里,要正确的关闭session
- eclipse
- Example of a full nat solution with QoS
- Example of a full nat solution with QoS
- Gson解析复杂json格式
- 有关linux下redis overcommit_memory的问题
- 第二章 进程管理--笔记
- rsync + inotify
- c和lua之间互相调用方法
- H. 硬币的水问题II
- android详情请务必保持手机屏幕不锁屏
- ZJU 2112 Dynamic Rankings
- Tomcat:配置SSL
- objdump命令的使用
- Android性能优化典范(一)