LDA主题模型

LDA主题模型
导入:朴素贝叶斯的文本分类问题:
一个问题,现在由M个数据,一些被标记成垃圾邮件,一些被标记成非垃圾邮件,现在又来了一个新的数据,那么这个新的数据被标记成垃圾邮件或者非垃圾邮件的概率。
朴素贝叶斯的两个基础:

  1. 条件独立
  2. 每个特征的重要性都是一样的
    分析:
    垃圾邮件有两种:C1,C2
    建立词汇表:1.使用现有的一个单词词典 2.将所有的邮件中出现的单词都统计出来,得到词典,计数为N
    这时每个邮件m都可以映射为一个N维的向量X;
    如果说每个单词一个单词wi在m这个文档中出现过,那么记作xi为1,否则记为0,那么这个时候我们是不是又可以将文档m表示成向量了,m—>(x1,x2,x3…xn)
    然后套入到贝叶斯公式当中:P(c|X) = P©*P(X|C) / P(X)
    如果说是朴素贝叶斯公式,仅仅把P(X)这个分母给写成条件独立的情况就可以
    这里X代表的就是文档m,因为使用了x表示了m
    想一件事:1.首先贝叶斯肯定是可以做文本分类问题的,并且效果也不错,2.无法解析一词多意或者多词一意问题,这样会导致我们计算文本之间相似度时候的不准确性。
    怎么办?
    可以为每一篇文档加上一个主题,那么怎么通过文档,单词,主题来确定它们之间是什么样的关系。
    pLSA基于概率统计的隐语义模型。
    增加了主题模型,形成了贝叶斯网络。
    LDA主题模型

D表示文档,假如说有m个文档就有m个D,那么这个P(di)就代表某一篇文档被选中的概率
Z代表的是主题,P(zk|di)就表示,某一篇文档被选中了之后,这篇文档选择某个主题的概率
W代表词,P(wj|zk)也就是说,在选中了某一个主题的情况下,选中了某个词的概率
其中D和W肯定是已知的,但是Z是个隐变量的存在。
例子:有观测数据(di,wj)时,主题Zk是隐含变量
那么这个时候的d,w的联合概率分布就是
LDA主题模型

那么此时的求得P(wj|zk)和P(zk|di)是不是就变成了我们最重要的一点。
那么怎么求?

  1. 首先我一个词wj在di中出现的次数是肯定可以找的到的记作为n(di,wj),那么可以得到下列式子:
    LDA主题模型

这个最终的出来的结果就是我们的一个目标函数,那么我们其实也可以发现,仍然是不好求的,两个位置变量都不知道。那么怎么去求偏导?怎么求解?非常的困难。那么这个时候怎么办?我们可以假定P(zk|di),P(wj|zk)的概率是已知的,那么这个时候我们可以求出z的后验概率,那么有了z的后验概率,这个时候就又可以求解出来这两个参数的似然函数期望的最大值,从而的到这两个函数,那么知道了这两个参数,我们再带进去,然后不断地迭代,这个思想是什么?EM

好,接下来来详细的使用EM构建一下这个目标函数
假定P(zk|di),P(wj|zk)是已知的,那么我们不是可以求出z的后验概率吗,z的后验概率是什么?也就是说给定了第i篇文档di中出现了第j个词wj的情况下,zk这个主题发生的概率:
P(zk|di,wj):
求zk后验概率的公式:
LDA主题模型

那么这个时候大家想一想,求出来这个概率有什么用呢?
我们可以给出这两个参数的期望,那么怎么给出似然函数的期望?
LDA主题模型

通过一步步的化简,我们可以得出新的似然函数,我们想求这个新的似然函数的期望,就通过使用我们刚求出来的z的后验概率去进行求解,得到这个最终的函数。
这个时候这个最终的式子就是我们要求解的最大似然函数:
LDA主题模型

