概率潜在语义分析(pLSA) 相关知识
文章目录
- 生成模型
- 共现模型
- 模型性质
- 共现模型表示
- PLSA算法
概率潜在语义分析(PLSA)是一种利用概率生成模型对文本集合进行话题分析的无监督方法。 PLSA 模型假设每个文本由一个话题分布决定,每个话题由一个单词分布决定。该模型中的话题是不可直接观测到的,是潜在的隐变量。整个模型表示文本生成话题,话题生成单词,从而得到单词—文本共现数据的过程。
生成模型
假设有M个单词集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1,w2.…,wM},N个文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1,d2,…,dN},K个话题集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1,z2,…,zK}。假设用概率分布P(d)P(d)P(d)表示生成文本ddd 的概率,P(z∣d)P(z|d)P(z∣d) 表示文本ddd生成话题zzz 的概率,P(w∣z)P(w|z)P(w∣z) 表示话题zzz 生成单词www的概率。
生成模型步骤如下:
(1)依据概率分布P(d)P(d)P(d) ,从文本集合中随机选取一个文本ddd,共生成NNN个文本。对生成的N个文本都执行下面的操作:
(2)在给定文本 ddd 的条件下,依据条件概率分布P(z∣d)P(z|d)P(z∣d) ,从话题集合中随机选取一个话题zzz,共生成LLL个话题。对生成的LLL个话题都执行下面的操作:
(3)在给定话题zzz的条件下,依据条件概率分布P(w∣z)P(w|z)P(w∣z) ,从单词集合中随机选取一个单词www。
从数据生成的过程可以推出,单词—文本共现数据TTT的生成概率为所有的单词—文本对(w,d)(w,d)(w,d) 的生成概率的乘积:
P(T)=∏w,dP(w,d)n(w,d)P(T) = \prod_{w,d} P(w,d)^{n(w,d)} P(T)=w,d∏P(w,d)n(w,d)
其中,n(w,d)n(w,d)n(w,d) 表示(w,d)(w,d)(w,d) 出现的次数,而(w,d)(w,d)(w,d) 的生成概率如下:
P(w,d)=P(d)P(w∣d)=P(d)∑zP(w,z∣d)=P(d)∑zP(z∣d)P(w∣z)\begin{aligned} P(w,d) & =P(d)P(w|d) \\ &= P(d)\sum_{z} P(w,z|d) \\ & = P(d)\sum_{z} P(z|d)P(w|z) \end{aligned} P(w,d)=P(d)P(w∣d)=P(d)z∑P(w,z∣d)=P(d)z∑P(z∣d)P(w∣z)
这就是生成模型的定义。生成模型属于概览有向图模型,可以用下图表示:
共现模型
除了生成模型,还可以定义与之等价的共现模型,共现模型假设在给定话题zzz的前提下,单词www和文本ddd 是条件独立的,即:
P(w,d∣z)=P(w∣z)P(d∣z)P(w,d|z) = P(w|z)P(d|z) P(w,d∣z)=P(w∣z)P(d∣z)
于是单词—文本对(w,d)(w,d)(w,d) 的生成概率为:
P(w,d)=∑z∈ZP(z)P(w∣z)P(d∣z)P(w,d) = \sum_{z\in Z} P(z)P(w|z)P(d|z) P(w,d)=z∈Z∑P(z)P(w∣z)P(d∣z)
下图是共现模型示意图,其中zzz是隐变量:
生成模型与共现模型具有不同性质,生成模型描述了文本—单词共现数据的生成过程,共现模型描述文本—单词共现数据所拥有的模式。
模型性质
如果直接定义单词与文本的共现概率P(w,d)P(w,d)P(w,d) ,模型的参数个数是O(M⋅N)O(M\cdot N)O(M⋅N),其中M表示单词数,N表示文本数。而PLSA的生成模型或者共现模型的参数个数都是O(M⋅K+N⋅K)O(M\cdot K+ N\cdot K)O(M⋅K+N⋅K),其中K是话题数,远小于M,可以极大的减少参数个数。如下图所示:
共现模型表示
前面提到共现模型为:
P(w,d)=∑z∈ZP(z)P(w∣z)P(d∣z)P(w,d) = \sum_{z\in Z} P(z)P(w|z)P(d|z) P(w,d)=z∈Z∑P(z)P(w∣z)P(d∣z)
也可以表示为三个矩阵的乘积的形式:
X′=U′Σ′V′TX′=[P(w,d)]M×NU′=[P(w∣z)]M×KΣ′=[P(z)]K×KV′=[P(d∣z)]N×K\begin{aligned} &X' = U'\Sigma' V'^T \\ & X' = [P(w,d)]_{M\times N} \\ & U' = [P(w|z)]_{M\times K}\\ & \Sigma' = [P(z)]_{K\times K}\\ & V' = [P(d|z)]_{N\times K}\\ \end{aligned} X′=U′Σ′V′TX′=[P(w,d)]M×NU′=[P(w∣z)]M×KΣ′=[P(z)]K×KV′=[P(d∣z)]N×K
其中,矩阵U′,V′U',V'U′,V′是非负的、规范的,表示条件概率分布。
PLSA算法
PLSA是含有隐变量的模型,通常使用EM算法完成参数的优化。
假设单词集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1,w2.…,wM},文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1,d2,…,dN},话题集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1,z2,…,zK}。给定单词—文本共现数据T={n(wi,dj)},i=1,2,…,M;j=1,2,…,NT=\{n(w_i,d_j)\},i=1,2,\ldots,M; j=1,2,\ldots,NT={n(wi,dj)},i=1,2,…,M;j=1,2,…,N,目标是估计PLSA(生成模型)的参数,使用极大似然估计,对数似然函数是:
L(θ)=log∏i=1M∏j=1NP(dj,wi)n(dj,wi)=∑iM∑jNn(dj,wi)logP(dj,wi)=∑iM∑jNn(dj,wi)log[∑k=1KP(wi∣zk)P(zk∣dj)]\begin{aligned}L(\theta)&=\log \prod_{i=1}^M\prod_{j=1}^N P(d_j,w_i)^{n(d_j,w_i)}\\ &=\sum_i^M\sum_j^N n(d_j,w_i)\log P(d_j,w_i)\\ &=\sum_i^M\sum_j^N n(d_j,w_i)\log[\sum_{k=1}^K P(w_i|z_k)P(z_k|d_j)]\\ \end{aligned} L(θ)=logi=1∏Mj=1∏NP(dj,wi)n(dj,wi)=i∑Mj∑Nn(dj,wi)logP(dj,wi)=i∑Mj∑Nn(dj,wi)log[k=1∑KP(wi∣zk)P(zk∣dj)]
模型含有隐变量,对数似然函数的优化方法无法用解析方法求解,使用EM算法进行求解。假设有M个单词集合W={w1,w2.…,wM}W=\{w_1,w_2.\ldots,w_M\}W={w1,w2.…,wM},N个文本集合D={d1,d2,…,dN}D=\{d_1,d_2,\ldots,d_N\}D={d1,d2,…,dN},K个话题集合Z={z1,z2,…,zK}Z=\{z_1,z_2,\ldots,z_K\}Z={z1,z2,…,zK},则具体算法如下:
输入:单词—文本共现数据T={n(wi,dj)},i=1,2,…,M;j=1,2,…,NT=\{n(w_i,d_j)\},i=1,2,\ldots,M; j=1,2,\ldots,NT={n(wi,dj)},i=1,2,…,M;j=1,2,…,N
输出:P(wi∣zk),P(zk∣dj)P(w_i|z_k),P(z_k|d_j)P(wi∣zk),P(zk∣dj)
(1)设置参数P(wi∣zk),P(zk∣dj)P(w_i|z_k),P(z_k|d_j)P(wi∣zk),P(zk∣dj)的初始值。
(2)迭代执行E步,M步,直到收敛为止:
E步:
P(zk∣wi,dj)=P(wi∣zk)P(zk∣dj)∑k=1KP(wi∣zk)P(zk∣dj)P(z_k|w_i,d_j) = \frac{P(w_i|z_k)P(z_k|d_j)}{\sum_{k=1}^K P(w_i|z_k)P(z_k|d_j)} P(zk∣wi,dj)=∑k=1KP(wi∣zk)P(zk∣dj)P(wi∣zk)P(zk∣dj)
M步:
P(wi∣zk)=∑j=1Nn(wi,dj)P(zk∣wi,dj)∑i=1M∑j=1Nn(wi,dj)P(zk∣wi,dj)P(w_i|z_k) = \frac{\sum_{j=1}^N n(w_i,d_j)P(z_k|w_i,d_j)}{\sum_{i=1}^M\sum_{j=1}^N n(w_i,d_j)P(z_k|w_i,d_j)} P(wi∣zk)=∑i=1M∑j=1Nn(wi,dj)P(zk∣wi,dj)∑j=1Nn(wi,dj)P(zk∣wi,dj)
P(zk∣dj)=∑i=1Mn(wi,dj)P(zk∣wi,dj)n(dj)P(z_k|d_j) = \frac{\sum_{i=1}^M n(w_i,d_j)P(z_k|w_i,d_j)}{n(d_j)} P(zk∣dj)=n(dj)∑i=1Mn(wi,dj)P(zk∣wi,dj)
参考文章:
《统计学习方法 第二版》
概率潜在语义分析(pLSA) 相关知识相关推荐
- 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)
目录 潜在语义分析 (latent semantic analysis, LSA) 单词向量空间与话题向量空间 单词向量空间 (word vector space) 话题向量空间 (topic vec ...
- 概率潜在语义分析(PLSA)
文章目录 基本概要 生成模型和共现模型 概率潜在语义分析的算法 基本概要 概率潜在语义分析是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法. 模型最大的特点就是用隐变量表示话题.整个模型表 ...
- 一文详解概率潜在语义分析 pLSA
目录 1. 基本思想 2. 生成模型 3. pLSA 的 EM 算法 3.1 E-step 3.2 M-step 3.3 pLSA 参数估计的 EM 算法 4. EM 算法的另一种解释 4.1 E-S ...
- 概率潜在语义分析(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的最重要的中 ...
- 复现经典:《统计学习方法》第18章 概率潜在语义分析
第18章 概率潜在语义分析 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&quo ...
- 【自然语言处理】潜在语义分析【下】概率潜在语义分析
有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 由于字数限制,分成两篇博客. [自然语言处理]潜在语义分析[上]潜在语义分析 [自然语言处理]潜在语义分析[下]概率潜在语义分析 2. 概率 ...
最新文章
- Swagger增强神器:Knife4j!用它轻松实现接口搜索、Word下载、接口过滤...
- android 让应用恢复前台显示_android – 当应用程序返回前台时出现问题
- PowerDesigner中设置数据库类型,设置default value,Comment,自增属性,以及数据库设计中的需要考虑的示项,带有小数点的数据显示
- Kibana入门安装与介绍
- java事务超时时间,java – 如何在WebSphere Liberty Batch中配置事务超时?
- 提取图像色彩主色调工具
- wacom win10 未连接任何设备 驱动的问题 解决影拓3手绘板等老设备驱动无法在win10使用的问题
- 这样的生产计划与排产,我看行
- 计算机 常用的逻辑运算有哪些,常用布尔逻辑运算符有哪些
- 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据
- VMware虚拟机 之 VMX进程已提前退出
- 小程序的大于小于等于的写法
- 如何辨识“真假”敏捷?
- 如何编写 Runkeeper 一样的 app(2)
- 7.Docker容器使用辅助工具汇总
- Araxis Merge对比软件工具
- 基于STM32的指纹锁
- python与人工智能关系论文_《Python深度学习》笔记:人工智能、机器学习与深度学习关系...
- [含论文+源码等]基于SSM实现的新闻发布系统
- 华为员工的命 只值一台交换机的钱 【 华为员工 胡新宇 过劳死 最新报道 】
热门文章
- sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
- dataframe的drop無效
- codeblocks折叠区的颜色
- python提取文章中的中文数字
- armadillo 使用注意 越界不报错
- linux为什么创建不了分区,linux下扩容磁盘扩展分区解决因无法创建新分区不能扩容lvm问题...
- RedHat虚拟机安装VMware Tools
- java Swing中随机验证码的实现
- 为了30分钟配送,盒马工程师都有哪些“神操作”?
- Spark2.0流式处理读Kafka并写ES