文章目录

  • 基本概要
  • 生成模型和共现模型
  • 概率潜在语义分析的算法

基本概要

概率潜在语义分析是一种利用概率生成模型对文本集合进行话题分析无监督学习方法

模型最大的特点就是用隐变量表示话题。整个模型表示文本生成话题,话题生成单词,从而得到单词-文本共现数据的过程。假设每个文本由一个话题分布决定,每个话题由一个单词分布决定。

概率潜在语义分析受潜在语义分析的启发,1999年由Hofmann提出。最初用于文本数据挖掘,后来扩展至其他领域。

上面的说法比较抽象,下面采用更加具体的说法。给定一个文本集合(一句句的话),每个文本(一句话)讨论若干个话题,每个话题由若干个单词表示。对文本集合进行概率潜在语义分析,就能发现每个文本的话题,以及每个话题的单词。

这时候就可以发现似乎可以对上面的情况来进行概率统计建模了。首先有话题的概率分布,这个概率分布是无法探知但是确实存在的,就是隐变量;然后有给定话题下文本的条件概率分布;还有给定话题下单词的条件概率分布。概率潜在语义分析就是发现由隐变量表示的话题,就是潜在语义。

下面来建立具体的概率模型。

生成模型和共现模型

假设有单词集合W={w1,w2,⋯,wM}W=\left\{w_{1}, w_{2}, \cdots, w_{M}\right\}W={w1​,w2​,⋯,wM​};文本集合D={d1,d2,⋯,dN}D=\left\{d_{1}, d_{2}, \cdots, d_{N}\right\}D={d1​,d2​,⋯,dN​};以及话题集合Z={z1,z2,⋯,zK}Z=\left\{z_{1}, z_{2}, \cdots, z_{K}\right\}Z={z1​,z2​,⋯,zK​},以及各自对应的随机变量w,d,z。那么生成模型主要通过以下步骤生成文本-单词共现数据。

  • 依据先验概率分布P(d)P(d)P(d),从文本集合中随机选取N次文本,对每个文本执行下面的操作;
  • 在文本d给定的条件下,依据条件概率分布P(z∣d)P(z|d)P(z∣d),从话题集合随机选取一个话题z,共生成L个话题,L是文本长度;
  • 在话题z给定的条件下,依据条件概率分布P(w∣z)P(w|z)P(w∣z),从单词集合中随机选取一个单词w。

生成模型中,单词变量w与文本变量d是观测变量,话题变量z是隐变量。也就是说模型生成的是(w,z,d)的集合,但观测到的是(w,d)也就是单词-文本的集合。观测到的数据表示为单词-文本矩阵T的形式,矩阵T的行表示单词,列表示文本,元素表示共现次数。

单词-文本对的生成概率为
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)​

上式就是生成模型的定义。

上面的模型包含了一个基本假设,也就是第二个等式为什么能到第三个等式,那就是在话题z给定的条件下,单词w与文本d条件独立。也就是说一句话产生了话题,话题和一些有代表性的单词相关,这些单词和一些句子就是该话题下常常共现的,我们用单词-文本矩阵来统计这样的共现情况。

共现模型的表达式和生成模型一样,文本单词的共现矩阵T出现的概率,就是所有单词-文本对(w,d)生成概率的乘积:
P(T)=∏(w,d)P(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)

其中
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)

虽然生成模型与共现模型在概率公式意义上是等价的,但是拥有不同的性质。共现模型认为,z生成了w,z生成了d。而生成模型认为d生成了z,z生成了w。就是说共现模型是以z发生为条件,平等地研究w和d的概率,而生成模型是以d发生为条件,研究给定d时的z概率,再研究给定z时的w的概率。虽然两者都是表达P(w,d)P(w,d)P(w,d)。

整个概率潜在语义分析模型中,三个随机变量之间的关系可表示如下:

所以这K个隐变量也就是话题的作用就是,对数据进行了更简洁地表示,减少了学习过程中过拟合的可能性。

共现模型的矩阵乘积形式可表示如下
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^{\prime} &=U^{\prime} \Sigma^{\prime} V^{\prime \mathrm{T}} \\ X^{\prime} &=[P(w, d)]_{M \times N} \\ U^{\prime} &=[P(w | z)]_{M \times K} \\ \Sigma^{\prime} &=[P(z)]_{K \times K} \\ V^{\prime} &=[P(d | z)]_{N \times K} \end{aligned}X′X′U′Σ′V′​=U′Σ′V′T=[P(w,d)]M×N​=[P(w∣z)]M×K​=[P(z)]K×K​=[P(d∣z)]N×K​​

它和潜在语义分析模型的区别就是,U,V是非负且规范化的,表示的是条件概率分布,而潜在语义分析模型的U和V是正交的,未必非负,不表示概率分布。

模型的目标是共现概率P(w,d)P(w,d)P(w,d)达到极大,那就说明d和w属于话题z的概率是最高的

