python数据分析模型选择_在PYTHON中进行主题模型LDA分析

1 文本生成

1.1 文本生成过程

对于一篇文档,可以看成是一组有序的词的序列

equation?tex=d%3D%28%5Comega_1%2C%5Comega_2%2C%E2%80%A6%2C%5Comega_n%29。从统计学的角度看,文档的生成可以看成是上帝抛掷骰子生成的结果,每一次抛掷骰子都生成一个单词,抛掷

equation?tex=n次生成一篇文档。对于该抛掷的过程,存在两个不同学派的观点:

频率学派认为,上帝只有一个骰子,这个骰子有V面,每个面对应一个单词。上帝生成文档是通过独立抛掷

equation?tex=n次产生n个词;

贝叶斯学派认为,上帝有一个装有多个骰子的坛子,每个骰子有V面,每个面对应一个单词(不同骰子每个面概率不同)。上帝生成文档是通过先在坛子里拿一个骰子,然后再独立抛掷

equation?tex=n次产生

equation?tex=n个词。

LDA(Latent Dirichlet Allocation)是Blei等人基于上述贝叶斯学派的观点提出的一种生成文档的方法,该方法假设每个单词是由背后的一个潜在隐藏的主题中抽取出来。对于语料库中的每篇文档,其生成过程为:(1)选择主题;(2)生成单词;(3)组成文档。具体过程如下:

对于每篇文档,其主题存在一个分布,根据该主题分布抽取一个主题;

对于每个主题,其单词存在一个分布,根据该分布抽取一个单词;

重复过程2直到遍历文档中的每一个词。

那么上述主题分布和单词分布都是什么分布呢?且分布需要满足什么性质呢?

1.2 贝叶斯规则

对于一篇文档,构成文档的单词是可观测的,但文档的主题是不可观测的,因此我们需要根据可观测的单词去估计隐藏的主题分布。根据贝叶斯规则:

equation?tex=p%28%5Ctheta%7Cx%29%3D%5Cfrac%7Bp%28x%7C%5Ctheta%29%2Ap%28%5Ctheta%29%7D%7Bp%28x%29%7D%3D%5Cfrac%7Bp%28x%7C%5Ctheta%29p%28%5Ctheta%29%7D%7B%5Cint+p%28x%7C%5Ctheta%29%2Ap%28%5Ctheta%29d%5Ctheta%7D%5Cpropto+p%28x%7C%5Ctheta%29%2Ap%28%5Ctheta%29+%5C%5C

其中:

equation?tex=p%28%5Ctheta%7Cx%29表示根据观测的数据,得出主题的后验分布;

equation?tex=p%28%5Ctheta%29表示主题的先验分布;

equation?tex=p%28x%7C%5Ctheta%29表示观测数据的似然函数;

上述就是贝叶斯思想:对于一个未知的分布,先假设其服从先验分布(来源于以前做试验数据计算得到,或来自于人们的主观经验),通过观测到的数据,根据贝叶斯规则计算对应的后验分布。很显然

equation?tex=t时刻的后验分布为

equation?tex=t%2B1次的先验分布,因此需要满足先验分布和后验分布具有相同的形式,即上述中

equation?tex=p%28%5Ctheta%7Cx%29

equation?tex=p%28%5Ctheta%29具有相同的分布形式。

2 前置知识

2.1 gamma函数

根据阶乘可知:

equation?tex=n%21%3D1%2A2%2A3%2A%E2%80%A6%2An,但是当出现小数时,比如计算

equation?tex=0.5%21则阶乘无法直接计算,因此才出现了阶乘的函数形式——gamma函数:

equation?tex=%5CGamma%28x%29%5Cint_0%5E%7B%2B%5Cinfty%7De%5E%7B-t%7Dt%5E%7Bx-1%7Ddt%28x%3E0%29+%5C%5C

根据gamma函数计算可得

