LDA(Latent Dirichlet Allocation)简介

一、简介

    LDA(隐狄利克雷分布)是一种无监督学习的主题概率生成模型,输入是文档集合和主题个数,输出是以概率分布的形式呈现的主题,常用于主题建模、文本分类、观点挖掘等多个领域。
    它假定了一个前提:文档相当于一个词袋(bag-of-words),袋子中的词是独立可交换的,没有语法结构和顺序。
    其基本思想是:每个文档(Document)由多个主题(Topic)构成,每个主题都有对应的多个词(Word)来描述。


二、LDA模型介绍

1. 模型描述

    LDA的核心是贝叶斯网络(左图是贝叶斯网络,右边是参数说明):
            LDA(Latent Dirichlet Allocation)简介_第1张图片         LDA(Latent Dirichlet Allocation)简介_第2张图片
                   图一   LDA的贝叶斯网络                                 图二  参数说明

    
    在贝叶斯网络中,左边的矩形表示每个主题对应的单词概率分布;右边的外矩形表示有M个文档,内矩形表示每个文档中的所有单词。
    贝叶斯网络模拟文档的生成过程,为了方便理解,结合伪代码来解释生成过程(先看伪代码的注释;其中各种概率分布先忽略,后面再解释)

LDA(Latent Dirichlet Allocation)简介_第3张图片

2. 概率分布介绍

2.1 主题分布

    贝叶斯网络的两个结点之间的箭头表示概率分布。在图一中,因为每一个主题出现的概率是独立同分布的,所以假定未知参数符合多项分布。这个假定的分布在贝叶斯公式中叫做似然函数。贝叶斯规则还提出:对于已知模型的未知参数,需要一个先验分布与似然函数共轭,来评估未知参数。关于贝叶斯规则,请看”贝叶斯公式的共轭分布“。

    由贝叶斯规则可知:
    
    其中,先验分布是Dirichlet分布,似然函数是多项分布函数,而计算后验分布目的是为了获得主题分布。则图一的上半部分可表示为:



2.2 单词分布

    同理,单词分布也服从多项分布,其贝叶斯表达式为:

    
    其先验分布是Dirichlet分布,似然函数是多项分布。如图:



2.3 主题分布和单词分布的表达式

    经过一系列的公式推导(详见 "Parameter estimation for text analysis", Gregor Heinrich),得到主题分布和单词分布的最终表达式:


参数说明:

LDA(Latent Dirichlet Allocation)简介_第4张图片


三、Gibbs Sampling算法:实现LDA  

    第二部分重点描述了LDA生成文档的模型,以及模型中未知参数(即主题分布和单词分布)的表达式。模型已经大体了解,不过具体该怎么实现?这里采用的算法是Gibbs Sampling
    Gibbs Sampling算法是MCMC(Markov Chain Monte Carlo,马尔科夫链-蒙特卡罗)算法的一个特例。它的运行方式是每次选择概率向量的一个维度,然后根据这个向量的其他维度的值来采样当前维度的新值。请看下图:

LDA(Latent Dirichlet Allocation)简介_第5张图片

1. 步骤说明


Initialize:
    初始时随机给文本中的每个单词分配主题

Count:
    计算每个每篇文档属于第k个主题的单词总数,以及第k个主题在所有文档中生成第t个单词的总数。

Compute:
    去除当前单词的主题,根据该文档中其他单词的主题评估当前单词被赋予各个主题的概率。其中, 

Sample:
    在得到当前单词的主题概率分布后,根据这个概率分布为该词采样一个新的主题

Loop:
    从Count步骤重新开始,不断更新下一个单词的主题,直到收敛。

2. 输出结果

    最后输出的是主题分布和单词分布,对文本挖掘方面的技术有重要意义。

你可能感兴趣的:(算法,LDA,sampling,Gibbs,主题建模)