概率潜在语义分析的算法

概率潜在语义分析模型是含有隐变量的模型,其学习通常使用EM算法。

推导过程详细可参考《统计学习方法》345-346页,这里说一下书中最后总结的计算流程

其实参数只有两个(严格来说是两组,但在求解时可视为两项),一个是P(zk∣dj)P(z_k|d_j)P(zk​∣dj​),一个是P(wi∣zk)P(w_i|z_k)P(wi​∣zk​)。再加一个概率和为1的约束,拉格朗日求极大,得到参数此时的解,然后回过去求期望得到新表达式,反复迭代即可。

概率潜在语义分析(PLSA)相关推荐

  1. 概率潜在语义分析(pLSA) 相关知识

    文章目录 生成模型 共现模型 模型性质 共现模型表示 PLSA算法 概率潜在语义分析(PLSA)是一种利用概率生成模型对文本集合进行话题分析的无监督方法. PLSA 模型假设每个文本由一个话题分布决定 ...

  2. 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)

    目录 潜在语义分析 (latent semantic analysis, LSA) 单词向量空间与话题向量空间 单词向量空间 (word vector space) 话题向量空间 (topic vec ...

  3. 一文详解概率潜在语义分析 pLSA

    目录 1. 基本思想 2. 生成模型 3. pLSA 的 EM 算法 3.1 E-step 3.2 M-step 3.3 pLSA 参数估计的 EM 算法 4. EM 算法的另一种解释 4.1 E-S ...

  4. 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)

    概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA) 目录 概率潜在语义分析(Probabilistic Latent Semantic Anal ...

  5. pLSA概率潜在语义分析

    概率潜在语义分析(PLSA) 李航<统计学习方法>:习题代码实现 pLSA用于主题模型:实例                   PLSA introduction: http://blo ...

  6. 统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现

    PLSA 概率潜在语义分析 import numpy as np import collections import jiebaclass PLSA:def __init__(self,text_li ...

  7. 概率潜在语义分析(PLSA)(probabilistic latent semantic analysis)

    概率潜在语义分析,听名字里边的'概率'一词,就知道这和一般的统计(频数统计/ tfidf 统计)不一样.我们知道LSA是对单词-文本矩阵(频数或tfidf组成的矩阵)进行奇异值分解,LSA的最重要的中 ...

  8. 复现经典:《统计学习方法》第18章 概率潜在语义分析

    第18章 概率潜在语义分析 本文是李航老师的<统计学习方法>一书的代码复现.作者:黄海广 备注:代码都可以在github中下载.我将陆续将代码发布在公众号"机器学习初学者&quo ...

  9. 【自然语言处理】潜在语义分析【下】概率潜在语义分析

    有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 由于字数限制,分成两篇博客. [自然语言处理]潜在语义分析[上]潜在语义分析 [自然语言处理]潜在语义分析[下]概率潜在语义分析 2. 概率 ...

最新文章

  1. html表单的创建和css的构成
  2. 神经网络:你的大脑是一台计算机吗?
  3. mciSendString用法
  4. grunt的学习和使用
  5. c#调用外部dll详解
  6. 云栖专辑 | 阿里开发者们的第10个感悟:产品经理最优秀的能力,是框架思维,脑海中有蓝图
  7. php 实时查看公众号加粉数据,公众号实时涨粉数据怎么查看
  8. mac nginx 安装及PHP配置
  9. [SQLite]www.sqlite.org官网.NET最新版本所有内容下载
  10. Protues构建最小系统
  11. excel 的条件格式(一)
  12. 三元一次方程组例题_50道三元一次方程组计算题及答案过程
  13. 安装和使用Clouda
  14. o2o、c2c、b2c、b2b、b2b2c都是什么?
  15. 至高荣誉:WPS制作荣誉证书(转)
  16. 【语法14】Python-mysql-connector驱动
  17. SmartIE 触摸屏通过模块可以实现与西门子 S7300 的以太网通讯
  18. Sphinx的一个应用实例
  19. Python小工具之翻译词典
  20. excel计算机考试标注星期几,Excel 根据日期标注中文及英文的星期几

热门文章

  1. 2020最新UPUPW5.4-APACHE搭建HTTPS网站教程
  2. 计算机图形学作业( 七):利用 OpenGL 绘制 Bezier 贝塞尔曲线
  3. 电源电路中电感为什么会啸叫 漫画+动图,看完就明白了
  4. 爆改 Linux 下最好用的截图工具!
  5. 前端SEO优化注意事项
  6. 字节减速 互联网入冬
  7. TI OMAPL处理器介绍(二)
  8. 面对流氓软件,是逃避还是反击?(连载一、流氓软件的危害)
  9. 【报告分享】美妆行业新国货品牌数字营销系列研究报告(附下载)
  10. oracle sqltune,oraclet通过DBMS_SQLTUNE.EXECUTE_TUNING_TASK获取优化建议