equation?tex=%5CGamma%28x%2B1%29%3Dx%5CGamma%28x%29,因此有

equation?tex=%5CGamma%28n%29%3D%28n-1%29%21

2.2 二项分布

对于

equation?tex=n次独立试验,假设每次试验的结果只有两种:成功与失败。成功的概率为

equation?tex=p,则失败的概率为

equation?tex=1-p

equation?tex=n次独立实验的结果中,成功的次数为

equation?tex=n_1,失败的次数为

equation?tex=n_2,则定义似然函数为:

equation?tex=L%3D%5Cfrac%7Bn%21%7D%7Bn_1%21n_2%21%7Dp%5E%7Bn_1%7D%EF%BC%881-p%EF%BC%89%5E%7Bn_2%7D+%5C%5C

似然函数表示观测数据出现的概率,上式满足:

equation?tex=n%3Dn_1%2Bn_2

2.3 beta分布

equation?tex=%5Cbegin%7Baligned%7D+P%28p%7C%5Calpha_1%2C%5Calpha_2%29%26%3D%5Cfrac%7Bp%5E%7B%5Calpha_1-1%7D%281-p%29%5E%7B%5Calpha_2-1%7D%7D%7BB%28%5Calpha_1%2C%5Calpha_2%29%7D%5C%5C+%26%3D%5Cfrac%7B%5CGamma%28%5Calpha_1%2B%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_2%29%7Dp%5E%7B%5Calpha_1-1%7D%281-p%29%5E%7B%5Calpha_2-1%7D%5C%5C+%5Cend%7Baligned%7D+%5C%5C

其中

equation?tex=%5Calpha_1%2C%5Calpha_2为beta分布的超参数,表示伪计数。

参数解释:假设NBA运动员的投篮命中率服从beta分布,对一个刚进联盟的篮球运动员的命中率进行建模,很明显该运动员的命中率也服从beta分布。此时利用上赛季全联盟所有人的投篮命中数

equation?tex=%5Calpha_1,打铁数

equation?tex=%5Calpha_2,作为该运动员命中率beta分布的参数。且以

equation?tex=%5Cfrac%7B%5Calpha_1%7D%7B%5Calpha_1%2B%5Calpha_2%7D作为该运动员的先验命中率。此后,根据该运动员投篮数据的增加,去更新其投篮命中率的计算。

期望计算:

equation?tex=%5Cbegin%7Baligned%7D+E%28p%29%26%3D%5Cint_0%5E1t%2ABeta%28t%7C%5Calpha_1%2C%5Calpha_2%29dt%5C%5C+%26%3D%5Cint_0%5E1t%5Cfrac%7B%5CGamma%28%5Calpha_1%2B%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_2%29%7Dt%5E%7B%5Calpha_1-1%7D%281-t%29%5E%7B%5Calpha_2-1%7Ddt%5C%5C+%26%3D%5Cfrac%7B%5CGamma%28%5Calpha_1%2B%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_2%29%7D%5Cint_0%5E1t%5E%7B%5Calpha_1%7D%281-t%29%5E%7B%5Calpha_2-1%7Ddt%5C%5C+%5Cend%7Baligned%7D+%5C%5C

对于分布

equation?tex=Beta%28t%7C%5Calpha_1%2B1%2C%5Calpha_2%29,有

equation?tex=%5Cint_0%5E1Beta%28t%7C%5Calpha_1%2B1%2C%5Calpha_2%29dt%3D%5Cint_0%5E1%5Cfrac%7B%5CGamma%28%5Calpha_1%2B1%2B%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%2B1%29%5CGamma%28%5Calpha_2%29%7Dt%5E%7B%5Calpha_1%7D%281-t%29%5E%7B%5Calpha_2-1%7Ddt%3D1+%5C%5C

则有

