LDA学习笔记4-MCMC

本文深入探讨了MCMC方法的核心思想、关键要点及常见变种算法,包括Metropolis-Hastings算法、Gibbs采样算法及其变形。详细解释了转移矩阵构造、平稳性和不可约性等概念,并通过实例展示了如何应用这些算法解决实际问题。

之前提到的sampling方法存在各自的缺点,

如对函数的数学性质有一定要求,不适应高维场景等,因此有人提出了Markov Chain Monte Carlo (MCMC)方法

MCMC方法的基本思想就是构造一个markov链,使得其最终收敛到平稳的目标分布p(x)。则由任意点x0出发,依次生成x1,x2...,收敛后的样本点xi 符合目标分布

(reminding,对转移矩阵P,存在单个特征值=1,其他特征值绝对值均<1,则必收敛到)

MCMC的几个要点是

1. 构造合适的转移矩阵P,使得markov链收敛到目标p(x)

2.选取合适的点,需要注意两点:1.在收敛之前称为burn-in态,此时样本点不可用; 2.markov中,连续的两个样本点相关性很大,一般不直接用,而是隔多点抽取一个点

根据转移矩阵的构造算法不同,形成不同的MCMC算法。这些算法都需要保证1条件成立,

即满足两条特性:1.invariant /stationary 2. ergodic

1. invariant平稳性:即存在分布p,对转移矩阵T,使得 Tp=p, 则p为以T为转移矩阵的markov链的收敛目标概率


这条性质有很多充分必要条件,不同的MCMC算法利用了不同的条件

如细致平衡性(detailed balance)(也叫reversible):



2. ergodic:各态经历/不可约?

这个性质保证了无论初始p0是多少,在迭代到足够多步时,都能收敛到唯一的p*,通常只要任意Tij!=0即可保证


下面介绍两种常见的MCMC算法

1. Metropolis-Hastings算法

MH算法构造满足细致平衡性的转移概率来保证invariant,其转移概率T(x,x*)=q(x* | x)* min{1, p(x*) q(x|x*) /p(x) q(x*|x)}

p(x)*T(x,x*)= p(x)*q(x* | x)* min{1, p(x*) q(x|x*) /p(x) q(x*|x)}

p(x*) *T(x*,x) = p(x*)*q(x | x*)* min{1, p(x) q(x*|x) /p(x*) q(x|x*)}

其中q是任意一个概率

可以证明,上面两个式子相等,因此满足细致平衡性, MH算法构造出的markov稳定到概率p


2. Gibbs sampling

gibbs每个迭代步骤分成多个子步骤,每个子步骤选定(或依次)一个维度进行更新,详细算法为

这是MH算法的一个特例,对q进行如下定义,则MH -> Gibbs算法

设在第i个子步骤对x的第i个维度进行sampler时,

若x ->x* 仅有第i维可能不同,即x*_^i ==x_^i  ,定义q(x*|x)= p(xi* |  x_^i) (其中p为目标概率)

p(x*) q(x|x*)  = p(x*)* p(xi |  x_^i)=p(x_^i) *  p(xi* |  x_^i)* p(xi |  x_^i)=p(x)*p(x*|x)

A(x*|x)=min{1,p(x*) q(x|x*) /p(x) q(x*|x) }  =1

当x和x*有其他维度不同,定义q(x*|x)=0


当包含观察值w时,仅对未知变量进行sampling,

即以上的p(z)替换成p(z|w),每次抽样抽取p(zi| z-i, w).


3.Gibbs算法的几种变形

某位善于总结的人给出了区别,http://nlpers.blogspot.com/2007/07/collapsed-gibbs.html

设对p(a,b,c)联合概率进行抽样

标准gibbs sampling算法:

  1. Draw a conditioned on b,c

   2. Draw b conditioned on a,c  

   3. Draw c conditioned on a,b


简单变体:

   1. Draw a,b conditioned on c
   2. Draw c conditioned on a,b


当我们对其中某个变量b不感兴趣,可以把b积分掉,按p(a,c)以简化sampling形式,这就是collapsed Gibbs sampler

  1. Draw a conditioned on c
   2. Draw c conditioned on a

例如,当b为参数,且p(a,c)有更容易抽样的形式,我们可以如此做,获得关于a,c的MCMC,

然后,对a,c进行参数估计(MLC/MAP等),直接算出b,以简化算法


进一步的blocked Gibbs sampler.:分批算法,是说b可以在某一步被积分掉,但是又不是完全被积分掉,有时候按照p(a,b),有时候按照p(a,b,c)来计算,也就是说,在计算过程中,可以灵活的改变转移矩阵?只需要保证这些矩阵都能使得MCMC最终收敛到目标就可以了。

   1. Draw a conditioned on c
   2. Draw b conditioned on a,c
   3. Draw c conditioned on a,b




### LDA模型与TF-IDF模型结合的方法 LDA(Latent Dirichlet Allocation)是一种主题建模技术,能够发现文本数据中的潜在主题分布。而TF-IDF则是一种衡量词语重要性的方法,常用于文本表示和特征提取。两者的结合可以增强文本分析的效果。 #### 方法一:利用TF-IDF加权调整LDA输入矩阵 在传统的LDA模型中,通常使用词袋模型作为输入,其中每个文档由一个词汇计数向量表示。然而,这种简单的计数方式可能无法有效反映词语的重要性。通过引入TF-IDF权重,可以在构建输入矩阵时赋予高频低区分度的词较低权重,从而优化LDA的主题建模效果[^1]。 具体实现如下: 1. 首先计算每篇文档的TF-IDF值。 2. 将原始词频矩阵乘以对应的TF-IDF权重矩阵,得到一个新的加权词频矩阵。 3. 使用该加权矩阵作为LDA算法的输入进行训练。 ```python from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.decomposition import LatentDirichletAllocation # 假设 corpus 是包含多个文档的列表 vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(corpus) lda_model = LatentDirichletAllocation(n_components=10, random_state=42) lda_output = lda_model.fit_transform(tfidf_matrix) ``` 这种方法的优势在于它能更好地捕捉到那些对特定主题有贡献的关键术语,而不是简单依赖于它们在整个语料库中的出现次数[^2]。 #### 方法二:基于TF-IDF筛选关键词后再运行LDA 另一种策略是在执行LDA之前,先依据TF-IDF得分挑选出最具代表性的词汇子集来减少噪音干扰并提高效率。这一步骤有助于去除不重要的停用词或其他无关紧要的信息项。 操作流程包括但不限于以下几个方面: - 计算整个集合里所有单词各自的TF-IDF分数; - 设定阈值或者选取固定数量最高的几个词条构成新的词汇表; - 对应修改后的词汇表重新生成稀疏矩阵供后续LDA过程调用。 此法特别适合当面对非常庞大的原始资料集时采用,因为它不仅降低了计算复杂度还提升了最终结果的质量[^3]。 ### 应用场景 1. **舆情监控与热点话题挖掘** 在社交媒体数据分析领域,结合两者可以帮助识别当前流行趋势下的核心讨论点及其背后隐藏的社会情绪走向。 2. **推荐系统改进** 商业网站上的商品评论区可以通过联合运用这两种工具找出顾客反馈意见里的重点短语进而改善产品设计或服务体验 3. **学术论文分类整理** 科研人员可借助这一组合快速归纳总结大量文献资源的核心概念框架便于进一步深入研究探讨
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值