LDA模型和gibbs采样介绍
来源:互联网 发布:淘宝产品卖点怎么写 编辑:程序博客网 时间:2024/05/22 00:36
有了上述的符号表示,我们可以有如下的产生文档的过程
1. 对每一篇文档,从主题分布中抽取一个主题;
2. 从上述被抽到的主题所对应的单词分布中抽取一个单词;
3. 重复上述过程直至遍历文档中的每一个单词。
这里面的alpha和beta分别是主题的先验分布和某主题对应的词语的分布的先验分布的参数。
为什么要用先验分布呢?
之前我们估计参数的方法往往是max likelihood的方法 即 augmax p( | ) 而有贝叶斯学派的观点就是任何参数都是有一个先验分布的,如我抛硬币连续抛10次,每次都是正面,那么如果是按照频率学派 max likelihood 的方法估计参数值得到的就是 p(正面)=1,但这显然是不合理的。所以我就要用如下的贝叶斯公式进行参数的推导
通过这个公式我们就可以看出我们用贝叶斯方法进行预测的推导之后,我们得到观测值就是一个加上先验知识的最大化后验知识 augmax p( | )的参数估计值。
说了上面的预测参数的方法,显然我们需要对我们LDA中的参数和找到对应的先验知识。接下来介绍如何选取先验知识。
我们以某一个主题分布和这个主题分布下的词语分布分布为例,来说明如何选取先验知识。这里我们引出共轭先验的知识。
首先,有先验知识 + likelihood =后验知识
对于这个等式,我们看到先验和后验是同一种形式,则我们就说 Dir是MultCount的共轭先验!
可以看到,如果使用共轭先验作为某一个likelihood的先验知识,那么它的后验分布是无论从计算还是形式上都是很方便的。
引出了共轭先验的知识,也就到了LDA的核心了,我们为什么会选择Dirichlet 分布做为我们这个模型中参数和的先验知识呢?
原因就是我们的likelihood就是多项式分布!
在看一下这个公式,那么多项分布的共轭先验不就是Dirichlet 分布嘛!
所以可以说Dirichlet 分布就是多项式分布的分布!
下面解释下为什么我们的参数为什么是多项式分布。以为例,则可以看到我们在选取主题的时候,假设有3个主题,则我们的主题观测结果就是有 主题1多少个,主题2多少个,主题3多少个,这就是一个多项式分布!
我们假设共有M个主题(K-dim)的分布,K个产生词语分布,则这就是K+M个独立的共轭结构。我们的目标
二.Gibbs采样
1.首先为什么要采样?
这个问题困扰了好久,先说什么是采样。
采样就是说我们知道了某一种事件的分布,然后想得到这个分布下的数据,而获取这个样本的过程就是采样!打个比方,一枚硬币,我们知道它是均匀分布的,我们想知道100次投掷的一个结果(可能是45正55反,或者54正46反,再或者50正50反.......)。获取这个结果的过程就是采样!
通过公式的推到我们可以得到:
有了这个联合分布,我们就想知道这个分布的样本,继而再通过这些样本来用ML等方法来估计我们的参数。这就是我们采样的原因---获取已知分布的样本点!
而采样的过程用了随机过程中关于markov转移矩阵收敛的判别条件以及markov细致平稳条件的判定,这里略过介绍,只需知道核心思想就是利用马氏链的收敛特性,构造一个转移矩阵让它的收敛向量就是我们的概率分布。
直接给出公式
有了上面的公式,我们就可以通过它进行采样,然后统计采样的结果,这里用均值代替ML来估计我们的参数。
这里面的参数和,是我们在训练后需要用到的数据。它是topic-word的一个分布,对于新的document D,我们只需要重复上面的过程(在更新参数的时候用我们之前的训练的),当topic收敛的时候,就得到一片文章的主题分布了。
- LDA模型和gibbs采样介绍
- LDA的Gibbs 采样
- LDA中Gibbs采样算法和并行化
- 马尔科夫链MCMC采样算法和LDA Gibbs Sampling
- 蒙特卡洛和gibbs采样
- LDA主题模型和Gibbs Sampling 学习整理
- LDA主题模型简介-&&-浅谈gibbs sampling(LDA实验)
- LDA gibbs
- Gibbs 采样
- Gibbs采样
- gibbs采样
- Gibbs sampling [Gibbs采样]
- Gibbs sampling [Gibbs采样]
- Gibbs sampling [Gibbs采样]
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- LDA-math-MCMC 和 Gibbs Sampling
- JMeter的Cookie Policy
- UVa 10763: Foreign Exchange
- 使CListCtrl可编辑(转)
- javascript call的解释
- Linux环境下用命令更新Android SDK
- LDA模型和gibbs采样介绍
- 如何查看80端口占用情况
- 后缀数组 (由倍增算法构造)
- No result defined for action com.dxs.hemc.web.CouponAction and result input
- 大型机汇编(mainframe assembler/HLASM)之COBOL解惑
- MFC中变量的命名方法
- Poj 3667 Hotel
- 笨鸟后飞
- NLS_Lang 客户端不能被确定