equation?tex=%5Cint_0%5E1t%5E%7B%5Calpha_1%7D%281-t%29%5E%7B%5Calpha_2-1%7Ddt%3D%5Cfrac%7B%5CGamma%28%5Calpha_1%2B1%29%5CGamma%28%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%2B1%2B%5Calpha_2%29%7D+%5C%5C

代入上式

equation?tex=E%28p%29

equation?tex=E%28p%29%3D%5Cfrac%7B%5CGamma%28%5Calpha_1%2B%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_2%29%7D%2A%5Cfrac%7B%5CGamma%28%5Calpha_1%2B1%29%5CGamma%28%5Calpha_2%29%7D%7B%5CGamma%28%5Calpha_1%2B1%2B%5Calpha_2%29%7D%3D%5Cfrac%7B%5Calpha_1%7D%7B%5Calpha_1%2B%5Calpha_2%7D+%5C%5C

2.4 共轭先验分布

上述二项式分布的似然函数为

equation?tex=L%3D%5Cfrac%7Bn%21%7D%7Bn_1%21n_2%21%7Dp%5E%7Bn_1%7D%EF%BC%881-p%EF%BC%89%5E%7Bn_2%7D+%5C%5C

先验的beta分布为

equation?tex=P%28p%7C%5Calpha_1%2C%5Calpha_2%29%3D%5Cfrac%7Bp%5E%7B%5Calpha_1-1%7D%281-p%29%5E%7B%5Calpha_2-1%7D%7D%7BB%28%5Calpha_1%2C%5Calpha_2%29%7D+%5C%5C

根据贝叶斯规则可得后验分布

equation?tex=%5Cbegin%7Baligned%7D+P%28p%7Cn_1%2Cn_2%2C%5Calpha_1%2C%5Calpha_2%29%26%3D%5Cfrac%7B%28%5Cfrac%7Bp%5E%7B%5Calpha_1-1%7D%281-p%29%5E%7B%5Calpha_2-1%7D%7D%7BB%28%5Calpha_1%2C%5Calpha_2%29%7D%29%2A%28%5Cfrac%7Bn%21%7D%7Bn_1%21n_2%21%7Dp%5E%7Bn_1%7D%EF%BC%881-p%EF%BC%89%5E%7Bn_2%7D%29%7D%7B%5Cint_0%5E1%28%5Cfrac%7Bq%5E%7B%5Calpha_1-1%7D%281-q%29%5E%7B%5Calpha_2-1%7D%7D%7BB%28%5Calpha_1%2C%5Calpha_2%29%7D%29%2A%28%5Cfrac%7Bn%21%7D%7Bn_1%21n_2%21%7Dq%5E%7Bn_1%7D%EF%BC%881-q%EF%BC%89%5E%7Bn_2%7D%29dq%7D%5C%5C+%26%3D%5Cfrac%7Bp%5E%7Bn_1%2B%5Calpha_1-1%7D%281-p%29%5E%7Bn_2%2B%5Calpha_2-1%7D%7D%7B%5Cint_0%5E1q%5E%7Bn_1%2B%5Calpha_1-1%7D%281-q%29%5E%7Bn_2%2B%5Calpha_2-1%7Ddq%7D%5C%5C+%26%3D%5Cfrac%7Bp%5E%7Bn_1%2B%5Calpha_1-1%7D%281-p%29%5E%7Bn_2%2B%5Calpha_2-1%7D%7D%7BB%28n_1%2B%5Calpha_1%2Cn_2%2B%5Calpha_2%29%7D%5C%5C+%26%3DBeta%28n_1%2B%5Calpha_1%2Cn_2%2B%5Calpha_2%29+%5Cend%7Baligned%7D+%5C%5C

即后验分布仍满足beta分布,与先验一致。

先验分布

equation?tex=P%28p%7C%5Calpha_1%2C%5Calpha_2%29%3DBeta%28%5Calpha_1%2C%5Calpha_2%29+%5C%5C

后验分布

