PLSA算法(转)
1. 引子
Bag-of-Words 模型是NLP和IR领域中的一个基本假设。在这个模型中,一个文档(document)被表示为一组单词(word/term)的无序组合,而忽略了语法 或者词序的部分。BOW在传统NLP领域取得了巨大的成功,在计算机视觉领域(Computer Vision)也开始崭露头角,但在实际应用过程中,它却有一些不可避免的缺陷,比如:
- 稀疏性(Sparseness): 对于大词典,尤其是包括了生僻字的词典,文档稀疏性不可避免;
- 多义词(Polysem): 一词多义在文档中是常见的现象,BOW模型只统计单词出现的次数,而忽略了他们之间的区别;
- 同义词(Synonym): 同样的,在不同的文档中,或者在相同的文档中,可以有多个单词表示同一个意思;
从 同义词和多义词问题我们可以看到,单词也许不是文档的最基本组成元素,在单词与文档之间还有一层隐含的关系,我们称之为主题(Topic)。我们在写文章 时,首先想到的是文章的主题,然后才根据主题选择合适的单词来表达自己的观点。在BOW模型中引入Topic的因素,成为了大家研究的方向,这就是我们要 讲的Latent Semantic Analysis (LSA) 和 probabilitistic Latent Semantic Analysis (pLSA),至于更复杂的LDA和众多其他的Topic Models,以后再详细研究。
2. LSA简介
已知一个文档数据集
及相应的词典
,采用BOW模型假设,我们可以将数据集表示为一个
的共生矩阵,
,其中,
表示词典中的第j个单词在第i个文档中出现的次数。
LSA的基本思想就是,将document从稀疏的高维Vocabulary空间映射到一个低维的向量空间,我们称之为隐含语义空间(Latent Semantic Space).
如何得到这个低维空间呢,和PCA采用特征值分解的思想类似,作者采用了奇异值分解(Singular Value Decomposition)的方式来求解Latent Semantic Space。标准的SVD可以写为:

其中,
和
均为正交矩阵,有
,
是包含
所有奇异值的对角矩阵。LSA降维的方式就是只取
中最大的K个奇异值,而其他置为0,得到
的近似矩阵
,于是得到了共生矩阵的近似:
注意到如果我们利用内积来计算文档与文档之间的的相似度,即
的自相关矩阵,可以得到:
。于是,我们可以把
解释为文档样本在Latent Space上的坐标,而
则是两个空间之间的变换矩阵。下图形象的展示了LSA的过程:
![]()
由LSA在训练集合上得到的参数,当一个新的文档向量
到来时,我们可以利用下式将其原始term space映射到latent space:
LSA的优点
- 低维空间表示可以刻画同义词,同义词会对应着相同或相似的主题;
- 降维可去除部分噪声,是特征更鲁棒;
- 充分利用冗余数据;
- 无监督/完全自动化;
- 与语言无关;
LSA的不足
- 没有刻画term出现次数的概率模型;
- 无法解决多义词的问题;
- SVD的优化目标基于L-2 norm 或者是 Frobenius Norm的,这相当于隐含了对数据的高斯噪声假设。而term出现的次数是非负的,这明显不符合Gaussian假设,而更接近Multi-nomial分布;
- 对于count vectors 而言,欧式距离表达是不合适的(重建时会产生负数);
- 特征向量的方向没有对应的物理解释;
- SVD的计算复杂度很高,而且当有新的文档来到时,若要更新模型需重新训练;
- 维数的选择是ad-hoc的;
3. pLSA
类似于LSA的思想,在pLSA中也引入了一个Latent class,但这次要用概率模型的方式来表达LSA的问题,如下图:
![]()
在这个probabilitistic模型中,我们引入一个Latent variable
,这对应着一个潜在的语义层。于是,完整的模型为:
代表文档在数据集中出现的概率;
代表当确定了语义
时,相关的term(word)出现的机会分别是多少;
表示一个文档中语义分布的情况。利用以上这些定义,我们就可以一个生成式模型(generative model),利用它产生新的数据:
- 首先根据分布
随机抽样选择一个文档
; - 选定文档后,根据
抽样选择文档表达的语义
; - 选定语义后,根据
选择文档的用词;
![]()
这样,我们得到了一个观测对
,多次重复这一过程我们就得到了一个类似N的共生矩阵,而潜在的语义
在观测值中并没有表现出来。为了刻画
的联合分布,我们可得到以下公式:
用图模型来表示以上公式如Figure3中的(a),而(b)是pLSA模型的另外一种等价形式,公式可写作:
模型确定好了,已知的数据集N,我们可以利用Maximum Likelihood准则来确定模型的参数,目标函数可写作:
此目标函数也可以解释为使
与
两个分布之间的K-L Divergence最小,即
更好的刻画共生矩阵的实际分布。
EM求解
在似然值
的表达式中存在对数内部的加运算,所以球pLSA最大似然解的问题没有闭式解,我们只能求助于EM算法,下面我们从最简单的启发式的角度推导出pLSA的求解过程。
既然似然值
无法直接求解最大值,那么我们转而优化其下界
,并通过迭代不断的将此下界提高,那么最终得到的解即为
近似最大解, 当然,此过程中寻求的下界
要求尽量紧确。利用琴生不等式和概率小于1的性质,我们可以得到如下推导:

