一文详解概率潜在语义分析 pLSA
目录
1. 基本思想
2. 生成模型
3. pLSA 的 EM 算法
3.1 E-step
3.2 M-step
3.3 pLSA 参数估计的 EM 算法
4. EM 算法的另一种解释
4.1 E-Step
4.2 M-Step
5. PSLA 缺点
Reference
Probabilistic latent semantic analysis (概率潜在语义分析,pLSA) 是一种Topic Model,在99年被 Thomas Hofmann 提出[1]。它和随后提出的LDA使得 Topic Model 成为了研究热点,其后的模型大都是建立在二者的基础上的。
1. 基本思想
PLSA模型通过一个生成模型来为LSA赋予了概率意义上的解释。该模型假设,每一篇文档都包含一系列可能的潜在话题,文档中的每一个单词都不是凭空产生的,而是在这些潜在的话题的指引下通过一定的概率生成的。
在 PLSA 模型里面,话题其实是一种单词上的概率分布,每一个话题都代表着一个不同的单词上的概率分布,而每个文档又可以看成是话题上的概率分布。每篇文档就是通过这样一个两层的概率分布生成的,这也正是PLSA 提出的生成模型的核心思想。
主题示例:给定一组词:证明,推导,对象,酒庄,内存,下列三个主题可以表示为:
- 数学主题:(0.45, 0.35, 0.2, 0, 0)
- 计算机主题:(0.2, 0.15, 0.45, 0, 0.2)
- 红酒主题:(0, 0, 0.2, 0.8, 0)
证明 |
推导 |
对象 |
酒庄 |
内存 |
|
数学 |
0.45 |
0.35 |
0.2 |
0 |
0 |
计算机 |
0.2 |
0.15 |
0.45 |
0 |
0.2 |
红酒 |
0 |
0 |
0.2 |
0.8 |
0 |
PLSA 的特点:
- 利用概率生成模型对文本集合进行话题分析的无监督学习方法
- 最大特点:用隐变量表示话题
- 整个模型表示文本生成话题,话题生成单词,从而得到单词-文本共现数据的过程
- 假设每个文本由一个话题分布决定,每个话题由一个单词分布决定
2. 生成模型
pLSA 遵从 bag-of-words 假设, 即只考虑一篇文档中单词出现的次数,忽略单词的先后次序关系,且每个单词的出现都是彼此独立的。 这样一来,我们观察到的其实就是每个单词在每篇文档
中出现的次数
。 pLSA 还假设对于每对出现的
都对应着一个表示“主题”的隐藏变量
。 pLSA 是一个生成模型,它假设
和 、
之间的关系用贝叶斯网络表示,如下图:
实心的节点 和
表示我们能观察到的文档和单词,空心的
表示我们观察不到的隐藏变量,用来表示隐含的主题。
表示单词出现在文档
的概率,
表示文档
中出现主题
下的单词的概率,
给定主题
出现单词
的概率。并且每个主题在所有词项上服从Multinomial 分布,每个文档在所有主题上服从Multinomial 分布。整个文档的生成过程是这样的:
- 以
的概率选中文档
;
- 以
的概率选中主题
;
- 以
的概率产生一个单词.
我们可以观察到的数据就是 对,而
是隐含变量。PLSA 通过下面这个式子对
的联合分布进行了建模(为方便,省略了下标):
其中,和
分布对应了两组Multinomial 分布,我们需要估计这两组分布的参数。
记 ,表示我们希望估计的模型参数。对于每对
和
,我们都希望知道
和
的值,也就是说,模型中共有
个参数。
下面给出用EM算法估计PLSA参数的详细推导过程。
3. pLSA 的 EM 算法
根据最大对数似然估计,要求求解
由于 这一项与
无关,可扔掉。
因此
这里出现了 套
的形式,导致很难直接最大似然。假如能观测到
z
,问题就很简单了。于是想到根据EM算法,假设我们已知在观测 ,
下
的概率分布
,对上面公式做一个变换,
根据 Jensen 不等式有
省去与 无关的项,问题变成了最大化
的一个下界函数
,即
另一种推导方式,直接套用 EM 算法公式,求完全数据的对数似然函数关于隐变量的期望,完全数据的对数似然为
第一项与隐变量无关,省掉,于是得到
其中
3.1 E-step
在 E-step,我们需要求出
中除 外的其他未知量,也就是说对于每组
,我们都需要求出
。根据贝叶斯定理,
其中 和
就是上轮迭代求出的
。
3.2 M-step
M-step 就是要求 了,通过约束最优化求解Q函数的极大值,因为
和
满足约束条件:
应用拉格朗日法,引入拉格朗日乘子 和
,定义拉格朗日函数
将拉格朗日函数分别对 和
求偏导数,并令其等于0.
(1) 对 求偏导:
解得
上式对 j 进行求和,得
求得
解得,
其物理意义为:单词 在数据集
D
中属于主题 的频数(按概率计数),除以数据集中属于主题
的频数(按概率计数)。
(2) 对 求偏导:
同上,上式对 k 进行求和,解得 ,进一步,解得
其物理意义:文档 中每个位置背后的、属于主题
的频数(按概率计数),除以位置的个数。
3.3 pLSA 参数估计的 EM 算法
输入:设单词集合为 , 文本集合为
, 话题集合为
, 共现数据
输出: 和
(1) 设置参数 和
的初始值;
(2) 迭代执行以下 E 步、M 步,直到收敛为止;
E 步:
M 步:
4. EM 算法的另一种解释
4.1 E-Step
E是Expection(期望)的意思,即根据上一轮得到的模型参数求隐含变量的期望,对应到PLSA模型中就是根据上轮得到的模型参数 和
计算每篇文档中每个词背后对应的主题的概率
。如下图,从
到
一共有 K 条路径,途经
的概率为
这里的条件概率 和
是由上一轮的M-Step得到的,初始时
和
由随机赋值得到。
4.2 M-Step
在已知后验概率的情况下通过 MLE 的方法求条件概率。当我们已知所有的 时,统计一下在所有文章中由
到
的次数,再统计一下在所有文章中由
到任意
的次数,两个次数相除就得到了
同样,统计一下在文章 当中主题
出现的次数,再统计一下文章
中所有主题
的出现次数,两者相除就得到了
5. PSLA 缺点
对于一个新的文档而言,我们无法得知它对应的P(d) 究竟是什么, 因此尽管 PLSA 模型在给定的文档上是一个生成模型,它却无法生成新的未知的文档。该模型的另外的一个问题在于,随着文档数量的增加,P(z|d) 的参数也会随着线性增加,这就导致无论有多少训练数据,都容易导致模型的过拟合问题。这两点成为了限制 PLSA 模型被更加广泛使用的两大缺陷。
Reference
[1] Hofmann T. Probabilistic latent semantic analysis[J]. arXiv preprint arXiv:1301.6705, 2013.
[2] 主题模型 - AI 算法工程师手册
[3] http://blog.tomtung.com/2011/10/plsa/
[4] https://www.cnblogs.com/zhangchaoyang/articles/5668024.html
一文详解概率潜在语义分析 pLSA相关推荐
- 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)
目录 潜在语义分析 (latent semantic analysis, LSA) 单词向量空间与话题向量空间 单词向量空间 (word vector space) 话题向量空间 (topic vec ...
- 概率潜在语义分析(pLSA) 相关知识
文章目录 生成模型 共现模型 模型性质 共现模型表示 PLSA算法 概率潜在语义分析(PLSA)是一种利用概率生成模型对文本集合进行话题分析的无监督方法. PLSA 模型假设每个文本由一个话题分布决定 ...
- 概率潜在语义分析(PLSA)
文章目录 基本概要 生成模型和共现模型 概率潜在语义分析的算法 基本概要 概率潜在语义分析是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法. 模型最大的特点就是用隐变量表示话题.整个模型表 ...
- 复现经典:《统计学习方法》第18章 概率潜在语义分析
第18章 概率潜在语义分析 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&quo ...
- 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)
概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA) 目录 概率潜在语义分析(Probabilistic Latent Semantic Anal ...
- pLSA概率潜在语义分析
概率潜在语义分析(PLSA) 李航<统计学习方法>:习题代码实现 pLSA用于主题模型:实例 PLSA introduction: http://blo ...
- 统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现
PLSA 概率潜在语义分析 import numpy as np import collections import jiebaclass PLSA:def __init__(self,text_li ...
- 概率潜在语义分析(PLSA)(probabilistic latent semantic analysis)
概率潜在语义分析,听名字里边的'概率'一词,就知道这和一般的统计(频数统计/ tfidf 统计)不一样.我们知道LSA是对单词-文本矩阵(频数或tfidf组成的矩阵)进行奇异值分解,LSA的最重要的中 ...
- 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...
最新文章
- [bzoj1054][HAOI2008]移动玩具
- python使用matplotlib可视化、使用subplots函数将可视化的画布划分为网格状的若干子区、通过nrows和ncols参数设置设置行数和列数
- android studio 模拟器中文乱码
- hexo安装toc插件
- python读取raw数据文件_Python 读写文件中数据
- php中时间轴开发,即显示为“刚刚”、“5分钟前”、“昨天10:23”等
- 字节大牛教你手撕Java学习,神操作!
- useradd - 帐 号 建 立 或 更 新 新 使 用 者 的 资 讯
- 使用mingw编译log4cpp--问题整理
- 免费数据集下载网站【dataset】
- 【Excel高效工作1】5分钟,从Excel中批量将联系人信息导入手机电话簿
- keepalived高可用
- PID调节经验知识梳理
- Oracle10g或Oracle11g完全卸载正确步骤(亲身体验-详细图文教程)
- 双摄方案android,科普短文,各种手机双摄像头搭配方案及工作原理简介
- 自己动手用Android和Xposed编写一个微信聊天机器人——《微信聊天精灵》实现关键词自动回复。
- Sourcetree git status失败 错误代码128:error :bad signature 0x0000000
- 计算机excel基础知识教程,EXCEL基本操作技巧 一
- Geekban极客班 第三周
- 游戏盾,有效解决游戏行业安全管理问题
热门文章
- SpringCloud Gateway入门
- 基础入门-web源码拓展
- web渗透测试-从入门到放弃-04XSS-键盘记录
- 【插画与美文】 平静而幸福的画面——福井良佑水彩
- 港大禁用ChatGPT等AI工具,网友:“从万众瞩目到千夫所指?”
- 【题解】在你窗外闪耀的星星-C++
- PLSQL安装完毕连接数据库问题记录
- asp.net新生报到管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
- 时序预测 | MATLAB实现基于Adam算法优化LSTM长短期记忆神经网络时间序列预测
- 下拉刷新的坑 touchend touchcancel