equation?tex=P%28p%7C%5Calpha_1%2C%5Calpha_2%2Cn_1%2Cn_2%29%3DBeta%28%5Calpha_1%2Bn_1%2C%5Calpha_2%2Bn_2%29+%5C%5C

其中

equation?tex=%5Calpha_1%2C%5Calpha_2为伪计数,

equation?tex=n_1%2Cn_2为观测的数据。

综上,二项分布对应的共轭先验为beta分布,其意思为,beta分布*二项分布的结果仍未beta分布。

3 Dirichlet分布

3.1 多项式分布

对二项式分布推广到k种结果的情况,此时变为多项式分布,对应的似然函数为

equation?tex=L%3D%5Cfrac%7Bn%21%7D%7Bn_1%21n_2%21%E2%80%A6n_k%21%7Dp_1%5E%7Bn_1%7Dp_2%5E%7Bn_2%7D%E2%80%A6p_k%5E%7Bn_k%7D%3Dn%21%5Cprod_%7Bi%3D1%7D%5Ek%5Cfrac%7Bp_i%5E%7Bn_i%7D%7D%7Bn_i%21%7D+%5C%5C

其中,

equation?tex=%5Csum_%7Bi%3D1%7D%5Ekn_i%3Dn

equation?tex=%5Csum_%7Bi%3D1%7D%5Ekp_i%3D1

3.2 Dirichlet分布

对beta分布推广到k种结果的情况,此时表为Dirichle分布

equation?tex=P%28p_1%2Cp_2%2C%E2%80%A6%2Cp_k%7C%5Calpha_1%2C%5Calpha_2%2C%E2%80%A6%2C%5Calpha_k%29%3D%5Cfrac%7B%5CGamma%28%5Calpha_1%2B%5Calpha_2%2B%E2%80%A6%2B%5Calpha_k%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_2%29%E2%80%A6%5CGamma%28%5Calpha_k%29%7Dp_1%5E%7B%5Calpha_1-1%7Dp_2%5E%7B%5Calpha_2-1%7D%E2%80%A6p_k%5E%7B%5Calpha_k-1%7D+%5C%5C

其中

equation?tex=%5Csum_%7Bi%3D1%7D%5Ekp_i%3D1

同2.3,Dirichlet分布的期望为:

equation?tex=E%28p_i%29%3D%5Cfrac%7B%5Calpha_i%7D%7B%5Csum_%7Bi%3D1%7D%5Ek%5Calpha_i%7D

3.3 多项式分布与Dirichlet分布共轭

同2.4可得

先验分布

equation?tex=P%28p_1%2Cp_2%2C%E2%80%A6%2Cp_k%7C%5Calpha_1%2C%5Calpha_2%2C%E2%80%A6%2C%5Calpha_k%29%3DBeta%28%5Calpha_1%2C%5Calpha_2%2C%E2%80%A6%2C%5Calpha_k%29+%5C%5C

后验分布

equation?tex=P%28p_1%2Cp_2%2C%E2%80%A6%2Cp_k%7C%5Calpha_1%2C%5Calpha_2%2C%E2%80%A6%2C%5Calpha_k%2Cn_1%2Cn_2%2C%E2%80%A6%2Cn_k%29%3DBeta%28%5Calpha_1%2Bn_1%2C%5Calpha_2%2Bn_2%2C%E2%80%A6%2C%5Calpha_k%2Bn_k%29+%5C%5C

其中

equation?tex=%5Calpha_1%2C%5Calpha_2%2C%E2%80%A6%2C%5Calpha_k为伪计数,

equation?tex=n_1%2Cn_2%2C%E2%80%A6%2Cn_k为观测的数据。

4 LDA模型

4.1 模型表示

现在问题是这样的,我们有

equation?tex=D篇文档,对应第

equation?tex=d个文档有

equation?tex=N_d个单词。我们的目标是找到每一篇文档的主题分布和每一个主题单词的分布。在LDA模型中,我们需要先假定一个主题数目