拿到了
外面来,接下来我们就可以对
直接求解了。注意这个最大化问题的约束条件是:
利用拉格朗日法,我们可以得到优化目标:
对此目标函数求导,我们可以得到EM算法中的M-step:
而EM算法中的E-step也就是求已知
时隐含变量
的后验概率:
观察可以得到,E-step与M-step互相依赖,可以证明每一步都使得下界
的期望值提高,通过不断的迭代求解即可最后求得原问题的近似最大似然解。
pLSA与LSA的关系
由Figure4可以看到pLSA与LSA之间的对应关系。其中
刻画了Latent Space也即topic space的信息;
刻画了topic space与term space之间的关系,对应着LSA中的正交基
;在文档分类是,这两部分也就是我们在模型训练结束需要保存的信息,当一个新的文档的到来时, 我们可以再次利用EM算法得到新的文档与主题的对应关系
,并由此得到文档在topic空间上的表示
。
![]()
pLSA的优势
- 定义了概率模型,而且每个变量以及相应的概率分布和条件概率分布都有明确的物理解释;
- 相比于LSA隐含了高斯分布假设,pLSA隐含的Multi-nomial分布假设更符合文本特性;
- pLSA的优化目标是是KL-divergence最小,而不是依赖于最小均方误差等准则;
- 可以利用各种model selection和complexity control准则来确定topic的维数;
pLSA的不足
- 概率模型不够完备:在document层面上没有提供合适的概率模型,使得pLSA并不是完备的生成式模型,而必须在确定document i的情况下才能对模型进行随机抽样;
- 随着document和term 个数的增加,pLSA模型也线性增加,变得越来越庞大;
- 当一个新的document来到时,没有一个好的方式得到$p(d_i)$;
- EM算法需要反复的迭代,需要很大计算量;
针对pLSA的不足,研究者们又提出了各种各样的topic based model, 其中包括大名鼎鼎的Latent Dirichlet Allocation (LDA),在此就不再多说了。
4. 参考文献
- Thomas
Hofmann, “Unsupervised Learning by Probabilistic Latent Semantic
Analysis,” Machine Learning 42, no. 1 (January 1, 2001): 177-196
PLSA算法(转)的更多相关文章
- LSA,pLSA原理及其代码实现
一. LSA 1. LSA原理 LSA(latent semantic analysis)潜在语义分析,也被称为 LSI(latent semantic index),是 Scott Deerwest ...
- 《A Survey on Transfer Learning》迁移学习研究综述 翻译
迁移学习研究综述 Sinno Jialin Pan and Qiang Yang,Fellow, IEEE 摘要: 在许多机器学习和数据挖掘算法中,一个重要的假设就是目前的训练数据和将来的训练数据 ...
- PLSA中的EM算法
转自:http://www.cnblogs.com/rocketfan/archive/2011/07/03/2096953.html 主要记录下几个文章博客内容 A Note on EM Algor ...
- PLSA及EM算法
前言:本文主要介绍PLSA及EM算法,首先给出LSA(隐性语义分析)的早期方法SVD,然后引入基于概率的PLSA模型,其参数学习采用EM算法.接着我们分析如何运用EM算法估计一个简单的mixture ...
- 机器学习-EM算法-pLSA模型笔记
pLSA模型--基于概率统计的pLSA模型(probabilistic Latent Semantic Analysis,概率隐语义分析),增加了主题模型,形成简单的贝叶斯网络,可以使用EM算法学习模 ...
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
- [综] Latent Dirichlet Allocation(LDA)主题模型算法
多项分布 http://szjc.math168.com/book/ebookdetail.aspx?cateid=1&§ionid=983 二项分布和多项分布 http:// ...
- paper 17 : 机器学习算法思想简单梳理
前言: 本文总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想. 朴素贝叶斯: 有以下几个地方需要注意: 1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分 ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
随机推荐
- Joker的运维开发之路
python 1--数据类型,流程控制 2--数据类型详细操作,文件操作,字符编码 https://mp.weixin.qq.com/s/i3lcIP82HdsSr9LzPgkqww 点开更精彩 目前 ...
- js获取页面名称和路径参数
// 取当前页面名称(不带后缀名)function getPageName1(){ var a = location.href; var b = a.split("/" ...
- 【UVALive】2678 Subsequence(尺取法)
题目 传送门:QWQ 分析 一开始没看到都是正整数根本不会做...... 看到了就是水题了.(但还是sb WA了一发) 尺取法搞一搞 代码 #include <bits/stdc++.h> ...
- HDU1869 六度分离
/* 六度分离 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Cloudstack 安装记录
一.条件要求 1.硬件支持虚拟化,并在BIOS中开启(Inter-VT设为 Enable). 2.Centos 6.5 x86_64 3.环境中的每台主机均为静态IP地址. 4.cloudstack安 ...
- Vue源码(一)
入口文件 src/core/instance/index.js 中可以看到 function Vue (options) { if (process.env.NODE_ENV !== 'product ...
- Spring AOP详解及简单应用
Spring AOP详解 一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址: ...
- C经典实例
1,九九乘法表 undefined reference to `sqrt' linux本身无math库 -lm,伪链接;
- Error: listen EACCES 0.0.0.0:8080 错误解决记录
live-server -- 热加载利器 实现本地服务器,可及时刷新. 1.通过npm install -g live-server进行安装 2.npm init 初始化项目3.在所需要的文件夹内运行 ...
- MVC Html.DropDownList 和DropDownListFor 的常用方法
一.非强类型: Controller: ViewData["AreId"] = from a in rp.GetArea() select new SelectListItem { ...