精华内容
下载资源
问答
  • 潜在狄利克雷分布(LDA)初探
    2020-05-27 16:39:31


    潜在狄利克雷分布(Latent Dirichlet Allocation, LDA),是一种无监督学习算法,用于识别文档集中潜在的主题词信息。在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量 k 即可。对于每一个主题均可找出一些词语来描述它。

    LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

    多项式分布与狄利克雷分布

    狄利克雷分布是多项式分布的共轭先验概率分布。

    多项式分布

    假设重复进行 n n n次独立随机试验,每次试验可能出现的结果有 k k k种,第 i i i种结果出现的概率为 p i p_i pi,第 i i i种结果出现的次数为 n i n_i ni,随机变量 X = ( X 1 , X 2 , … , X k ) X=(X_1,X_2,\ldots,X_k) X=(X1,X2,,Xk) 表示试验所有可能的结果的次数, X i X_i Xi表示第 i i i种结果出现的次数。那么随机变量X服从多项分布:
    P ( X 1 = n 1 , X 2 = n 2 , … , X k = n k ) = n ! n 1 ! n 2 ! … n k ! p 1 n 1 p 2 n 2 … p k n k P(X_1=n_1,X_2=n_2,\ldots,X_k = n_k) = \frac{n!}{n_1!n_2!\ldots n_k!} p_1^{n_1} p_2^{n_2}\ldots p_k^{n_k} P(X1=n1,X2=n2,,Xk=nk)=n1!n2!nk!n!p1n1p2n2pknk
    其中 p = ( p 1 , p 2 , . . . , p k ) , ∑ i = 1 k p i = 1 , ∑ i = 1 k n i = n p=(p_1, p_2,...,p_k),\sum_{i=1}^k p_i =1, \sum_{i=1}^k n_i =n p=(p1,p2,...,pk)i=1kpi=1,i=1kni=n 。我们称变量X服从参数为 ( n , p ) (n,p) (n,p)的多项式分布,记作: X ∼ M u l t ( n , p ) X \sim Mult(n,p) XMult(n,p)

    狄利克雷分布

    多元连续随机变量 θ = ( θ 1 , θ 2 , … , θ k ) \theta = (\theta_1,\theta_2,\ldots,\theta_k) θ=(θ1,θ2,,θk)的概率密度为:
    P ( θ ∣ α ) = Γ ( ∑ i = 1 K α i ) ∏ i = 1 K Γ ( α i ) ∏ i = 1 K θ i α i − 1 P(\theta| \alpha) = \frac{\Gamma(\sum\limits_{i=1}^K\alpha_i)}{\prod_{i=1}^K\Gamma(\alpha_i)}\prod_{i=1}^K\theta_i^{\alpha_i-1} P(θα)=i=1KΓ(αi)Γ(i=1Kαi)i=1Kθiαi1
    其中 ∑ i = 1 k θ i = 1 , θ i ≥ 0 , α = ( α 1 , α 2 , … , α k ) , α i > 0 \sum_{i=1}^k \theta_i =1,\theta_i \geq 0, \alpha=(\alpha_1,\alpha_2,\ldots,\alpha_k), \alpha_i \gt 0 i=1kθi=1,θi0,α=(α1,α2,,αk),αi>0,且 Γ ( s ) \Gamma(s) Γ(s)是伽马函数:
    Γ ( s ) = ∫ 0 ∞ x s − 1 e − x d x s > 0 \Gamma(s) = \int_{0}^\infty x^{s-1}e^{-x}dx \qquad s>0 Γ(s)=0xs1exdxs>0
    则称随机变量 θ \theta θ 服从参数为 α \alpha α的狄利克雷分布,记作 θ ∼ D i r ( α ) \theta \sim Dir(\alpha) θDir(α)

    狄利克雷分布有一些重要性质:(1)狄利克雷分布属于指数分布族;(2)狄利克雷分布是多项分布的共轭先验。

    如果后验分布与先验分布属于同类,则二者称为共轭分布,先验分布称为共轭先验。使用共轭分布的好处是便于从先验分布计算后验分布。

    由于多项分布的先验分布和后验分布都是狄利克雷分布,所以狄利克雷分布是多项分布的共轭先验;狄利克雷后验分布的参数等于狄利克雷先验分布参数 α = ( α 1 , α 2 , … , α k ) \alpha=(\alpha_1,\alpha_2,\ldots,\alpha_k) α=(α1,α2,,αk) 加上多项分布的观测计数 n = ( n 1 , n 2 , … , n k ) n=(n_1,n_2,\ldots,n_k) n=(n1,n2,,nk)

    潜在狄利克雷分布模型

    文本生成

    LDA 模型是概率图模型,特点是以狄利克雷分布为多项式分布的先验分布,学习过程就是给定文本集合,通过后验概率分布的估计,推断模型的所有参数。利用LDA进行话题分析,就是对给定文本集合,学习每个文本的话题分布,以及每个话题的单词分布。文本生成过程如下图所示:

    在这里插入图片描述
    可以认为LDA是概率潜在语义分析(PLSA)的扩展,在文本生成过程中,LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布(或者说假设先验分布是均匀分布)。LDA的优点是:使用先验概率分布,可以防止学习过程中产生的过拟合 。

    模型定义

    LDA使用三个集合:

    1. V V V个单词集合 W = { w 1 , … , w v , … , w V } W=\{w_1,\ldots,w_v,\ldots,w_V\} W={w1,,wv,,wV}
    2. M M M个文本的集合 D = { w 1 , … , w m , … , w M } D=\{\mathbf w_1,\ldots,\mathbf w_m,\ldots, \mathbf w_M \} D={w1,,wm,,wM} w m \mathbf w_m wm 是第m个文本的单词,共 N m N_m Nm个单词序列 w m = ( w m 1 , … , w m n , … , w m N m ) \mathbf w_m = (w_{m1},\ldots,w_{mn},\ldots,w_{mN_m}) wm=(wm1,,wmn,,wmNm)
    3. K K K个话题的集合 Z = { z 1 , … , z k , … , z K } Z=\{z_1,\ldots,z_k,\ldots,z_K\} Z={z1,,zk,,zK}

    给定狄利克雷分布的超参数α和β,LDA文本集合的生成过程如下:

    (1) 生成话题的单词分布

    随机生成K个话题的单词分布:按照狄利克雷分布 D i r ( β ) Dir(\beta) Dir(β) 随机生成一个参数向量 φ k = ( φ k 1 , φ k 2 , … , φ k V ) , φ k ∼ D i r ( β ) \varphi_k = (\varphi_{k1},\varphi_{k2},\ldots,\varphi_{kV}), \varphi_k \sim Dir(\beta) φk=(φk1,φk2,,φkV),φkDir(β) φ k V \varphi_{kV} φkV表示话题 z k z_k zk 生成单词 w v w_v wv的概率, φ k \varphi_{k} φk作为话题 z k z_k zk的单词分布 P ( w ∣ z k ) P(w|z_k) P(wzk)

    (2) 生成文本的话题分布

    随机生成 M M M文本的话题分布:按照狄利克雷分布 D i r ( α ) Dir(\alpha) Dir(α) 随机生成一个参数向量 θ m = ( θ m 1 , θ m 2 , … , θ m k ) , θ m ∼ D i r ( α ) \theta_m = (\theta_{m1},\theta_{m2},\ldots,\theta_{mk}), \theta_m \sim Dir(\alpha) θm=(θm1,θm2,,θmk),θmDir(α) θ m k \theta_{mk} θmk表示文本 w m \mathbf w_m wm 生成话题 z k z_k zk的概率, θ m \theta_m θm作为文本 w m \mathbf w_m wm的话题分布 P ( z ∣ w m ) P(z|\mathbf w_m) P(zwm)

    (3) 生成文本的单词序列

    要随机生成 M M M个文本的 N m N_m Nm个单词,则文本 w m , ( m = 1 , 2 , . . . , M ) \mathbf w_m,(m= 1,2,... ,M) wm,(m=1,2,...,M) 的单词 w m n ( n = 1 , 2 , . . , N m ) w_{mn} (n=1,2,.. ,Nm) wmn(n=1,2,..,Nm)的生成过程如下:

    (3-1) 首先按照多项分布 M u l t ( θ m ) Mult(\theta_m) Mult(θm)随机生成一个话题 z m n z_{mn} zmn z m n ∼ M u l t ( θ m ) z_{mn} \sim Mult(\theta_m) zmnMult(θm)

    (3-2) 然后按照多项分布 M u l t ( φ z m n ) Mult(\varphi_{z_{mn}}) Mult(φzmn)随机生成一个单词 w m n , w m n ∼ M u l t ( φ z m n ) w_{mn}, w_{mn} \sim Mult(\varphi_{z_{mn}}) wmn,wmnMult(φzmn),文本 w m \mathbf w_m wm本身是单词序列 w m = ( w m 1 , … , w m n , … , w m N m ) \mathbf w_m = (w_{m1},\ldots,w_{mn},\ldots,w_{mN_m}) wm=(wm1,,wmn,,wmNm),对应着隐式的话题序列 Z = { z m 1 , z m 2 , … , z m N m } Z=\{z_{m1},z_{m2},\ldots,z_{mN_m}\} Z={zm1,zm2,,zmNm}

    上述过程对应的概率图模型如下:

    在这里插入图片描述

    展开后如下图所示:

    在这里插入图片描述

    LDA 与 PLSA 异同

    相同点:两者都假设话题是单词的多项分布,文本是话题的多项分布。

    不同点:

    1. 在文本生成过程中,LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布(或者说假设先验分布是均匀分布。;使用先验概率分布,可以防止学习过程中产生的过拟合 。

    2. 学习过程LDA基于贝叶斯学习,而PLSA基于极大似然估计。

    参考文章:

    《统计学习方法 第二版》

    【转】LDA数学八卦

    更多相关内容
  • 基于朴素贝叶斯与潜在狄利克雷分布相结合的情感分析
  • 潜在狄利克雷分配(LDA)

    千次阅读 2021-01-17 13:12:01
    潜在狄利克雷分配(LDA)潜在狄利克雷分配(LDA),作为基于贝叶斯学习的话题模型,是潜在语义分析、概率潜在语义分析的扩展,于2002年由Blei等提出。LDA在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。LDA...

    潜在狄利克雷分配(LDA)

    潜在狄利克雷分配(LDA),作为基于贝叶斯学习的话题模型,是潜在语义分析、概率潜在语义分析的扩展,于2002年由Blei等提出。LDA在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。

    LDA模型是文本集合的生成概率模型。假设每个文本由话题的一个多项式分布表示,每个话题由单词的一个多项式分布表示,特别假设文本的话题分布的先验分布是狄利克雷分布,话题的单词分布的先验分布也是狄利克雷分布。先验分布的导入使LDA能够更好地应对话题模型学习的过拟合现象。

    LDA的文本集合的生成过程如下:首先随机生成一个文本话题分布,之后再该文本的每个位置,依据该文本的话题分布随机生成一个话题,然后在该位置依据该话题的单词分布随机生成一个单词,直至文本的最后一个位置,生成整个文本。重复以上的过程生成所有文本。

    LDA模型是含隐变量的概率图模型。模型中,每个话题的单词分布,每个文本的话题分布,文本的每个位置的话题是隐变量;文本的每个文职的单词是观测变量。LDA模型的学习与推理无法直接求解,通常使用吉布斯抽样和变分EM算法。前者是蒙特卡洛法,后者是近似计算。

    一、狄利克雷分布

    1.分布定义

    多项分布是一种多元离散随机变量的概率分布,是二项分布的扩展。

    假设重复进行n次独立随机试验,每次试验可能出现的结果有k种,第i中结果出现的概率为

    math?formula=p_i,第i种结果出现的次数为

    math?formula=n_i。如果用随机变量

    math?formula=%5Cmathbf%20%7BX%3D%5C%7BX_1%2CX_2%2C%5Cdots%2CX_k%5C%7D%7D,表示试验所有可能结果的次数,其中

    math?formula=%5Cmathbf%20X_i表示第i种结果出现的次数,那么随机变量

    math?formula=%5Cmathbf%20X服从多项分布。

    若元离散随机变量的概率密度为

    math?formula=%5Cbegin%7Baligned%7D%20P(X_1%3Dn_1%2CX_2%3Dn_2%2C%5Cdots%2CX_k%3Dn_k)%3D%5Cfrac%7Bn!%7D%7Bn_1!n_2!%5Cdots%20n_k!%7Dp_1%5E%7Bn_1%7Dp_2%5E%7Bn_2%7D%5Cdots%20p_k%5E%7Bn_k%7D%20%5C%5C%20%3D%5Cfrac%7Bn!%7D%7B%5Cprod_%7Bi%3D1%7D%5Ek%20n_i!%20%7D%20%5Cprod_%7Bk%3D1%7D%5Ek%20p_i%5E%7Bn_i%7D%20%5Cend%7Baligned%7D

    其中

    math?formula=p%3D(p_1%2Cp_2%2C%5Cdots%2Cp_k)%2Cp_i%20%5Cge%200%2Ci%3D1%2C2%2C%5Cdots%2Ck%2C%5Csum_%7Bi%3D1%7D%5Ek%20p_i%20%3D%201%2C%20%5Csum_%7Bi%3D1%7D%5Ek%20n_i%20%3D%20n,,则称随机变量X服从参数为(n,p)的多项分布,记作

    math?formula=X%20%5Csim%20Mult(n%2Cp)

    当试验的次数n为1时,多项分布变成类别分布。类别分布表示试验可能出现的k种结果的概率。显然多先分布包含类别分布。

    2.狄利克雷分布

    狄利克雷分布是一种多元随机变量的概率分布,是贝塔分布的扩展。在贝爷斯学习中,狄利克雷分布作为多项分布的先验概率使用。

    多元连续型随机变量

    math?formula=%5Ctheta%20%3D%20(%5Ctheta_1%2C%5Ctheta_2%2C%5Cdots%2C%5Ctheta_k)的概率密度函数为

    math?formula=p(%5Ctheta%7C%5Calpha)%3D%5Cfrac%7B%5CGamma(%5Csum_%7Bi%3D1%7D%5Ek%20%5Calpha_i)%7D%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5CGamma(%5Calpha_i)%7D%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta_i%5E%7B%5Calpha_i-1%7D

    其中

    math?formula=%5Csum_%7Bi%3D1%7D%5Ek%20%5CTheta_i%20%3D%201%2C%5CTheta_i%20%5Cge%200%2C%5Calpha%3D(%5Calpha_1%2C%5Calpha_2%2C%5Cdots%2C%5Calpha_k)%20%2C%5Calpha_i%20%3E%200%2Ci%3D1%2C2%2C%5Cdots%2Ck,称随机变量

    math?formula=%5CTheta服从参数为

    math?formula=%5Calpha的狄利克雷分布,记作

    math?formula=%5CTheta%20%5Csim%20Dir(%5Calpha)

    式中

    math?formula=%5CGamma(s)%20%3D%20%5Cint_%7B0%7D%5E%7B%5Cinfty%7D%20x%5E%7Bs-1%7De%5E%7B-x%7D%20ds%2Cs%20%3E%200

    具有以下性质

    math?formula=%5CGamma(s%2B1)%20%3D%20s%5CGamma(s)

    当s是自然数时,有

    math?formula=%5CGamma(s%2B1)%20%3D%20s!

    math?formula=B(a)%20%3D%20%5Cfrac%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5CGamma(a_i)%7D%7B%5CGamma%20(%5Csum_%7Bi%3D1%7D%5Ek%20a_i)%7D

    则狄利克雷分布的密度函数可以写成

    math?formula=p(%5CTheta%7Ca)%20%3D%20%5Cfrac%7B1%7D%7BB(a)%7D%5Cprod_%7Bk%3D1%7D%5Ek%20%5CTheta%5E%7Ba_i-1%7D

    math?formula=B(a)是规范化因子,称为多元贝塔函数(称为扩展的贝塔函数)。由密度函数性质

    math?formula=%5Cint%20%5Cfrac%7B%5CGamma(%5Csum_%7Bi%3D1%7D%5Ek%20a_i)%7D%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5CGamma(a_i)%7D%5Cprod_%7Bi%3D1%7D%5Ek%5CTheta%5E%7Ba_i-1%7D%20d%5CTheta%20%3D%5Cfrac%7B%5CGamma(%5Csum_%7Bi%3D1%7D%5Ek%20a_i)%7D%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5CGamma(a_i)%7D%20%5Cint%20%5Cprod_%7Bi%3D1%7D%5Ek%5CTheta%5E%7Ba_i-1%7D%20%3D1

    math?formula=B(a)%20%3D%20%5Cint%20%5Cprod_%7Bi%3D1%7D%5Ek%20%5CTheta%5E%7Ba_i-1%7D%20d%5CTheta

    二.共轭先验

    狄利克雷有一些重要性质:(1)狄利克雷分布属于指数分布簇(2)狄利克雷分布是多项分布的共轭先验

    贝叶斯学习中常使用共轭分布,如果后验分布与先验分布属于同类,则先验分布与后验分布称为共轭分布,先验分布称为共轭先验。如果多项分布的先验分布是狄利克雷分布,作为先验分布的狄利克雷分布的参数又称为超参数,使用共轭先验分布的好处是便于从先验分布计算后验分布。

    将样本数据表示为D,目标是计算样本数据D给定条件下参数

    math?formula=%5CTheta的后验概率

    math?formula=p(%5CTheta%7CD),对于给定样本数据D,似然函数是

    math?formula=p(D%7C%5Ctheta)%3D%5Ctheta_1%5E%7Bn_1%7D%5Ctheta_2%5E%7Bn_2%7D%5Cdots%5Ctheta_k%5E%7Bn_k%7D%3D%5Cprod_%7Bi%3D1%7D%5Ek%5Ctheta_i%5E%7Bn_i%7D

    假设随机变量

    math?formula=%5Ctheta服从狄利克雷分布

    math?formula=p(%5Ctheta%7Ca)其中

    math?formula=a%3D(a_1%2Ca_2%2C%5Cdots%2Ca_k)为参数,则

    math?formula=%5Ctheta的先验分布为

    math?formula=p(%5Ctheta%7Ca)%3D%5Cfrac%7B%5CGamma(%5Csum_%7Bi%3D1%7D%5Ek%20a_i)%7D%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5CGamma(a_i)%7D%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta%5E%7Ba_i-1%7D%3D%5Cfrac%7B1%7D%7BB(a)%7D%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta_i%5E%7Ba_i-1%7D%20%3D%20Dir(%5Ctheta%7Ca)%2Ca%3E0

    根据贝爷斯规则,在给定样本数据D和参数a的条件下,

    math?formula=%5Ctheta的后验概率分布是

    math?formula=%5Cbegin%7Baligned%7D%20p(%5Ctheta%7CD%2Ca)%20%3D%20%5Cfrac%7Bp(D%7C%5Ctheta)p(%5Ctheta%7Ca)%7D%7Bp(D%7C%5Calpha)%7D%20%5C%5C%20%3D%5Cfrac%7B%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta_i%5E%7Bn_i%7D%5Cfrac%7B1%7D%7BB(a)%7D%5Ctheta_i%5E%7Ba_i-1%7D%7D%7B%5Cint%20%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta_i%5E%7Bn_i%7D%5Cfrac%7B1%7D%7BB(a)%7D%5Ctheta_i%5E%7Ba_i-1%7Dd%5Ctheta%7D%20%5C%5C%20%3D%5Cfrac%7B1%7D%7BB(a%2Bn)%7D%5Cprod_%7Bi%3D1%7D%5Ek%20%5Ctheta_i%5E%7Ba_i%2Bn_i%2B1%7D%20%5C%5C%20%3DDir(%5Ctheta%7Ca%2Bn)%20%5Cend%7Baligned%7D

    狄利克雷的后验分布等于狄利克雷分布参数

    math?formula=a%3D(a_1%2Ca_2%2C%5Cdots%2Ca_k)加上多项分布的观测技术

    math?formula=n%3D(n_1%2Cn_2%2C%5Cdots%2Cn_k)

    三、潜在狄利克雷分配模型

    1.基本想法

    潜在狄利克雷分配(LDA)是文本集合的生成概率模型。模型假设话题由单词的多项分布表示,文本由话题的多项分布表示,单词分布和话题分布的先验分布都是狄利克雷分布。文本内容的不同时由于话题分布不同。

    LDA模型表示文本集合的自动生成过程:首先,基于单词分布的先验分布(狄利克雷分布)生成多个单词分布,即决定多个话题内容;之后基于话题分布的先验分布(狄利克雷分布)生成多个话题分布,针对每个话题,基于话题的单词分布生成单词,整体构成一个单词序列,即生成文本,重复这个过程生成所有文本。文本的单词序列是观测变量,文本的话题序列是隐变量,文本的话题分布和话题的单词分布也是隐变量。

    可以认为LDA是PLSA的扩展,相同点都假设话题是单词的多项分布,文本是华话题的多项分布。不同点LDA使用狄利克雷分布作为先验,而PLSA不使用先验分布(或者说假设先验分布为均匀分布),两者对文本生成过程有不同假设;学习过程LDA基于贝叶斯学习,PLSA基于极大似然估计。LDA的优点是,使用先验概率分布,可以防止学习过程中产生过拟合。

    2.模型定义

    (a)模型要素

    使用三个集合:一是单词集合

    math?formula=W%3D%5C%7Bw_1%2C%5Cdots%2Cw_v%2C%5Cdots%2Cw_V%5C%7D,其中

    math?formula=w_v是第v个单词,

    math?formula=v%3D1%2C2%2C%5Cdots%2CV,V是单词个数。二是文本集合

    math?formula=D%3D%5C%7B%5Cmathbf%7Bw_1%2C%5Cdots%2Cw_m%2C%5Cdots%2Cw_M%7D%5C%7D,其中

    math?formula=%5Cmathbf%20w_m%3D%20%5C%7Bw_%7Bm1%7D%2C%5Cdots%2Cw_%7Bmn%7D%2C%5Cdots%2Cw_mN_m%5C%7D,其中

    math?formula=w_%7Bmn%7D是文本

    math?formula=%5Cmathbf%20w_m的第n个单词,

    math?formula=n%3D1%2C2%2C%5Cdots%2CN_m

    math?formula=N_m是文本

    math?formula=%5Cmathbf%20w_m中单词个数。三是话题集合

    math?formula=Z%3D%5C%7Bz_1%2C%5Cdots%2Cz_k%2C%5Cdots%2Cz_K%5C%7D,其中,

    math?formula=z_k是第k个话题,

    math?formula=k%3D1%2C2%2C%5Cdots%2CK,K是话题的个数。

    每一个话题

    math?formula=z_k是由一个单词的条件概率分布

    math?formula=p(w%7Cz_k)决定的,

    math?formula=w%5Cin%20W。分布

    math?formula=p(w%7Cz_k)服从多项分布(严格意义上类别分布),其参数为

    math?formula=%5Cvarphi_k。参数

    math?formula=%5Cvarphi是V维向量

    math?formula=%5Cvarphi_k服从狄利克雷分布(先验分布),其超参数为

    math?formula=%5Cbeta。参数

    math?formula=%5Cvarphi_k%3D(%5Cvarphi_%7Bk1%7D%2C%5Cvarphi_%7Bk2%7D%5Cdots%2C%5Cvarphi_%7BkV%7D),其中

    math?formula=%5Cvarphi_%7Bkv%7D表示

    math?formula=z_k生成单词

    math?formula=w_v的概率。所有话题的参数向量构成

    math?formula=K*V矩阵,

    math?formula=%5Cmathbf%20%5Cvarphi%20%3D%20%5C%7B%5Cvarphi%5C%7D_%7Bk%3D1%7D%5EK,超参数

    math?formula=%5Cbeta也是V维向量

    math?formula=%5Cbeta%20%3D%20(%5Cbeta_1%2C%5Cbeta_2%2C%5Cdots%2C%5Cbeta_V)

    每一个文本

    math?formula=%5Cmathbf%20w_m由一个话题的条件概率分布

    math?formula=p(z%7C%5Cmathbf%20w_m)决定,

    math?formula=z%20%5Cin%20Z,分布

    math?formula=p(z%7C%5Cmathbf%20w_m)服从多项分布(严格意义上的类别分布),其参数为

    math?formula=%5Ctheta_m,参数

    math?formula=%5Ctheta_m服从狄利克雷分布(先验分布),其超参数为a。参数

    math?formula=%5Ctheta_m是K维向量

    math?formula=%5Ctheta_m%20%3D%20(%5Ctheta_%7Bm1%7D%2C%5Ctheta_%7Bm2%7D%2C%5Cdots%2C%5Ctheta_%7BmK%7D),其中

    math?formula=%5Ctheta_m%3D(%5Ctheta_%7Bm1%7D%2C%5Ctheta_%7Bm2%7D%2C%5Cdots%2C%5Ctheta_%7BmK%7D),其中

    math?formula=%5Ctheta_%7Bmk%7D表示文本

    math?formula=%5Cmathbf%20w_m生成话题

    math?formula=z_k的概率。所有文本构成参数构成一个M*K矩阵

    math?formula=%5Ctheta%20%3D%20%5C%7B%5Ctheta_m%5C%7D_%7Bm%3D1%7D%5EM,超参数a也是一个K维向量

    math?formula=a%3D(a_1%2Ca_2%2C%5Cdots%2Ca_K)

    每一个文本

    math?formula=%5Cmathbf%20w_m中的每一个单词

    math?formula=w_%7Bmn%7D由该文本的话题分布

    math?formula=p(z%7C%5Cmathbf%20w_m)以及所有话题的单词分布

    math?formula=p(w%7Cz_k)决定

    (b)概率图模型

    LDA本质上是一个概率图模型,图为LDA作为概率图模型的板块表示,图中结点表示随机变量,实心结点是观测变量,空心结点是隐变量;有向边表示概率依存关系;矩形(板块)内数字表示重复的次数。

    09bc46ffdac6

    images.png

    结点

    math?formula=a%2C%5Cbeta表示模型的超参数,结点

    math?formula=%5Cvarphi_k表示话题的单词分布的参数,结点

    math?formula=%5Ctheta_m表示文本的话题分布的参数,结点

    math?formula=z_%7Bmn%7D表示话题,结点

    math?formula=w_%7Bmn%7D表示单词。结点

    math?formula=%5Cbeta指向结点

    math?formula=%5Cvarphi_k,重复K次,表示根据超参数

    math?formula=%5Cbeta生成K个话题的单词分布参数

    math?formula=%5Cvarphi_k;结点a指向结点

    math?formula=%5Ctheta_m,重复M次,表示根据超参数a生成M个文本的话题分布参数

    math?formula=%5Ctheta_m;结点

    math?formula=%5Ctheta_m指向

    math?formula=z_%7Bmn%7D,重复N词,表示根据文本的话题分布

    math?formula=%5Ctheta_m生成

    math?formula=N_m个话题

    math?formula=z_%7Bmn%7D;结点

    math?formula=z_%7Bmn%7D指向结点

    math?formula=w_%7Bmn%7D,同时K个结点

    math?formula=%5Cvarphi_k也指向结点

    math?formula=w_%7Bmn%7D,表示根据话题

    math?formula=z_%7Bwn%7D以及K个话题的单词

    math?formula=%5Cvarphi_k生成单词

    math?formula=w_%7Bmn%7D。LDA是相同的随机参数被重复多次使用的概率图模型。

    四、算法

    潜在狄利克雷分配(LDA)的学习(参数估计)是一个复杂的最优化问题,很难精确求解。常用近似求解的方法有吉布斯抽样和变分推理

    1.LDA的吉布斯抽样算法

    吉布斯抽样的优点是实现简单,缺点是迭代次数可能较多。

    (a)基本想法

    LDA模型的学习,给定文本(单词序列)的集合

    math?formula=D%3D%5C%7B%5Cmathbf%7Bw_1%2C%5Cdots%2Cw_m%2C%5Cdots%2Cw_M%7D%5C%7D,其中

    math?formula=%5Cmathbf%20w_m是第m个文本集合的单词序列,即

    math?formula=%5Cmathbf%20w%20%3D%20(w_%7Bm1%7D%2Cw_%7Bm2%7D%2C%5Cdots%2Cw_%7Bmn%7D%2C%5Cdots%2Cw_%7BmN%7D),超参数

    math?formula=a%2C%5Cbeta已知。目标是要推断

    话题序列集合的后验概率

    参数

    math?formula=%5Ctheta

    参数

    math?formula=%5Cvarphi

    要对联合概率分布

    math?formula=p(w%2Cz%2C%5Ctheta%2C%5Cvarphi%7Ca%2C%5Cbeta)进行估计,其中w是观测变量,而

    math?formula=z%2C%5Ctheta%2C%5Cvarphi是隐变量。

    吉布斯抽样,是一种常用的马尔科夫链蒙特卡罗法。为了估计多元随机变量x的联合概率分布p(x),吉布斯抽样法选择x的一个分量,固定其他分量,按照其条件概率分布进行随机抽样,一次循环对每一个分量执行这个操作,得到联合分布p(x)的一个随机样本,重复这个过程,在燃烧期后,得到联合概率分布p(x)的样本集合。

    LDA模型采通常采取收缩的吉布斯抽样方法,基本想法是,通过对隐变量

    math?formula=%5Ctheta%2C%5Cvarphi积分,得到边缘概率分布

    math?formula=p(w%2Cz%7Ca%2C%5Cbeta)(也是联合分布),其中w是可观测变量,z是不可观测的。对后验概率分布

    math?formula=p(z%7Cw%2Ca%2C%5Cbeta)进行吉布斯抽样,得到分布

    math?formula=p(z%7Cw%2Ca%2C%5Cbeta)的样本集合;再利用这个样本集合对参数

    math?formula=%5Ctheta

    math?formula=%5Cvarphi进行估计,最终得到模型

    math?formula=p(w%2Cz%2C%5Ctheta%2C%5Cvarphi%7Ca%2C%5Cbeta)所有的参数估计。

    (b)算法的主要部分

    (1)抽样分布表达式

    math?formula=p(z%7Cw%2Ca%2C%5Cbeta)%3D%5Cfrac%7Bp(w%2Cz%7Ca%2C%5Cbeta)%7D%7Bp(w%7Ca%2C%5Cbeta%7D%20%5Cpropto%20p(w%2Cz%7Ca%2C%5Cbeta)

    这里变量

    math?formula=w%2Ca%2C%5Cbeta是已知的,分母相同,可以不预考虑。联合概率分布

    math?formula=p(z%2Cw%7Ca%2C%5Cbeta)的表达式可以进一步分解为

    math?formula=p(w%2Cz%7Ca%2C%5Cbeta)%20%3D%20p(w%7Cz%2Ca%2C%5Cbeta)p(z%7Ca%2C%5Cbeta)%3Dp(w%7Cz%2C%5Cbeta)p(z%7Ca)

    两个因子可以分别处理

    推导第一个因子

    math?formula=p(w%7Cz%2C%5Cbeta)的表达式

    math?formula=p(w%7Cz%2C%5Cvarphi)%3D%5Cprod_%7Bk%3D1%7D%5EK%5Cprod_%7Bv%3D1%7D%5EV%5Cvarphi_%7Bkv%7D%5E%7Bn_%7Bkv%7D%7D

    其中

    math?formula=%5Cvarphi_%7Bkv%7D是k个话题生成单词集合第v个单词的概率,

    math?formula=n_%7Bkv%7D是数据中第k个话题生成第v个单词的次数。

    math?formula=%5Cbegin%7Baligned%7D%20p(w%7Cz%2C%5Cbeta)%3D%5Cint%20p(w%7Cz%2C%5Cvarphi)p(%5Cvarphi%7C%5Cbeta)d%20%5Cvarphi%20%5C%5C%20%3D%5Cint%20%5Cprod_%7Bk%3D1%7D%5EK%5Cfrac%7B1%7D%7BB(%5Cbeta)%7D%5Cprod_%7Bv%3D1%7D%5EV%20%5Cvarphi_%7Bkv%7D%5E%7Bn_%7Bkv%7D%2B%5Cbeta_v-1%7Dd%5Cvarphi%20%5C%5C%20%3D%5Cprod_%7Bk%3D1%7D%5EK%5Cfrac%7B1%7D%7BB(%5Cbeta)%7D%5Cint%5Cprod_%7Bv%3D1%7D%5EV%20%5Cvarphi_%7Bkv%7D%5E%7Bn_%7Bkv%7D%2B%5Cbeta_v-1%7Dd%5Cvarphi%20%5C%5C%20%3D%5Cprod_%7Bk%3D1%7D%5EK%20%5Cfrac%7BB(n_k%2B%5Cbeta)%7D%7BB(%5Cbeta)%7D%20%5Cend%7Baligned%7D

    其中

    math?formula=n_k%20%3D%20%5C%7Bn_%7Bk1%7D%2Cn_%7Bk2%7D%2C%5Cdots%2Cn_%7BkV%7D%5C%7D

    第二个因子

    math?formula=p(z%7Ca)的表达式也可以类似推导。首先

    math?formula=p(z%7C%5Cbeta)%20%3D%20%5Cprod_%7Bm%3D1%7D%5EM%5Cprod_%7Bk%3D1%7D%5EK%20%5Ctheta_%7Bmk%7D%5E%7Bn_%7Bmk%7D%7D

    其中

    math?formula=%5Ctheta_%7Bmk%7D是第m个文本生成第k个话题的概率,

    math?formula=n_%7Bmk%7D是数据根据第m个文本生成的第k个话题,于是

    math?formula=%5Cbegin%7Baligned%7D%20p(z%7Ca)%3D%5Cint%20p(z%7C%5Ctheta)p(%5Ctheta%7Ca)d%5Ctheta%20%5C%5C%20%3D%5Cint%20%5Cprod_%7Bm%3D1%7D%5EM%20%5Cfrac%7B1%7D%7BB(a)%7D%5Cprod_%7Bk%3D1%7D%5EK%20%5Ctheta_%7Bmk%7D%5E%7Bn_%7Bmk%7D%2Ba_k-1%7Dd%5Ctheta%20%5C%5C%20%3D%20%5Cprod_%7Bm%3D1%7D%5EM%20%5Cfrac%7B1%7D%7BB(a)%7D%5Cint%20%5Cprod_%7Bk%3D1%7D%5EK%20%5Ctheta_%7Bmk%7D%5E%7Bn_%7Bmk%7D%2Ba_k-1%7Dd%5Ctheta%20%5C%5C%20%3D%5Cprod_%7Bm%3D1%7D%5EM%20%5Cfrac%7BB(n_m%2Ba)%7D%7BB(a)%7D%20%5Cend%7Baligned%7D

    式中

    math?formula=n_m%20%3D%5C%7Bn_%7Bm1%7D%2Cn_%7Bm2%7D%2C%5Cdots%2Cn_%7BmK%7D%5C%7D,可得

    math?formula=p(z%2Cw%7Ca%2C%5Cbeta)%3D%5Cprod_%7Bk%3D1%7D%5EK%5Cfrac%7BB(n_k%2B%5Cbeta)%7D%7BB(%5Cbeta)%7D*%5Cprod_%7Bm%3D1%7D%5EM%5Cfrac%7BB(n_m%2Ba)%7D%7BB(a)%7D

    (2)算法的后处理

    通过吉布斯抽样得到的分布

    math?formula=p(z%7Cw%2Ca%2C%5Cbeta)的样本,可以得到变量z的分配值,也可以估计变量

    math?formula=%5Ctheta%2C%5Cvarphi

    参数

    math?formula=%5Ctheta%3D%5C%7B%5Ctheta_m%5C%7D

    根据LDA表达式,后验概率满足

    math?formula=p(%5Ctheta_m%7Cz_m%2Ca)%20%3D%20%5Cfrac%7B1%7D%7BZ_%7B%5Ctheta_m%7D%7D%5Cprod_%7Bn%3D1%7D%5EN%20p(z_%7Bmn%7D%7C%5Ctheta_m)P(%5Ctheta_m%7Ca)%3DDir(%5Ctheta_m%7Cn_m%2Ba)

    这里

    math?formula=n_%7Bm%7D%3D%5C%7Bn_%7Bm1%7D%2Cn_%7Bm2%7D%2C%5Cdots%2Cn_%7BmK%7D%5C%7D是第m个文本话题的计数。

    math?formula=Z_%7B%5Ctheta_m%7D表示分布

    math?formula=p(%5Ctheta_m%2Cz_m%7Ca)对变量

    math?formula=%5Ctheta_m的边缘化因子。于是得到参数

    math?formula=%5Ctheta_m%3D%5C%7B%5Ctheta_m%5C%7D的估计式

    math?formula=%5Ctheta_%7Bmk%7D%20%3D%20%5Cfrac%7Bn_%7Bmk%7D%2Ba_k%7D%7B%5Csum_%7Bk%3D1%7D%5EK%20(n_%7Bmk%7D%2Ba_k)%7D%2Cm%3D1%2C2%2C%5Cdots%2CM%3Bk%3D1%2C2%2C%5Cdots%2CK

    参数

    math?formula=%5Cvarphi%20%3D%5C%7B%5Cvarphi_k%5C%7D

    后验概率满足

    math?formula=p(%5Cvarphi_k%7Cw%2Cz%2C%5Cbeta)%20%3D%20%5Cfrac%7B1%7D%7BZ_%7B%5Cvarphi_k%7D%7D%5Cprod_%7Bi%3D1%7D%5EIp(w_i%7C%5Cvarphi_k)p(%5Cvarphi_k%7C%5Cbeta)%3DDir(%5Cvarphi_k%7Cn_k%2B%5Cbeta)

    这里

    math?formula=n_k%3D%5C%7Bn_%7Bk1%7D%2Cn_%7Bk2%7D%2C%5Cdots%2Cn_%7BkV%7D%5C%7D是第k个话题单词的计数,

    math?formula=Z_%7B%5Cvarphi_k%7D表示分布

    math?formula=p(%5Cvarphi_k%2Cw%7Cz%2C%5Cbeta)对变量

    math?formula=%5Cvarphi_k的边缘化因子,I是文本集合单词序列w的单词总数,于是得到参数

    math?formula=%5Cvarphi_%7Bkv%7D%3D%5Cfrac%7B%5Cvarphi_%7Bkv%7D%2B%5Cbeta_v%7D%7B%5Csum_%7Bv%3D1%7D%5EV(n_%7Bkv%7D%2B%5Cbeta_v%7D%2Ck%3D1%2C2%2C%5Cdots%2CK%3Bv%3D1%2C2%2C%5Cdots%2CV

    2.LDA的变分EM算法

    (a)变分推理

    变分推理是贝叶斯学中常用的,含隐变量模型的学习和推理方法。变分推理和马尔科夫蒙特卡洛(MCMC)属于不同的技巧。MCMC通过随机抽样的方法近似统计模型的后验概率,变分推理则通过解析的方法计算模型的后验概率。

    变分推理的基本想法如下,假设模型是联合桂林分布

    math?formula=p(x%2Cz),其中x是观测变量,z是隐变量,包括参数。目标是学习模型的后验概率分布p(z|x),用模型进行概率推理。但这是一个复杂的分布,直接估计分布的参数很困难,所以考虑使用概率分布q(z)近似条件桂林分布p(z|x),用KL散度D(q(z))||p(z|x))计算两者的相似度,q(z)称为变分分布。如果能找到与p(z|x)在KL散度意义下的近似分布

    math?formula=q%5E*(z),则可以用这个分布近似p(z|x)

    KL散度可以写成以下形式

    math?formula=%5Cbegin%7Baligned%7D%20D(q(z)%7C%7Cp(z%7Cx))%20%3D%20E_q%5Blog%20%5Cspace%20q(z)%5D-E_q%5Blog%5Cspace%20p(z%7Cx)%5D%5C%5C%20%3DE_q%5Blog(q(z)%5D-E_q%5Blog%5Cspace%20p(x%2Cz)%5D%2Blog%20%5Cspace%20p(x)%20%5Cend%7Baligned%7D

    (b)变分EM算法

    将变分EM算法应用到LDA模型的学习上,首先定义具体的变分分布,推导证据下界的表达式,接着推导变分分布的参数和LDA模型的参数的估计形式,最后给出LDA模型的变分EM算法

    (1).变分下界的定义

    文本的单词序列

    math?formula=%5Cmathbf%20w%20%3D%20%5C%7Bw_1%2Cw_2%2C%5Cdots%2Cw_N%5C%7D,对应的话题序列

    math?formula=%5Cmathbf%20z%20%3D%20%5C%7Bz_1%2Cz_2%2C%5Cdots%2Cz_N%5C%7D,以及话题分布

    math?formula=%5Ctheta,和随机变量

    math?formula=%5Cmathbf%7Bw%2Cz%7D%E5%92%8C%5Ctheta的联合概率分布是

    math?formula=p(%5Ctheta%2Cz%2Cw%7Ca%2C%5Cvarphi)%3Dp(%5Ctheta%7Ca)%5Cprod_%7Bn%3D1%7D%5ENp(z_n%7C%5Ctheta)p(w_n%7Cz_n%2C%5Cvarphi)

    定义基于平均场的变分分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)%3Dq(%5Ctheta%7C%5Cgamma)%5Cprod_%7Bn%3D1%7D%5ENq(z_n%7C%5Ceta_n)

    其中

    math?formula=%5Cmathbf%20w是可观测变量,

    math?formula=%5Ctheta%2Cz是隐变量,

    math?formula=a%2C%5Cvarphi是参数

    定义基于平均场的变分分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)%3Dq(%5Ctheta%7C%5Cgamma)%5Cprod_%7Bn%3D1%7D%5EN%20q(z_n%7C%5Ceta_n)

    其中

    math?formula=%5Cgamma是狄利克雷分布参数,

    math?formula=%5Ceta%3D(%5Ceta_1%2C%5Ceta_2%2C%5Cdots%2C%5Ceta_n)是多项分布参数,变量

    math?formula=%5Ctheta%E5%92%8Cz的各个分量都是条件独立的,目标是求KL散度意义下最相近的变分分布

    math?formula=p(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)以及近似LDA模型的后验概率分布

    math?formula=p(%5Ctheta%2Cz%7Cw%2Ca%2C%5Cvarphi)

    09bc46ffdac6

    inference_graphic_model.png

    变分分布的板块表示,LDA模型中隐变量之间不存在依存关系,变分分布中这些依存关系被去掉,变量条件独立

    由此可得到一个文本的证据下界

    math?formula=L(%5Cgamma%2C%5Ceta%2Ca%2C%5Cvarphi)%3DE_q%5Blog%20%5Cspace%20p(%5Ctheta%2Cz%2Cw%7Ca%2C%5Cvarphi)%5D-E_q(log%20%5Cspace%20q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)%5D

    所有文本的证据下界为

    math?formula=L_w(%5Cgamma%2C%5Ceta%2Ca%2C%5Cvarphi)%3D%5Csum_%7Bm%3D1%7D%5EM%5C%7BE_q%5Blog%20%5Cspace%20p(%5Ctheta_m%2Cz_m%2Cw_m%7Ca%2C%5Cvarphi)%5D-E_%7Bq_m%7D%5Blog%5Cspace%20p(%5Ctheta_m%2Cz_m%7C%5Cgamma_m%2C%5Ceta_m)%5D%5C%7D

    为了求证据下界

    math?formula=L(%5Cgamma%2C%5Ceta%2Ca%2C%5Cvarphi)的最大化,首先写出证据下界的表达式。为此展开证据下界表达式

    math?formula=L(%5Cgamma%2C%5Ceta%2Ca%2C%5Cvarphi)%3DE_q%5Blog%20%5Cspace%20p(%5Ctheta%7Ca)%5D%2BE_q%5Blog%20%5Cspace%20(z%7C%5Ctheta)%2BE_q%20%5Blog%20%5Cspace%20p(w%7Cz%2C%5Cvarphi)%5D-E_q%5Blog%20%5Cspace%20q(%5Ctheta%7C%5Cgamma)-E_q%5Blog%20%5Cspace%20q(z%7C%5Ceta)%5D

    根据变分参数

    math?formula=%5Cgamma%E5%92%8C%5Ceta,模型参数

    math?formula=a%2C%5Cvarphi继续展开,并将展开式的每一项写成一行

    math?formula=%5Cbegin%7Baligned%7D%20L%20(%5Cgamma%2C%5Ceta%2Ca%2C%5Cvarphi)%20%3D%20log%20%5CGamma%20%5Cbigg(%5Csum_%7Bk%3D1%7D%5EK%20a_l%5Cbigg)-%5Csum_%7Bk%3D1%7D%5EK%20log%20%5CGamma(a_k)%20%2B%5Csum_%7Bk%3D1%7D%5EK(a_k-1)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l)%5Cbigg)%5Cbigg%5D%2B%20%5C%5C%20%5Csum_%7Bi%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%2B%20%5C%5C%20%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%5Csum_%7Bv%3D1%7D%5EV%20%5Ceta_%7Bnk%7Dw_n%5Evlog%20%5Cspace%20%5Cvarphi_kv%20-%5C%5C%20log%20%5Cpsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%2B%5Csum_%7Bk%3D1%7D%5EK%20log%20%5CPsi(%5Cgamma_k)-%5Csum_%7Bk%3D1%7D%5EK(%5Cgamma_k-1)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D-%5C%5C%20%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EKn_%7Bnk%7D%20log%20%5Ceta_%7Bnk%7D%20%5Cend%7Baligned%7D

    math?formula=%5CPsi(a_k)是对数伽马函数,即

    math?formula=%5CPsi(a_k)%3D%5Cfrac%7Bd%7D%7Bd_%7Ba_k%7D%7Dlog%5Cspace%20%5CGamma(a_k)

    第一项推导,求

    math?formula=E_q%5Blog%20%5C%2Cp(%5Ctheta%7Ca)%5D,是关于分布

    math?formula=p(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)的数学期望

    math?formula=E_q%5Blog%5C%2C%20p(%5Ctheta%7Ca)%5D%3D%5Csum_%7Bk%3D1%7D%5EK(a_k-1)E_q%5Blog%20%5C%2C%20%5Ctheta_k%5D%2Blog%5C%2C%20%5CGamma%5Cbigg(%5Csum_%7Bl%3D1%7D%5EKa_l%5Cbigg)-%5Csum_%7Bk%3D1%7D%5EKlog%20%5C%2C%5CGamma(a_k)

    其中

    math?formula=%5Ctheta%20%5Csim%20Dir(%5Ctheta%7C%5Cgamma)

    所以

    math?formula=E_%7Bq(%5Ctheta%7C%5Cgamma)%7Dlog%5C%2C%5Ctheta_k%5D%3D%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)

    故得

    math?formula=E_q%5Blog%5C%2Cp(%5Ctheta%7Ca)%3Dlog%5C%2C%5CGamma%5Cbigg(%5Csum_%7Bk%3D1%7D%5EKa_k%5Cbigg)-%5Csum_%7Bk%3D1%7D%5EKlog%5C%2C%5CGamma(a_k)%2B%5Csum_%7Bk%3D1%7D%5EKlog%5C%2C%5CGamma(a_k)%2B%5Csum_%7Bk%3D1%7D%5EK(a_k-)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D

    式中

    math?formula=a_k%2C%5Cgamma_k分别表示第k个话题的狄利克雷分布参数

    第二项推导,求

    math?formula=E_q%5Blog%5C%2Cp(z%7C%5Ctheta)%5D是关于分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)的数学期望

    math?formula=%5Cbegin%7Baligned%7D%20E_q%5Blog%5C%2Cp(z%7C%5Ctheta)%5D%3D%5Csum_%7Bn%3D1%7D%5EN%20E_q%5Blog%5C%2Cp(z_n%7C%5Ctheta)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5ENE_%7Bq(%5Ctheta%2Cz_n%7C%5Cgamma%2C%5Ceta)%7D%5Blog%5C%2C(z_n%7C%5Ctheta)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EKq(z_%7Bnk%7D%7C%5Ceta)E_%7Bq(%5Ctheta%7C%5Cgamma)%7D%5Blog%5C%2C%5Ctheta_k%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%5Ceta_%7Bnk%7D%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%20%5Cend%7Baligned%7D

    式中

    math?formula=%5Ceta_%7Bnk%7D表示文档第n个位置的单词由第k个话题产生的概率,

    math?formula=%5Cgamma_k表示第k个话题的狄利克雷分布参数。

    第三项推导,求

    math?formula=E_q%5Blog%5C%2Cp(w%7Cz%2C%5Cvarphi)%5D是关于分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)的数学期望

    math?formula=%5Cbegin%7Baligned%7D%20E_q%5Blog%5C%2Cp(w%7Cz%2C%5Cvarphi)%5D%3D%5Csum_%7Bn%3D1%7D%5ENE_q%5Blog%5C%2Cp(w_n%7Cz_n%2C%5Cvarphi)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5ENE_%7Bq(z_n%7C%5Ceta)%7D%5Bloh%5C%2Cp(w_n%7Cz_n%2C%5Cvarphi)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EKq(z_%7Bnk%7D%7C%5Ceta)log%5C%2Cp(w_n%7Cz_%7Bnk%7D%2C%5Cvarphi)%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%20%5Csum_%7Bv%3D1%7D%5EV%20%5Ceta_%7Bnk%20%7Dw_n%5Ev%20log%5C%2C%5Cvarphi_%7Bkv%7D%20%5Cend%7Baligned%7D

    式中

    math?formula=%5Ceta_%7Bnk%7D表示文档第n个位置的单词由第k个话题产生的概率,

    math?formula=w_n%5Ev表示在第n个位置的单词是单词集合的第v个单词时取1,否则取0,

    math?formula=%5Cvarphi_%7Bkv%7D表示第k个话题生成单词集合第v个单词的概率

    第四项推导,求

    math?formula=E_q%5Blog%5C%2Cq(%5Ctheta%7C%5Cgamma)%5D,是关于分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)的数学期望。由于

    math?formula=%5Ctheta%20%5Csim%20Dir(%5Cgamma),可以得到

    math?formula=E_q%5Blog%20%5C%2Cq(%5Ctheta%7C%5Cgamma)%5D%3Dlog%5C%2C%5CGamma%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_k%5Cbigg)-%5Csum_%7Bk%3D1%7D%5EKlog%5C%2C%5CGamma(%5Cgamma_k)%2B%5Csum_%7Bk%3D1%7D%5EK(%5Cgamma_k-1)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bk%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D

    式中

    math?formula=%5Cgamma_k表示第k个话题的狄利克雷分布参数

    第五项公式推导,求

    math?formula=E_q%5Blog%5C%2Cq(z%7C%5Ceta)%5D,是关于分布

    math?formula=q(%5Ctheta%2Cz%7C%5Cgamma%2C%5Ceta)的数学期望

    math?formula=%5Cbegin%7Baligned%7D%20E_q%5Blog%5C%2Cq(z%7C%5Ceta)%5D%3D%5Csum_%7Bn%3D1%7D%5EN%5Blog%5C%2Cq(z_n%7C%5Ceta)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%20E_%7Bq(z_n%7C%5Ceta)%7D%5Blog%5C%2Cq(z_n%7C%5Ceta)%5D%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EKvq(z_%7Bnk%7D%7C%5Ceta)log%5C%2Cq(z_%7Bnk%7D%7C%5Ceta)%5C%5C%20%3D%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%5Ceta_%7Bnk%7Dlog%5C%2C%5Ceta_%7Bnk%7D%20%5Cend%7Baligned%7D

    式中

    math?formula=%5Ceta_%7Bnk%7D表示文档第n个位置的单词由第k个话题产生的概率,

    math?formula=%5Cgamma_k表示第k个话题的狄利克雷分布参数

    (2)变分参数

    math?formula=%5Cgamma%E5%92%8C%5Ceta的估计

    首先通过证据下界最优化参数

    math?formula=%5Ceta

    math?formula=%5Ceta_%7Bnk%7D表示第n个位置是由第k个话题生成的概率,

    math?formula=%5Csum_%7Bl%3D1%7D%5EK%5Ceta_%7Bnl%7D%3D1,包含

    math?formula=%5Ceta_%7Bnl%7D的约束条件最优化问题拉格朗日函数为

    math?formula=L_%7B%5B%5Ceta_%7Bnk%7D%5D%7D%3D%5Ceta_%7Bnk%7D%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bk%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%2B%5Ceta_%7Bnk%7Dlog%5C%2C%5Cvarphi_%7Bkv%7D-%5Ceta_%7Bnk%7Dlog%5C%2C%5Ceta_%7Bnk%7D%2B%5Clambda_n%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Ceta_%7Bnl%7D-1%5Cbigg)

    这里

    math?formula=%5Cvarphi_%7Bkv%7D第在第n个位置由第k个话题生成第v个单词的概率

    math?formula=%5Ceta_%7Bkv%7D求偏导数得

    math?formula=%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20%5Ceta_%7Bnk%7D%7D%3D%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%2Blog%5C%2C%5Cvarphi_%7Bkv%7D-log%5C%2C%5Ceta_%7Bnk%7D-1%2B%20%5Clambda_n

    令偏导数为零,得到参数

    math?formula=%5Ceta_%7Bnk%7D的估计值

    math?formula=%5Ceta_%7Bnk%7D%20%5Capprox%20%5Cvarphi_%7Bkv%7Dexp%5Cbigg(%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg)

    接着通过证据最优化估计参数

    math?formula=%5Cgamma

    math?formula=%5Cgamma_k是第k个话题的狄利克雷分布参数

    math?formula=%5Cbegin%7Baligned%7D%20L_%7B%5B%5Cgamma_k%5D%7D%3D%5Csum_%7Bk%3D1%7D%5EK(a_k-1)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%2B%5Csum_%7Bn%3D1%7D%5EN%5Csum_%7Bk%3D1%7D%5EK%5Ceta_%7Bnk%7D%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D-%5C%5C%20%3Dlog%5C%2C%5CGamma%5Cbigg(%5Csum_%7Bk%3D1%7D%5EK%5Cgamma_l%5Cbigg)%2Blog%5C%2C%5CGamma(%5Cgamma_k)-%5Csum_%7Bk%3D1%7D%5EK(%5Cgamma_k-1)%5Cbigg%5B%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%5C%5C%20%3D%5Csum_%7Bk%3D1%7D%5EK%5Cbigg(%5CPsi(%5Cgamma_k)-%5CPsi%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%5Cbigg(a_k%2B%5Csum_%7Bn%3D1%7D%5EN%5Ceta_%7Bnk%7D-%5Cgamma_k%5Cbigg)-log%5C%2C%5CGamma%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%2Blog%5C%2C%5CGamma(%5Cgamma_k)%20%5Cend%7Baligned%7D

    math?formula=%5Cgamma求偏导数得

    math?formula=%5Cfrac%7B%5Cpartial%20L%7D%7B%5Cpartial%20%5Cgamma_k%7D%3D%5Cbigg%5B%5CPsi'(%5Cgamma_k)-%5CPsi'%5Cbigg(%5Csum_%7Bl%3D1%7D%5EK%5Cgamma_l%5Cbigg)%5Cbigg%5D%5Cbigg(a_k%2B%5Csum_%7Bn%3D1%7D%5EN%5Ceta_%7Bnl%7D-%5Cgamma_k%5Cbigg)

    令偏导数为零,解得到参数

    math?formula=%5Cgamma_k的估计值为

    math?formula=%5Cgamma_k%20%3D%20a_k%2B%5Csum_%7Bn%3D1%7D%5EN%5Ceta_%7Bnk%7D

    由此得到坐标上升法算法估计变分参数的方法

    展开全文
  • 潜在狄利克雷分布 介绍 (Intro) Many believe that the main goal of user segmentation and recommendation systems is to predict or better understand what customers want or likely to buy. Sometimes, ...

    潜在狄利克雷分布

    介绍 (Intro)

    Many believe that the main goal of user segmentation and recommendation systems is to predict or better understand what customers want or likely to buy. Sometimes, however, the important question is not what customers are likely to buy, but when are they likely to buy it.

    许多人认为,用户细分和推荐系统的主要目标是预测或更好地了解客户想要或可能购买的东西。 但是,有时重要的问题不是客户可能会购买什么 ,而是客户何时会购买。

    Consider the following examples: (1) An online store wants to send its most dedicated customers a coupon for a product that fits their preferences. However, they also know that customers differ in the time-of-day in which they usually shop —e.g. some prefer to shop early in the morning while others prefer to shop late at night. Thus, they want to know exactly when each customer (or group of customers) is more likely to shop and send the coupon at the appropriate time. (2) A provider of network proxy services needs to efficiently allocate network bandwidth to their users. Ideally, they would like to group users according to their activity hours and allocate them the bandwidth accordingly.

    考虑以下示例:(1)一家在线商店希望向最专注的客户发送适合他们喜好的产品的优惠券。 但是,他们也知道,顾客通常在一天中的不同时段购物-例如,有些人喜欢在清晨购物,而另一些人喜欢在深夜购物。 因此,他们想确切地知道每个客户(或一组客户) 何时更有可能在适当的时间购物并发送优惠券。 (2)网络代理服务的提供者需要有效地为其用户分配网络带宽。 理想情况下,他们希望根据用户的活动时间对其分组,并相应地为其分配带宽。

    These “business problems” already assume that users or customers want a certain product. The question they pose is when are they most likely to buy or use it. In this post, I would like to share a very simple methodology that can add another tool that might help you answer such questions.

    这些“业务问题”已经假定用户或客户想要某种产品。 他们提出的问题是他们何时最有可能购买或使用它。 在本文中,我想分享一个非常简单的方法,可以添加另一个可以帮助您回答此类问题的工具。

    I will assume that you have a simple time series data set in the form of:

    我将假定您具有以下形式的简单时间序列数据集:

    Time ('2020-01-05 10:30')
    Entity (user, product, game)
    Count (views, orders, downloads)

    I will show how LDA enables us to (1) segment users into groups or clusters according to the time in which they are more likely to be “active” in quite an insightful way, and (2) let us predict how significantly each user is associated with each group, based on its data. (The same analysis can be also applied to products and cluster them into groups according to the time in which they are more likely to be purchased, etc).

    我将展示LDA如何使我们(1)以一种很有见地的方式根据用户更可能处于“活动”状态的时间将其划分为组或集群,以及(2)让我们预测每个用户的重要性根据其数据与每个组相关联。 (同样的分析也可以应用于产品,并根据更可能被购买的时间将它们分为几类,等等)。

    In the sections that follow, I will very briefly introduce LDA and the way it operates, and then dive right into the code.

    在以下各节中,我将非常简要地介绍LDA及其操作方式,然后直接深入研究代码。

    潜在狄利克雷分配(LDA)聚类-简短的简介 (Latent Dirichlet Allocation (LDA) Clustering — A (Very) Short Intro)

    LDA is most commonly used for topic modeling in NLP contexts, and that is indeed a good example use case to grasp its value. Topic modeling algorithms usually start with a “corpus” or a group of “documents” that consist of “words”, and try to use the observed mixture of words and the frequency in which they show together in order to find latent patterns or topics within the documents.

    LDA最常用于NLP上下文中的主题建模,这确实是把握其价值的一个很好的示例用例。 主题建模算法通常从一个“语料库”或一组由“单词”组成的“文档”开始,并尝试使用观察到的单词混合以及它们一起显示的频率,以发现其中的潜在模式或主题。文件。

    For example, suppose that I have 3 documents: (1) “My dog ate my lunch”; (2) “I just love eating fruits”; (3) “I am allergic to dogs”. A topic modeling algorithm should be able to identify at least 2 latent topics or themes within this “corpus”: a topic that deals with dogs and a topic that deals with food or eating. Some topic modelling algorithms (such as LDA) would also be able to associate a document with more than one topic and tell us which topic is more dominant in the document. For example, these algorithms would be able to tell us that sentence 1 (“My dog ate my lunch”) is both about dogs and about food or eating, and also that its more about dogs than it is about food.

    例如,假设我有3个文件:(1)“我的狗吃了我的午餐”; (2)“我只是喜欢吃水果”; (3)“我对狗过敏”。 主题建模算法应该能够识别出该“语料库”中的至少两个潜在主题或主题:与狗有关的主题以及与食物或饮食有关的主题。 一些主题建模算法(例如LDA)也可以将一个文档与多个主题相关联,并告诉我们哪个主题在文档中占主导地位。 例如,这些算法将能够告诉我们句子1(“我的狗吃了我的午餐”) 有关,又与食物或饮食有关 ,并且它还与有关,而不是与食物有关。

    那么LDA如何做到这一点? (So how does LDA do this?)

    LDA makes at least 2 important working assumptions :

    LDA至少做出两个重要的工作假设:

    (1) Each topic is a probability distribution of words. Simply put, each topic is associated with certain words that occur in certain probabilities in a document that deals with the topic. One of the main outputs of an LDA model is a term-topic matrix that shows the probability of each word occurring in a certain topic. This matrix allows us to find semantic themes in each topic. For example, if WORD 0 and WORD 1 in the matrix below relate to animals then we can say that TOPIC3 (or its theme) is animals because words that relate to animals are very probable to occur within it.

    (1) 每个主题都是单词的概率分布。 简而言之,每个主题都与处理该主题的文档中以某些概率出现的某些单词相关联。 LDA模型的主要输出之一是术语-主题矩阵,该矩阵显示每个单词在某个主题中出现的概率。 这个矩阵使我们能够找到每个主题中的语义主题。 例如,如果下面矩阵中的WORD 0和WORD 1与动物有关,那么我们可以说TOPIC3(或其主题)是动物,因为与动物有关的词很可能在其中出现。

    Image for post
    term-topic Matrix (or feature-cluster matrix)
    术语-主题矩阵(或要素集群矩阵)

    (2) Each document has a “topic recipe” or a probability distribution of topics. This means, for example, that running sentence 1 (“My dog ate my lunch”) through the model will tell us that the document is 80% about food and eating and 20% about dogs, based on the words it contains.

    (2) 每个文档都有一个“主题配方”或主题的概率分布。 例如,这意味着通过模型运行的句子1(“我的狗吃了我的午餐”)将告诉我们,根据包含的单词,该文档占食物和饮食的80%,涉及狗的20%。

    Topic Recipe sentence | topic-1 | topic-2 | topic-3 |s1 ____| 80% _____| 20% ____| 0% ____ | s2 ____| 50% _____| 30% ____| 20% ____ |s3 ____| 10% _____| 20% ____| 70% ____ |

    主题食谱 sentence | topic-1 | topic-2 | topic-3 |s1 ____| 80% _____| 20% ____| 0% ____ | s2 ____| 50% _____| 30% ____| 20% ____ |s3 ____| 10% _____| 20% ____| 70% ____ | sentence | topic-1 | topic-2 | topic-3 |s1 ____| 80% _____| 20% ____| 0% ____ | s2 ____| 50% _____| 30% ____| 20% ____ |s3 ____| 10% _____| 20% ____| 70% ____ |

    When we fit LDA on a certain corpus or group of documents, then it essentially learns which probability distribution of words per topic can best explain (or generate) the distribution of words in each document in our corpus. More accurately, a trained LDA model can reproduce the corpus it was trained on (or at least something semantically similar to it), given the topic recipe. And, more importantly, a trained or fitted LDA model can predict the “topic recipe” of documents unseen by the model when it was trained.

    当我们将LDA拟合到某个语料库或文档组时,它实质上会了解每个主题的单词概率分布可以最好地解释(或生成)我们语料库中每个文档中单词的分布。 更准确地说,在给定主题配方的情况下,受过训练的LDA模型可以复制受过训练的语料库(或至少在语义上与之类似的东西)。 而且,更重要的是,经过训练或拟合的LDA模型可以预测模型在训练时看不到的文档的“主题配方”。

    Image for post
    Photo by Ugur Akdemir on Unsplash
    Ugur AkdemirUnsplash拍摄的照片

    时间序列数据呢? (What about time-series data?)

    A trained LDA model allows us to estimate the “topic recipe” of any vectorized document . In the context of NLP, where “documents” are chunks of text or BOW vectors of words, the document’s topic recipe can help us figure out what are the dominant themes of the document or which theme is more dominant than others.

    训练有素的LDA模型使我们能够估计任何矢量化文档的“主题配方”。 在NLP中,“文档”是文本的大块或BOW的矢量,文档的主题配方可以帮助我们弄清文档的主要主题是什么,或者哪个主题比其他主题更重要。

    However, at the end of the day, LDA is a clustering algorithm —that is, it estimates a set of vectors with N features and finds latent patterns in the values assigned to these features in each vector. In other words, if we think about topics as clusters and about a topic recipe of a document as a cluster recipe of a vector, telling us how strongly the vector is “associated” with each of the clusters, then its obvious that we can make LDA work for many business problems outside the context of NLP.

    但是,归根结底,LDA是一种聚类算法-也就是说,它估计一组具有N个特征的向量,并在分配给每个向量中这些特征的值中找到潜在的模式。 换句话说,如果我们将主题视为群集,而将文档的主题配方视为矢量的群集配方 ,则告诉我们矢量与每个群集“关联”的强度,那么很明显,我们可以LDA解决了NLP之外的许多业务问题。

    This may still seem not entirely related to the domain of time-series analysis, so let me just jump right into an example that I’ll be using throughout this post which will illustrate this more clearly.

    这似乎仍然与时间序列分析的领域并不完全相关,所以让我直接跳到一个示例中,我将在本文中通篇使用该示例,以更清楚地说明这一点。

    示例:用户和电视节目 (An Example: Users and TV Shows)

    Suppose that you have a dataset of ‘customers’ which records the number of TV shows that have been watched by each customer each hour over a period of 24 hours. Each vector in our dataset thus looks something like this:

    假设您有一个“客户”数据集,该数据集记录了24小时内每个客户每小时收看的电视节目数量。 因此,我们数据集中的每个向量看起来都是这样的:

    [customer, # of shows watched on 1AM, # of shows watched on 2AM….]

    [customer, # of shows watched on 1AM, # of shows watched on 2AM….]

    Our task is to find an efficient way to predict when is the best time to offer a given customer the option to watch a new TV show. Obviously, there is more than one way to approach this. The approach that I will take here is to try and segment customers into groups according to their TV-watching hours and predict the best time to offer a customer a new TV show according to the preferences or activity of the group they are most dominantly associated with.

    我们的任务是找到一种有效的方法来预测何时才是给定客户观看新电视节目的最佳时间。 显然,有多种方法可以解决此问题。 我将在这里采用的方法是尝试根据客户的电视观看时间将其划分为不同的组,并根据与他们最相关的组的偏好或活动来预测向客户提供新电视节目的最佳时间。

    How can LDA help us out here? If we treat each hour of day as a feature with a value equals to the number of TV shows watched by the customer, on average, then estimating LDA on this data will enable us to segment our customers to groups according to their TV show watching hours.

    LDA如何在这里帮助我们? 如果我们将每天的每个小时视为一项功能,其价值平均等于客户观看的电视节目的数量,则根据此数据估算LDA可以使我们根据客户的电视节目观看时间将其划分为不同的组。

    Image for post
    Customers vs. Hours (value = # of TV shows)
    客户数与小时数(值=电视节目的数量)

    More importantly, we will be able to produce a feature-cluster matrix (or hour-group matrix) that will tell us which hour is more significant in which cluster (and how more significant it is), in addition to providing us a cluster recipe for each customer that will tell us how strongly the customer is “associated” with each of the groups. Note that while this task can be also accomplished using others clustering algorithm (such as KMeans), the ability to easily produce a feature-cluster matrix that can quantify the significance of the association of each feature to a cluster is a stark advantage of using LDA (though there are more, but this discussion is beyond my scope here).

    更重要的是,除了向我们提供群集配方之外,我们还将能够生成一个功能群集矩阵(或小时组矩阵),该矩阵将告诉我们哪个小时在哪个群集中更重要(以及它的有效程度如何)。对于每位客户,这将告诉我们客户与每个组之间“联系”的紧密程度。 请注意,尽管也可以使用其他聚类算法(例如KMeans)来完成此任务,但是轻松生成可以量化每个特征与聚类关联的重要性的特征-聚类矩阵的能力是使用LDA的明显优势。 (尽管还有更多,但是这里的讨论超出了我的讨论范围)。

    让我们编码 (Let’s Code)

    We start with this data set:

    我们从以下数据集开始:

    Image for post
    Image for post

    The first thing we ought to do is to transform the data to the time series format we want to work with.

    我们应该做的第一件事是将数据转换为我们要使用的时间序列格式。

    1. We fix the time column on our DataFrame

      我们将时间列固定在DataFrame上
    df_raw['ts'] = pd.to_datetime(df_raw['ts'])

    2. We transpose it using the pivot_table method in order to get a row for each customer with every hour (or time bin) as a feature/column

    2.我们使用pivot_table方法对其进行转置,以便为每个客户提供一行,其中每个小时(或每个时间段)作为功能/列

    df_pivot = pd.pivot_table(
    df_raw,
    index='customerid',
    columns='ts',
    values='shows',
    fill_value=0)
    Image for post

    3. Finally, we use Panda’s GroupBy to get the mean for each hour

    3.最后,我们使用熊猫的GroupBy来获取每个小时的平均值

    df_avg = df_pivot.T.groupby(df_pivot.T.index.hour).mean().T

    Now, we have our data in the right format

    现在,我们的数据格式正确

    Image for post

    When we look on the mean views per hour of our entire dataset we indeed see a somewhat expected curve in which more TV shows are viewed during the prime day hours and less during late night hours. However, as we shall shortly see, using this data as an indicator for when is the best time to offer a new TV show overlooks many customers with preferences that diverge from the mean.

    当我们查看整个数据集的每小时平均观看次数时,我们确实看到了某种预期的曲线,在黄金时段,观看更多电视节目而在深夜时段观看的节目更少。 但是,正如我们将很快看到的那样,使用这些数据作为何时提供新电视节目的最佳时机的指标却忽视了许多偏好与平均值不同的客户。

    Image for post
    Mean TV shows watched per hour
    每小时观看的电视节目平均值

    The simple magic happens in these 3 lines of code

    简单的魔术发生在这三行代码中

    from sklearn.decomposition import LatentDirichletAllocation as LDAlda = LDA(n_components=3, learning_method='batch')lda = lda.fit(df_avg)

    We assume that our customers’ viewing preferences can be divided into 3 groups, and fit() the LDA object on our data. And, that’s it. All we need to do now is extract the latent insights in our data.

    我们假设客户的观看偏好可以分为3组,并在数据上拟合 LDA对象。 就是这样。 现在我们需要做的就是从数据中提取潜在的见解。

    提取见解 (Extracting Insights)

    The first and most important insight that LDA produces is a term-topic matrix, or an hour-cluster matrix, that will tell us which viewing hours are more dominant with each cluster. This matrix is usually helpful as a sanity check, to examine whether the clustering makes sense or whether further adjustments are needed.

    LDA产生的第一个也是最重要的见解是术语主题矩阵或小时群集矩阵,它将告诉我们每个群集哪个观看时间更占优势。 该矩阵通常有助于进行完整性检查,以检查聚类是否有意义或是否需要进一步调整。

    *Note that the first line will produce this matrix but it is more readable when normalized, which is what the lines that follow do.

    *请注意,第一行将产生此矩阵,但是在进行规范化时,它更易读,这就是随后的行所做的事情。

    #Create the hour-cluster / term-topic matrix
    df_comp = pd.DataFrame(lda.components_.T, index=df_avg.columns)#Normalize it norm_components = \
    lda.components_ / lda.components_.sum(axis=1).reshape(-1, 1)df_comp_norm = pd.DataFrame(norm_components.T, index=df_avg.columns)df_comp_norm * 100
    Image for post

    And here is a more refined version:

    这是一个更完善的版本:

    Image for post

    We can clearly notice groups with preferences that “make sense”. For example, we can say that cluster 0 describes customers that mostly watch TV shows during the night / late evening hours — there is a chance of 40% (20% + 20%) that the time they will watch a TV show each day is between 8PM and midnight. We also see a group that seems to consist of “daily” watchers (cluster 1) who watches the most during prime day hours 8AM — 4PM.

    我们可以清楚地注意到具有“有意义”偏好的组。 例如,我们可以说聚类0描述的客户主要是在晚上/深夜时段观看电视节目-每天观看电视节目的时间有40%(20%+ 20%)的机会是在8PM和午夜之间。 我们还看到了一个似乎由“每日”观看者(第1组 )组成的小组,他们在黄金时段8AM-4PM观看次数最多。

    I will shortly return to this, but once the hours probability distribution within our clusters makes sense, we can use the transform() method which will produce the vector-cluster (or customer-cluster) matrix that will show the extent to which each customer is associated with each of the clusters.

    我将很快回到这一点,但是一旦集群中的小时概率分布有意义,我们就可以使用transform()方法生成矢量集群(或客户集群)矩阵,该矩阵将显示每个客户的程度与每个集群相关联。

    Image for post

    We saw earlier that the prime hours associated with Cluster 0 group are evening-night hours, whereas the prime hours associated with Cluster 1 group are noon-afternoon hours. Accordingly, we can say that the first customer ([0.79, 0.14, 0.06]) mostly watches TV shows on evening-night hours, whereas the second ([0.36, 0.62. 0.01]) mostly watches TV shows during the day. If we could pick just one time frame to present new shows to our customers, we would probably pick the evening/night hours because although the second customer mostly watches their TV during the day, there is still a 36% chance that they will watch a late night show.

    我们早些时候看到,与群集0组相关的黄金时间是傍晚时间,而与群集1 g组相关的黄金时间是午后时间。 因此,我们可以说第一个客户([0.79,0.14,0.06])大部分在傍晚观看电视节目,而第二个客户([0.36,0.62。0.01])大部分在白天观看电视节目。 如果我们只选择一个时间范围向客户展示新节目,我们可能会选择晚上/晚上的时间,因为尽管第二个客户大部分时间在白天看电视,但他们仍然有36%的机会看电视。深夜节目。

    We can illustrate this by assigning each customer to its most dominant cluster and then plotting the mean for each cluster.

    我们可以通过将每个客户分配到其最主要的群集,然后绘制每个群集的均值来说明这一点。

    Image for post
    mean value per feature
    每个特征的平均值

    We can also use this to evaluate the size of each group. That will show us, for example, that the group that is associated with somewhat abnormal activity hours (cluster 2) is some kind of outlier that needs to be further explored (e.g. perhaps it is related to users from a different time zone?)

    我们还可以使用它来评估每个组的大小。 例如,这将向我们显示与异常活动时间相关的组(组2)是某种离群值,需要进一步探索(例如,它是否与来自不同时区的用户有关?)

    Image for post

    At the beginning of the post, I mentioned 2 main questions that we need to answer, or 2 main insights that we want LDA to help us with: (1) We want to know the prime hours for each group (the hours in which they watch the most) in order to present the members of each group the option to watch a new TV show when they are more likely to watch it. (2) Given a customer’s TV watching activity, we want to know how strongly the customer is associated with which group.

    在文章的开头,我提到了我们需要回答的两个主要问题,或者我们希望LDA帮助我们解决的两个主要见解:(1)我们想知道每个小组的主要工作时间(他们的工作时间)观看次数最多),以便向每个组的成员展示在他们更有可能观看新电视节目时可以观看的选项。 (2)考虑到某个客户的电视观看活动,我们想知道该客户与哪个组的关联程度。

    One approach we can use to achieve the first task rather simply, is by selecting the mean watching time for each group or cluster, and then find the hours whose values exceed the mean. As the example below shows, the prime hours for the first group (the night watchers) is 4PM to midnight.

    我们可以用来简单地完成第一个任务的一种方法是,选择每个组或群集的平均观看时间,然后找到其值超过平均值的小时数。 如下例所示,第一组(守夜人)的黄金时间是下午4点至午夜。

    Image for post

    As for the second task (find the best hours to present a TV show to a particular customer), all we have to do is call the transform() method using the watching hours vectors of the customer we want to predict.

    至于第二项任务(找到向特定客户展示电视节目的最佳时间),我们要做的就是使用我们要预测的客户的观看时间矢量来调用transform()方法。

    Image for post
    customer 120
    客户120

    Our model tells us that customer 120 mostly likes to watch their TV during the night, though they also spend some time watching TV during normal day hours. In other words, although they watch more TV at night time, it might also be worthwhile to offer them a new TV show to watch during the day.We can actually confirm this by examining their actual watching hours.

    我们的模型告诉我们,客户120最喜欢在晚上看电视,尽管他们在正常的白天也花一些时间看电视。 换句话说,尽管他们在晚上看更多的电视节目,但也有可能值得在白天为他们提供新的电视节目。我们可以通过检查他们的实际观看时间来确认这一点。

    df_avg.iloc[customerid,:-1].plot.bar()
    Image for post
    customer 120
    客户120

    Indeed, we can see that the best time to show customer 120 a new TV show is between 10PM and 2AM though they do spend a decent time watching TV during the day.

    确实,我们可以看到,向客户120展示新电视节目的最佳时间是在晚上10点至凌晨2点之间,尽管他们白天确实花了大量的时间看电视。

    摘要 (Summary)

    To sum, we have quite a few tools to cluster users based on their time-series activity data. I have tried to show a rather simple approach that can certainly expand your toolset when analyzing such problems and easily produce valuable insights.

    总而言之,我们有很多工具可以根据用户的时间序列活动数据对其进行聚类。 我试图展示一种相当简单的方法,当分析此类问题时,可以肯定地扩展您的工具集并轻松产生有价值的见解。

    Hope this was helpful!

    希望这对您有所帮助!

    You can find the full notebook here

    您可以在这里找到完整的笔记本

    Some nice links about LDA:

    有关LDA的一些不错的链接:

    翻译自: https://towardsdatascience.com/create-a-recommendation-system-based-on-time-series-data-using-latent-dirichlet-allocation-2aa141b99e19

    潜在狄利克雷分布

    展开全文
  • 多项分布: 假设重复进行 次独立随机试验,每次实验可能出现的结果有 种,第种结果出现的次数为,第种 结果出现的概率为。如果用随机变量 表示实验所有可能出现结果的次数,其中表示第种结果出现的次数,那么随机...

    我们先理解下多项分布、狄利克雷分布、共轭先验的知识,再讲LDA的基本思想,最后简单说一下LDA和PLSA之间的区别。关于LDA的学习过程,比较复杂,就不讲了。

    多项分布:

    假设重复进行 n 次独立随机试验,每次实验可能出现的结果有 k 种,第 i 种结果出现的次数为 n_{i},第 i 种 结果出现的概率为 p_{i} 。如果用随机变量 X=(X_{1},X_{2},\cdots ,X_{k})  表示实验所有可能出现结果的次数,其中 X_{i} 表示第 i 种结果出现的次数,那么随机变量 X 服从多项分布。具体的数学定义如下:

    多元离散随机变量 X=(X_{1},X_{2},\cdots ,X_{k}) 的概率质量函数为 :

    P(X_{1}=n_{1},X_{2}=n_{2},\cdots ,X_{k}=n_{k})=\frac{n!}{n_{1}!n_{2}!\cdots n_{k}!} p_{1}^{n_{1}}p_{2}^{n_{2}}\cdots p_{k}^{n_{k}}

    其中p=(p_{1},p_{2},\cdots ,p_{k}) , p_{i}>=0,i=1,2,\cdots ,k\sum_{i=1}^{k}p_{i}=1\sum_{i=1}^{k}n_{i}=n

    则称随机变量 X 服从参数为 (n,p) 的多项分布,计做X\sim Mult(n,p)

    多项分布有两个特例,一个是二项分布,一个是类别分布。

    二项分布

    二项分布:当实验可能出现的结果种数 k 为 2 时,多项分布变成二项分布。

    二项分布的数学定义如下:

    X 为离散随机变量,取值为 m ,其概率质量函数为:

    P(X=m)=\frac{n!}{m!(n-m)!}p^{m}(1-p)^{n-m} , m=0,1,2,\cdots n

    其中 n 和 p 是参数。

    n 为 1 时,二项分布变成伯努利分布或 0-1 分布。

    类别分布

    类别分布:当实验的次数 n 为1 时,多项分布变成类别分布。

    当 k 为 2 时,类别分布变成伯努利分布或 0-1 分布。

    狄利克雷分布

    狄利克雷分布是一种多元连续随机变量的概率分布。在贝叶斯学习中,狄利克雷分布常作为多项分布的先验分布使用。狄利克雷分布的数学定义如下:

    若多元连续随机变量 \theta =(\theta _{1},\theta _{2},\cdots ,\theta _{k}) 的概率密度函数为:

    p(\theta |\alpha )=\frac{\Gamma (\sum_{i=1}^{k}\alpha _{i})}{\prod_{i=1}^{k}\Gamma (\alpha _{i})}\prod_{i=1}^{k}\theta _{i}^{\alpha _{i}-1}

    其中 \sum_{i=1}^{k}\theta _{i}=1,\theta _{i}>=0\alpha =(\alpha _{1},\alpha _{2},\cdots ,\alpha _{k}),\alpha _{i}>0,i=1,2,\cdots ,k

    则称随机变量 \theta 服从参数为 \alpha 的狄利克雷分布分布,记做 \theta \sim Dir(\alpha ) 。

    式中 \Gamma (s) 是伽马函数,定义为:

    \Gamma (s)=\int_{0}^{\infty }x^{s-1}e^{-x}dx ,s>0

    具有性质:

    \Gamma (s+1)=s\Gamma (s)

    当 s 是自然数时,有

    \Gamma (s+1)=s!

    贝塔分布

    当狄利克雷分布中的 k 为2 时,是贝塔分布。

    贝塔分布是指如下概率分布,X 为连续随机变量,取值范围为 [0,1] ,其概率密度函数为:

    p(x)=\left\{\begin{matrix} \frac{1}{B(s,t)}x^{s-1}(1-x)^{t-1} , 0\leq x\leq 1 \\ 0, other \end{matrix}\right.

    其中 s>0 和 t>0 是参数,B(s,t)=\frac{\Gamma (s)\Gamma (t)}{\Gamma (s+t)} 是贝塔函数,定义为:

    B(s,t)=\int_{0}^{1}x^{s-1}(1-x)^{t-1}dx

    当 s , t 是自然数时:

    B(s,t)=\frac{(s-1)!(t-1)!}{(s+t-1)!}

    共轭先验

    贝叶斯学习中常使用共轭分布,如果后验分布与先验分布属于同类,则先验分布与后验分布称为共轭分布,先验分布称为共轭先验。如果多项分布的先验分布是狄利克雷分布,则其后验分布也为狄利克雷分布,两者构成共轭分布。狄利克雷分布是多项分布的共轭先验。作为先验分布的狄利克雷分布的参数又称为超参数。使用共轭分布的好处是便于从先验分布计算后验分布。

    设 W= \{ w_{1},w_{2},\cdots ,w_{k} \} 是由 k 个元素组成的集合。随机变量 X 服从 W 上的多项分布,X\sim Mult(n,\theta ) ,其中 n=\{ n_{1},n_{2},\cdots ,n_{k} \} 和 \theta =\{ \theta _{1},\theta _{2},\cdots ,\theta _{k} \} 是参数。参数 n 为从 W 中重复独立抽取样本的次数,n_{i} 为样本中 w_{i} 出现的次数(i=1,2,\cdots ,k);参数 \theta _{i} 为 w_{i} 出现的概率(i=1,2,\cdots ,k)。

    将样本数据表示为 D ,目标是计算在样本数据 D 给定条件下参数 \theta 的后验概率 p(\theta |D) 。

    对于给定的样本数据 D,似然函数是:

    p(D|\theta )=\theta _{1}^{n_{1}}\theta _{2}^{n_{2}}\cdots \theta _{k}^{n_{k}}=\prod_{i=1}^{k}\theta _{i}^{n_{i}}

    假设随机变量 \theta 服从狄利克雷分布 

    p(\theta |\alpha )=\frac{\Gamma (\sum_{i=1}^{k}\alpha _{i})}{\prod_{i=1}^{k}\Gamma (\alpha _{i})}\prod_{i=1}^{k}\theta _{i}^{\alpha _{i}-1}=\frac{1}{B(\alpha )}\prod_{i=1}^{k}\theta _{i}^{\alpha _{i}-1}=Dir(\theta |\alpha )\alpha _{i}>0

    那么根据贝叶斯规则,在给定样本数据 D 和参数 \alpha 条件下,\theta 的后验概率分布是:

    p(\theta |D,\alpha )=\frac{p(D|\theta )p(\theta |\alpha )}{p(D|\alpha )} \\ \\ \\ =\frac{\prod_{i=1}^{k}(\theta _{i}^{n_{i}} \frac{1}{B(\alpha )}\theta _{i}^{\alpha _{i}-1})}{\int \prod_{i=1}^{k}(\theta _{i}^{n_{i}} \frac{1}{B(\alpha )}\theta _{i}^{\alpha _{i}-1})d\theta } \\ \\ \\ =\frac{1}{B(\alpha +n)}\prod_{i=1}^{k}\theta _{i}^{\alpha _{i}+n_{i}-1} \\ \\ \\ =Dir(\theta |\alpha +n)

    可以看出,先验分布 p(\theta |\alpha ) 和后验分布 p(\theta |D,\alpha ) 都是狄利克雷分布,两者有不同的参数,所以狄利克雷分布是多项分布的共轭先验。狄利克雷后验分布的参数等于狄利克雷先验分布参数 \alpha =(\alpha _{1},\alpha _{2},\cdots ,\alpha _{k}) 加上多项分布的观测计数 n=(n_{1},n_{2},\cdots ,n_{k}) 。就好像在实验之前,我们心里有一个预估的计数 \alpha =(\alpha _{1},\alpha _{2},\cdots ,\alpha _{k}) , 因此也把 \alpha 叫做先验伪计数。

    LDA

    LDA基本思想

    LDA是生成模型,模型假设话题由单词的多项分布表示,文本由话题的多项分布表示,单词的多项分布和话题的多项分布的先验分布都是狄利克雷分布。文本内容的不同是由于它们的话题多项分布不同。(严格意义来说,这里的多项分布都是类别分布,因为包含很多条文本的语料是一次性展现在我们眼前的,所以这些数据没有重复独立随机试验的基础假设。)

    模型定义

    1、模型要素

    LDA使用三个集合,单词集合、文本集合和话题集合。

    单词集合:W=\{ w_{1},\cdots ,w_{v},\cdots ,w_{V}\} ,其中 w_{v} 是第 v 个单词,v=1,2,\cdots ,VV 是单词的个数。

    文本集合:D=\{ \mathrm{\mathbf{w}}_{1},\cdots ,\mathrm{\mathbf{w}}_{m},\cdots ,\mathrm{\mathbf{w}}_{M}\} ,其中\mathrm{\mathbf{w}}_{m}是第 m 个文本,m=1,2,\cdots ,MM是文本数量。文本 \mathrm{\mathbf{w}}_{m} 是一个单词序列\mathrm{\mathbf{w}}_{m}=(w_{m1},\cdots ,w_{mn},\cdots ,w_{mN_{m}}) ,其中 w_{mn} 是文本 \mathrm{\mathbf{w}}_{m} 的第 n 个单词,n = 1,2,\cdots ,N_{m}N_{m} 是文本 \mathrm{\mathbf{w}}_{m} 中单词的个数。

    话题集合:Z=\{z_{1},\cdots ,z_{k},\cdots ,z_{K}\} ,其中 z_{k} 是第 k 个话题,k=1,2,\cdots ,K ,K 是话题个数。

              每一个话题 z_{k} 由一个单词的条件概率分布 p(w|z_{k}) 决定,w\in W 。分布 p(w|z_{k}) 服从多项分布(严格意义上是类别分布),其参数为 \varphi _{k} ,参数 \varphi _{k} 服从狄利克雷分布(先验分布),其超参数为 \beta 。参数 \varphi _{k} 是一个 V 维的向量 \varphi _{k}=(\varphi _{k1},\varphi _{k2},\cdots ,\varphi _{kV}),其中 \varphi _{kv} 表示话题 z_{k} 生成单词 w_{v} 的概率。所有话题的参数向量构成一个 K\times V 的矩阵 \boldsymbol{\varphi }=\{\varphi _{k}\}_{k=1}^{K} 。超参数 \beta 也是一个  V 维的向量 \beta =(\beta _{1},\beta _{2},\cdots ,\beta _{V}) 。

              每一个文本 \mathrm{\mathbf{w}}_{m} 由一个话题的条件概率分布 p(z|\mathrm{\mathbf{w}}_{m}) 决定,z\in Z 。分布 p(z|\mathrm{\mathbf{w}}_{m})服从多项分布(严格意义上类别分布),其参数为 \theta _{m} ,参数 \theta _{m} 服从狄利克雷分布(先验分布),其超参数为 \alpha 。参数 \theta _{m} 是一个 K 维向量 \theta _{m}=(\theta _{m1},\theta _{m2},\cdots ,\theta _{mK}),其中 \theta _{mk} 表示文本 \mathrm{\mathbf{w}}_{m} 生成话题 z_{k} 的概率。所有文本的参数向量构成一个 M\times K 的矩阵\boldsymbol{\theta} =\{\theta _{m}\}_{m=1}^{M} 。超参数 \alpha 也是一个 K 维的向量\alpha =(\alpha _{1},\alpha _{2},\cdots ,\alpha _{K})

    2、生成过程

    LDA文本集合的生成过程如下:

    给定单词集合 W ,文本集合 D ,话题集合 Z ,狄利克雷分布的超参数 \alpha 和 \beta

    (1)生成话题的单词分布

    随机生成 K 个话题的单词分布。每个分布的生成具体过程如下:按照狄利克雷分布 Dir(\beta ) 随机生成一个参数向量 \varphi _{k} ,\varphi _{k}\sim Dir(\beta ) ,作为话题 z_{k} 的单词分布 p(w|z_{k})w\in Wk=1,2,\cdots ,K

    (2)生成文本的话题分布

    随机生成 M 个文本的话题分布。每个分布的生成具体过程如下:按照狄利克雷分布 Dir(\alpha ) 随机生成一个参数向量 \theta _{m} ,\theta _{m}\sim Dir(\alpha ) ,作为文本 \mathrm{\mathbf{w}}_{m} 的话题分布 p(z|\mathrm{\mathbf{w}}_{m})z\in Zm=1,2,\cdots ,M

    (3)生成文本的单词序列

    随机生成  M 个文本的 N_{m} 个单词。文本 \mathrm{\mathbf{w}}_{m} (m=1,2,\cdots ,M)的单词 w_{mn} (n = 1,2,\cdots ,N_{m})的生成过程如下:

    (3-1)首先按照(2)生成的多项分布 Mult(\theta _{m}) 随机生成一个话题 z_{mn} ,z_{mn}\sim Mult(\theta _{m})

    (3-2)然后按照(1)生成的多项分布 Mult(\varphi _{z_{mn}}) 随机生成一个单词 w_{mn} ,w_{mn}\sim Mult(\varphi _{z_{mn}})

    3、模型学习

    模型学习比较复杂,以后整理好了再推导下吧~

    LDA和PLSA

    LDA是PLSA的扩展,相同点是PLSA 和 LDA 都引入了隐变量,两者都假设话题是单词的多项分布,文本是话题的多项分布。不同点是LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布。LDA的优点是使用先验概率分布,可以防止学习过程中产生的过拟合。

    展开全文
  • LDA(潜在狄利克雷分布)的C代码实现,编译无错误,包含提出者的代码
  • public sealed class DirichletDistribution : MultivariateContinuousDistribution { private Vector alpha; private double sum = double.NaN; private double scale; ... private Vector mean;...
  • 潜在狄利克雷分配(LDA)主题模型的EM和变异推理算法的比较
  • 其中π指的是参数的概率分布,π(θ)π(θ)指的是先验概率,π(θ|x)指的是后验概率,f(x|θ)指的是我们观测到的样本的分布,也就是似然函数(likelihood),记住竖线|左边的才是我们需要的。其中积分求的区间Θ指的是...
  • LDA 是基于贝叶斯学习的话题模型,是文本集合的生成概率模型,其中假设文本的话题分布式的先验分布是狄利克雷分布,话题的单词分布的先验分布也是狄利克雷分布。 LDA模型是含有隐变量的概率图模型。本章节使用吉布斯...
  • 潜在狄利克雷分配(latnet Dirichlet allocation, LDA)模型是文本集合的生成概率模型。假设每个文本由话题的一个多项分布表示,每个话题由单词的一个多项分布表示,特别假设文本的话题分布的先验分布是狄利克雷分布...
  • 潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)

    千次阅读 多人点赞 2020-05-06 00:41:47
    潜在狄利克雷分配(latent Dirichlet allocation,LDA),作为基于贝叶斯学习的话题模型,是潜在语义分析、概率潜在语义分析的扩展,于2002年由Blei等提出。LDA在文本数据挖掘、图像处理、生物信息处理等领域被广泛...
  • LDA1、主题模型LDA简介2、基础知识2.1贝叶公式2.2 Gamma函数2.3 四个分布2.3.1 二项分布2.3.2 多项分布2.3.3...隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),首先由Blei, David M.、吴恩达和Jordan, Michael
  • 吉布斯采样matlab代码潜在狄利克雷分配运动 LDA模型。 两个简短的matlab代码,它们实现了多项混合bmm.m和LDA lda.m的Gibbs采样的主要成分。
  • LDA应用场景 可以做文本内容提取,比如提取“穆斯林的葬礼”的...在贝叶斯概率理论中,如果后验概率p(θ│x) 和先验概率p(θ) 满足同样的分布律,那么先验分布和后验分布被叫做共轭分布,同时先验分布p(θ)叫做似然函
  • # 一、案例-基于潜在狄利克雷分配(LDA)的内容主题挖掘 # 说明 # - Python版本:64位 3.7 # - 依赖库:tarfile、os、jieba、gensim、bs4 # - 程序输入:article.txt、news_data.tar.gz # - 程序输出:打印输出18...
  • LDA是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。[1] 这里,先附上原论文中LDA的图模型表示。[2] NOTE:上图中的方框(platenotation)用来表示图模型重复的变量。外层的框表示文档...
  • 干货 | 一文详解隐含狄利克雷分布(LDA)

    万次阅读 多人点赞 2018-07-08 13:20:41
    作者 | 玉龍一、简介隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA)是由 David M. Blei、Andrew Y. Ng、M...
  • 在PLSA模型中,doc-topic分布和topic-word分布(也就是在主题模型(二)概率潜在语义分析(PLSA或PLSI)中求解的p(zk∣di)和p(wj∣zk)p(z_k|d_i)和p(w_j|z_k)p(zk​∣di​)和p(wj​∣zk​))一旦被求解,就
  • 主题模型TopicModel:隐含狄利克雷分布LDA

    万次阅读 多人点赞 2015-01-12 21:07:07
    http://blog.csdn.net/pipisorry/article/details/42649657主题模型LDA简介隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。...
  • 迷你达 minilda 是基于 Gibbs 采样的潜在狄利克雷分配 (LDA) 的简单实现 。
  • matlab代码lda
  • 【课程简介】 本课程适合所有需要学习机器学习技术的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。 本章为该课程的其中一个章节,如有需要可下载全部课程 ... 【全部课程列表】 ...第17章 潜在语义
  • lda隐含狄利克雷分布Most listed US companies host earnings calls every quarter. These are conference calls where management discusses financial performance and company updates with analysts, investors ...
  • 基于主题分布的信号预测 基于信号的图像预测 为此,此处包含的代码由两个主要功能部分组成。 第一个是主题模型的推导,给定一组包含一些词汇表的文档,将尝试在词汇表上生成主题分布。 以这种方式,可以根据其词汇...
  • Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)在贝叶斯模型中具有广泛的作用,然而新手对现有的很多材料理解起来...
  • 一种改进的潜在狄利克雷潜在服务主题检测方法
  • 统计学习方法-潜在狄利克雷分配(LDA)-读书笔记1、前言2、狄利克雷分布3、潜在迪利克雷分配模型3.1LDA和PLSA3.2生成过程 1、前言 LDA是文本集合的生成概率模型。假设每个文本由话题的一个多项分布表示,每个话题由...
  • 潜在狄利克雷分配(Lejeune Dirichlet allocation,LDA)模型为基础,研究中医诊疗中的多关系主题模型,提出一个症状-中药-治疗-诊断方法(symptom-herb-therapies-diagnosis topic,SHTDT)模型,用于提取中医临床...
  • 潜在狄利克雷分配(LDA)模型的出现是为了改进PLSA和LSA混合模型的方法,该混合模型既能捕捉词的可交换性,又能捕捉文档的可交换性。 这是在1990年发生的,所以经典的表示定理规定,任何可交换随机变量的集合,都有一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,091
精华内容 436
关键字:

潜在狄利克雷分布

友情链接: psort-in-matlab.zip