equation?tex=K,这样所有的分布就都基于

equation?tex=K个主题展开。

对于语料库中的每篇文档,LDA定义了一个生成过程,以1文本生成部分的投骰子为例,如下:

equation?tex=%5Cvec%5Calpha%5Cto%5Cvec%5Ctheta_d%5Cto+z_%7Bd%2Cn%7D。这个过程表示在生成第

equation?tex=d篇文档的时候,在D个服从

equation?tex=%5Cvec%5Ctheta_d%EF%BD%9EDirichlet%28%5Cvec%5Calpha%29的坛子中找到骰子

equation?tex=%5Cvec%5Ctheta_d,然后投掷这枚骰子生成第n个词的主题(topic)编号

equation?tex=z_%7Bd%2Cn%7D

equation?tex=%5Cvec%5Ceta%5Cto%5Cbeta_k%5Cto%5Comega_%7Bd%2Cn%7D%7Ck%3Dz_%7Bd%2Cn%7D。这个过程表示在生成第

equation?tex=d篇文档第

equation?tex=n个词的时候,在K个服从

equation?tex=%5Cvec%5Cbeta_k%EF%BD%9EDirichlet%28%5Cvec%5Ceta%29的坛子找到主题编号为

equation?tex=z_%7Bd%2Cn%7D的骰子,然后投掷这枚骰子生成单词

equation?tex=w_%7Bd%2Cn%7D

简单来说,步骤1就是

equation?tex=p%28%5Cvec+z%29,步骤2就是

equation?tex=p%28%5Cvec+w%7C%5Cvec+z%29,根据条件概率的基本公式可得:

equation?tex=p%28%5Cvec+w%2C%5Cvec+z%29%3Dp%28%5Cvec+w%7C%5Cvec+z%29p%28%5Cvec+z%29+%5C%5C

而LDA的目标就是要找出每个词后潜在的主题,所以为了达到这个目标,需要计算后验概率:

equation?tex=p%28%5Cvec+z%7C%5Cvec+w%29%3D%5Cfrac%7Bp%28%5Cvec+w%2C%5Cvec+z%29%7D%7B%5Csum_zp%28%5Cvec+w%2C%5Cvec+z%29%7D+%5C%5C

4.2 直接计算

针对上述后验概率的计算,在这里对其计算复杂度进行分析。

按照离散分布边缘概率的处理方式,文档中一个单词

equation?tex=w_i的全概率为

equation?tex=p%28w_i%29%3D%5Csum_%7Bk%3D1%7D%5EKp%28w_i%2Cz_i%3Dk%29%3D%5Csum_%7Bk%3D1%7D%5EKp%28w_i%7Cz_i%3Dk%29p%28z_i%3Dk%29+%5C%5C

因此对于上述后验概率计算中的分母

equation?tex=%5Csum_zp%28%5Cvec+w%2C%5Cvec+z%29,其表示为所有单词的联合概率,则有

equation?tex=%5Csum_zp%28%5Cvec+w%2C%5Cvec+z%29%3Dp%28%5Cvec+w%29%3D%5Cprod_%7Bi%3D1%7D%5EVp%28w_i%29%3D%5Cprod_%7Bi%3D1%7D%5EV%5Csum_%7Bk%3D1%7D%5EKp%28w_i%7Cz_i%3Dk%29p%28z_i%3Dk%29+%5C%5C

每个单词都对应着

equation?tex=K个主题,总共有

equation?tex=V个单词,因此分母计算陷入了

equation?tex=K%5EV项难题,这个离散状态空间太大以至于无法枚举。

5 模型求解

在上节结尾可知,现实中,往往很难求出精确的概率,因此常常采用近似推断的方法。近似推断的方法大致可分为两大类:第一类是使用随机化采样完成近似,比如Gibbs采样;第二类是使用确定性近似完成近似推断,比如变分推断。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值