碰到这种带等式约束条件的怎么求?
拉格朗日乘子法
到这个时候我们的目标函数就算是构建起来了,那么其中也有部分的问题比如:

  1. 两个未知参数的初始值如何确定?
    可以使用随机初始,也可以使用两个概率相等,但是EM算法我们知道随机初始的话会出现什么问题?陷入局部的最优。因为EM对初始值很敏感,这个时候就属于优化问题了。

LDA主题模型

分析这个等式:

LDA主题模型
LDA主题模型

pLSA的总结:pLSA应用于信息检索,过滤,自然语言处理等领域,pLSA考虑到词分布和主题分布,使用EM算法来学习参数。
这个时候想个问题,但看pLSA的话,网络结构有点简单,那么能不能再给定词,主题,文档的情况下,构建出来更细致的网络,让他具有一般性的模型呢?
pLSA模型不需要先验知识就可以完成自主学习,这是它的优势,但是如果有些情况下,需要受到先验知识的影响呢?LDA模型
LDA克服了PLSA的缺点,LDA为每一个文档的topics的分布给了一个dirichlet distribution的prior。而PLSA没有。
LDA就不再是见到的一种网络结构,而是三层结构的贝叶斯网络
LDA主题模型

例子:给定若干个样本,求它的参数

  1. 可以使用极大似然估计,也可以使用EM算法等等
    它们首先是假定参数是某些固定的值,求这些参数如何取值能够使得某个目标函数取到最大或者最小值。
  2. 贝叶斯模型
    假定参数本身就是变化的,并且服从某个分布,在这个分布的约束下使得目标函数最小化或者最大化。

贝叶斯公式:
LDA主题模型

然后假定我们有一份数据x,要求解参数的这种情况,套入到贝叶斯公式里边就变成了:
LDA主题模型

P(theta):就是先验概率,表示的就是在没有任何数据支持的情况下,theta发生的概率
P(theta|x):在数据x的支持下theta的发生概率,后验概率

先验概率和后验概率的理解:比如说猜性别,后验概率就是给定了村子猜性别

共轭先验分布:
我们看一下上述的贝叶斯的公式,在其中,如果不考虑后验概率的具体取值,只考虑theta取什么的情况下,后验概率最大,那么这个时候p(x)就无实际的意义,就可以先省略去,那么什么是共轭先验分布呢?这个时候我们已知了先验概率,如果说我们计算出来后验概率和先验概率的分布是相同的,我们就说先验概率和后验概率是共轭分布,先验分布就叫做共轭先验分布。
那么想我们如何获取到先验的P(theta)?
首先在公式里边,先验和后验我们是不知道了,而p(x|theta)我们是知道它的分布的,那么这个时候呢,我们就选择和它同样的分布的p(theta),这样求出的后验它们的概率是一致的,方便后续的迭代。

LDA图的理解:首先总共有m篇文章,一共涉及到k个主题,每篇文章的长度为Nm,每一个文章都有各自的主题分布,这个主题分布是多项分布,同时这个多项分布的参数又服从迪利克雷分布,这个迪利克雷分布的超参数为alpha,同时每一个主题又都有一个词的分布,这个时候这么多个词的分布为多项分布,而这个多项分布的参数又服从迪利克雷分布,然后这个迪利克雷分布的参数为theta,对于某篇文章中的某个词:首先从该文章中采样出来一个主题,然后通过,主题获得一个词分布,然后从这个词分布中获取到一个词,如此循环,这篇文档就完成了。

LDA总结,由于我们在词和文档之间加入了主题的概念,因此可以很好的解决一词多义或者多词一义的问题,事实证明LDA在处理短的文本的时候效果不行,因此往往需要通过其他的形式将短的文本连成长的文本处理。可以和其他的算法相结合产生很好的效果,比如由原来的n维降到了现在的k维度(主题的维度)

上一篇:Spring Cloud Netflix多语言/非java语言支持之Spring Cloud Sidecar


下一篇:自然语言处理回顾