Topic Model之Probabilistic Latent Semantic Indexing(PLSI/PLSA)

Probabilistic Latent Semantic Indexing(PLSI/PLSA)是常用的话题模型之一,他通过生成模型来模拟文档的产生过程,然后用Maximum likelihood的方法估计模型中未知参数的值,来获取整个生成模型中的参数值,从而构建起整个生成模型。

一、 基本概念

1.  SVD奇异值分解:SVD主要用来求低阶近似问题。当给定一个MXN的矩阵C时(其秩为r),我们希望找到一个近似矩阵C‘(其秩不大于k),当k远小于r时,我们称C’为C的低阶近似,设X = C - C‘为两个矩阵的差,X的F-范数为:

SVD计算步骤:

a、 给定一个矩阵C,对其奇异值进行分解:C = U ∑ V

b、 构造∑ ‘, 其秩为k,选择将∑ 中奇异值最小的r-k个值置为0,即得到∑ ’

c、 计算C‘ = U ∑’ V

因为特征值大小对矩阵和向量乘法的影响大小成正比,而奇异值和特征值也是成正比,因而选择最小的r-k个奇异值置为0 是合理的。

2. PCA主成分分析:PCA试图在丢失数据信息最少的情况下,对多维的数据进行最优综合简化,对高维的变量空间进行降维处理。

PCA计算步骤:

a、 首先计算训练样本的均值和协方差矩阵:

b、 对协方差矩阵进行特征值分解:

c、 选择前k个最大的特征值对应的特征向量作为主成分分量,这些分量构成特征空间,我们就得到变换矩阵

对任何一条数据X,通过如下变化,将其转化到新的特征空间中的向量y:

3.  TF-IDF:

首先介绍TF-term frequency,它用来度量 一个单词在一个文档中出现的频率。由于不同的文档长短不同,为了防止TF偏向于长文件,通常对词频进行归一化处理。

通常一个文档中如果某个词出现的频率较高,可以认为这个文档和这个词的相关性比较高,但是,如果所有的文档都含有这个词,这时候,这个词的区分度反而就不是那么高。因此,可以用IDF来度量一个词的区分度:逆向文件频率——将总文件数除以包含该词语的文件数,将结果取对数,即得到逆向文件频率。

最后,综合TF和IDF,我们得到TF-IDF的计算方法:

某一个特定文件中的高频词,以及该词在所有文件中的低文件频率,可以产生出较高的TFIDF. TF-IDF倾向于过滤掉常见词,保留区分度较高的词。

4. BOW: bag of words

BOW将一篇文章看成是词汇的集合,忽略单词在文章中出现的位置、句法语法等信息。利用文章中出现过的词构建一个词表,基于词表将每一篇文章转化为一个向量,向量的每一维对应一个单词,每一维的值对应单词出现的次数。

二、 LSI模型

LSA(LSI)使用SVD来对单词-文档矩阵进行分解。SVD可以看作是从单词-文档矩阵中发现不相关的索引变量(因子),将原来的数据映射到语义空间内。在单词-文档矩阵中不相似的两个文档,可能在语义空间内比较相似。

SVD,亦即奇异值分解,是对矩阵进行分解的一种方法,一个t*d维的矩阵(单词-文档矩阵)X,可以分解为T*S*DT,其中T为t*m维矩阵,T中的每一列称为左奇异向量(left singular bector),S为m*m维对角矩阵,每个值称为奇异值(singular value),D为d*m维矩阵,D中的每一列称为右奇异向量。在对单词文档矩阵X做SVD分解之后,我们只保存S中最大的K个奇异值,以及T和D中对应的K个奇异向量,K个奇异值构成新的对角矩阵S’,K个左奇异向量和右奇异向量构成新的矩阵T’和D’:X’=T’*S’*D’T形成了一个新的t*d矩阵。

假设索引的文档的集合如下:

对应的单词-文档矩阵X如下:

[[ 1.  0.  0.  1.  0.  0.  0.  0.  0.]
[ 1.  0.  1.  0.  0.  0.  0.  0.  0.]
[ 1.  1.  0.  0.  0.  0.  0.  0.  0.]
[ 0.  1.  1.  0.  1.  0.  0.  0.  0.]
[ 0.  1.  1.  2.  0.  0.  0.  0.  0.]
[ 0.  1.  0.  0.  1.  0.  0.  0.  0.]
[ 0.  1.  0.  0.  1.  0.  0.  0.  0.]
[ 0.  0.  1.  1.  0.  0.  0.  0.  0.]
[ 0.  1.  0.  0.  0.  0.  0.  0.  1.]
[ 0.  0.  0.  0.  0.  1.  1.  1.  0.]
[ 0.  0.  0.  0.  0.  0.  1.  1.  1.]
[ 0.  0.  0.  0.  0.  0.  0.  1.  1.]]

对其进行SVD分解得到X=T*S*DT:

其中T如下:

[-0.22 -0.11  0.29 -0.41 -0.11 -0.34 -0.52  0.06  0.41]
[-0.2  -0.07  0.14 -0.55  0.28  0.5   0.07  0.01  0.11]
[-0.24  0.04 -0.16 -0.59 -0.11 -0.25  0.3  -0.06 -0.49]
[-0.4   0.06 -0.34  0.1   0.33  0.38 -0.    0.   -0.01]
[-0.64 -0.17  0.36  0.33 -0.16 -0.21  0.17 -0.03 -0.27]
[-0.27  0.11 -0.43  0.07  0.08 -0.17 -0.28  0.02  0.05]
[-0.27  0.11 -0.43  0.07  0.08 -0.17 -0.28  0.02  0.05]
[-0.3  -0.14  0.33  0.19  0.11  0.27 -0.03  0.02  0.17]
[-0.21  0.27 -0.18 -0.03 -0.54  0.08  0.47  0.04  0.58]
[-0.01  0.49  0.23  0.02  0.59 -0.39  0.29 -0.25  0.23]
[-0.04  0.62  0.22  0.   -0.07  0.11 -0.16  0.68 -0.23]
[-0.03  0.45  0.14 -0.01 -0.3   0.28 -0.34 -0.68 -0.18]

DT如下:

[-0.2  -0.61 -0.46 -0.54 -0.28 -0.   -0.01 -0.02 -0.08]
[-0.06  0.17 -0.13 -0.23  0.11  0.19  0.44  0.62  0.53]
[ 0.11 -0.5   0.21  0.57 -0.51  0.1   0.19  0.25  0.08]
[-0.95 -0.03  0.04  0.27  0.15  0.02  0.02  0.01 -0.02]
[ 0.05 -0.21  0.38 -0.21  0.33  0.39  0.35  0.15 -0.6 ]
[-0.08 -0.26  0.72 -0.37  0.03 -0.3  -0.21  0.    0.36]
[-0.18  0.43  0.24 -0.26 -0.67  0.34  0.15 -0.25 -0.04]
[ 0.01 -0.05 -0.01  0.02  0.06 -0.45  0.76 -0.45  0.07]
[ 0.06 -0.24 -0.02  0.08  0.26  0.62 -0.02 -0.52  0.45]

S如下:

[ 3.34
        2.54
              2.35
                    1.64
                         1.50
                               1.31
                                    0.85
                                         0.56
                                              0.36]

如果我们只保留奇异值最大的两个,则得到T’

[-0.22 -0.11]
[-0.2  -0.07]
[-0.24  0.04]
[-0.4   0.06]
[-0.64 -0.17]
[-0.27  0.11]
[-0.27  0.11]
[-0.3  -0.14]
[-0.21  0.27]
[-0.01  0.49]
[-0.04  0.62]
[-0.03  0.45]

得到的D‘T如下:

[-0.2  -0.61 -0.46 -0.54 -0.28 -0.   -0.01 -0.02 -0.08]
[-0.06  0.17 -0.13 -0.23  0.11  0.19  0.44  0.62  0.53]

S’如下:

[[ 3.34        0.    ]
 [ 0.          2.54  ]]

最后还原得到X‘如下:

[ 0.16  0.4   0.38  0.47  0.18 -0.05 -0.12 -0.16 -0.09]
[ 0.14  0.37  0.33  0.4   0.16 -0.03 -0.07 -0.1  -0.04]
[ 0.15  0.51  0.36  0.41  0.24  0.02  0.06  0.09  0.12]
[ 0.26  0.84  0.61  0.7   0.39  0.03  0.08  0.12  0.19]
[ 0.45  1.23  1.05  1.27  0.56 -0.07 -0.15 -0.21 -0.05]
[ 0.16  0.58  0.38  0.42  0.28  0.06  0.13  0.19  0.22]
[ 0.16  0.58  0.38  0.42  0.28  0.06  0.13  0.19  0.22]
[ 0.22  0.55  0.51  0.63  0.24 -0.07 -0.14 -0.2  -0.11]
[ 0.1   0.53  0.23  0.21  0.27  0.14  0.31  0.44  0.42]
[-0.06  0.23 -0.14 -0.27  0.14  0.24  0.55  0.77  0.66]
[-0.06  0.34 -0.15 -0.3   0.2   0.31  0.69  0.98  0.85]
[-0.04  0.25 -0.1  -0.21  0.15  0.22  0.5   0.71  0.62]

还原后的X’与X差别很大,这是因为我们认为之前X存在很大的噪音,X’是对X处理过同义词和多义词后的结果。

在查询时,对与每个给定的查询,我们根据这个查询中包含的单词(Xq)构造一个伪文档:Dq=XqTS-1,然后该伪文档和D’中的每一行计算相似度(余弦相似度)来得到和给定查询最相似的文档。

(此处参考:http://www.cnblogs.com/kemaswill/)

三、 PLSI

1. Model引入:

PLSI是一个生成模型,它同时产生文档d和文档中包含的词w,以及文档的话题z(隐变量)。

下图示意了PLSI的生成过程:

首先从语料库中以P(d)的概率选择一篇文档d,然后从文档d中以P(z|d)的概率选择文档所包含的话题z,对于话题z,以P(w|z)的概率从词表中选择话题z包含的词w。在话题模型中,单词-文档矩阵被分解成为两个矩阵:一个话题矩阵Φ和一个文档矩阵Θ。

2. PLSI的应用介绍

这样的分解方式,可以有很多应用,中间的隐变量(话题)在不同的场景下可以有不同的理解:

以上这个例子中,将隐变量(话题)理解为客户的Latent Profile,根据用户的Latent Profile可以知道什么样的客户喜欢什么样的Product。这样可以用来为客户推荐新的Product。

再比如,对于文档而言,我们可以将文档-单词矩阵X表示成文档-话题矩阵V(用话题来表示文档),以及话题-单词矩阵U(用单词来表示话题)。

3. Maxium Likelihood

为了理解PLSI模型,我们首先介绍一下Maxium Likelihood:

我们知道,很多的概率分布函数都是由一些参数所控制着,例如,对于正态分布(X~N(μ,σ^))有均值和方差两个参数控制,当我们知道参数的时候,我们就知道了随机变量X的分布情况。假如我们有了一个从某分布产生的数据集X={x1, x2, ..., xn},但是我们不知道分布的参数,那么我们可以假定,这个参数最有可能是使得产生数据集X的概率最大的参数。假定我们已经知道这个参数,那么产生数据集X的概率可以用下面这个式子来表示:

注:a、此处假定数据集中的每个样本都是独立同分布的;b、实际上这个式子是概率的对数形式——log-likelihood。

有了关于数据集X的概率的表达式,我们寻求使这个概率最大的参数Θ*,在参数Θ取这个Θ*时,概率L最大。那我们有理由认为,Θ很有可能就是我们求得的Θ*.

4. PLSI的推导

依据Maxium Likelihood的原理,我们按照PLSI的生成模型来计算已知文档的log-likelihood.

以上的Θ即我们这个生成模型中控制所有概率分布的位置参数,我们得到likelihood的表达式以后,通过最大化likelihood来求解Θ的值。

在求解使likelihood最大的Θ的值的过程中,我们用到了Jensen不等式。Jensen不等式的直观理解如下图所示:

设随机变量X以及一个凸函数f,对于随机变量f(X)的期望值E[f(x)]大于或者等于X的期望值EX对应的函数值f(EX).等号成立当且仅当X = EX,即X是一个常量

直接求解L是比较困难的,我们可以通过不断迭代,每次寻求一个L的下界(lower-bound),然后不断优化这个lower-bound的值,使其逼近最优值。

按照上面的思路,我们来推导PLSI:

我们首先定义

把之前求得的L应用Jensen不等式计算一个Lower-bound

得到lower-bound的表达式以后,我们用拉格朗日乘子法来求解未知参数。

E-Step:

a、 求解:P(w|z)

由于ΣP(w|z) = 1,所以采用拉格朗日乘子法以后,我们将得到的拉格朗日表达式对P(w|z)求导,得到下式

解得:

由于ΣP(w|z) = 1, 我们可以得到:

b、 求解P(d|z): 同a,我们求得表达式如下

c、 求解P(z)

由于条件ΣP(z) = 1,我们同样采用拉格朗日乘子法,

求解得到:

由于条件ΣP(z) = 1,我们得到:

M-Step:

最终迭代更新的方程为:

5. PLSI算法设计:

注:初始化的时候,几个待求的未知参数可以设置为随机的值,只要满足所有概率的总和为1即可。

Topic Model之Probabilistic Latent Semantic Indexing(PLSI/PLSA)

时间: 2024-08-28 21:50:21

Topic Model之Probabilistic Latent Semantic Indexing(PLSI/PLSA)的相关文章

主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis)

上一篇总结了潜在语义分析(Latent Semantic Analysis, LSA),LSA主要使用了线性代数中奇异值分解的方法,但是并没有严格的概率推导,由于文本文档的维度往往很高,如果在主题聚类中单纯的使用奇异值分解计算复杂度会很高,使用概率推导可以使用一些优化迭代算法来求解. Thomas Hofmann 于1998年根据似然原理定义了生成模型并由此提出了概率潜在语义分析模型(Probabilistic Latent Semantic Analysis),简称PLSA. PLSA属于概率

PLSA(Probabilistic Latent Semantic Analysis)模型

对于上次说的LSA模型,它能解决多个单词一个意义,但是不能解决多个意义一个单词,就是多义词的问题,而PLSA模型能较好的解决这个问题,首先说下,这个模型的假设: 1 假设生成一个单词的过程是这样的:首先选择一篇文章di,然后再次基础上选择一个潜变量zk(可以理解为主题),最后在此基础上再在生成一个单词.如果p(di,wj)表示第i个文本中有第j个单词的概率,根据假设有: 2 另外一个非常重要的假设是,单词wj和文本di是基于潜变量条件独立的,即: 与LSA模型相似,我们首先得到了一个加权词频矩阵

主题模型之潜在语义分析(Latent Semantic Analysis)

主题模型(Topic Models)是一套试图在大量文档中发现潜在主题结构的机器学习模型,主题模型通过分析文本中的词来发现文档中的主题.主题之间的联系方式和主题的发展.通过主题模型可以使我们组织和总结无法人工标注的海量电子文档.较早的主题模型有混合语言模型(Mixture of Unigram),潜在语义索引(Lantent Semantic Index,LSI),概率潜在语义索引(Probabilistic Latent Semantic Indexing,PLSI).主题模型中文档是由主题组

Latent semantic analysis note(LSA)

1 LSA Introduction LSA(latent semantic analysis)潜在语义分析,也被称为LSI(latent semantic index),是Scott Deerwester, Susan T. Dumais等人在1990年提出来的一种新的索引和检索方法.该方法和传统向量空间模型(vector space model)一样使用向量来表示词(terms)和文档(documents),并通过向量间的关系(如夹角)来判断词及文档间的关系:而不同的是,LSA将词和文档映射

潜在语义分析Latent semantic analysis note(LSA)原理及代码实现

文章参考:http://blog.sina.com.cn/s/blog_62a9902f0101cjl3.html Latent Semantic Analysis (LSA)也被叫做Latent Semantic Indexing(LSI),从字面上的意思理解就是通过分析文档去发现这些文档中潜在的意思和概念.假设每个词仅表示一个概念,并且每个概念仅仅被一个词所描述,LSA将非常简单(从词到概念存在一个简单的映射关系) 不幸的是,这个问题并没有如此简单,因为存在不同的词表示同一个意思(同义词),

Latent Semantic Analysis(LSA)

背景:什么是LSA? Latent Semantic Analysis(LSA)中文翻译为潜语义分析,也被叫做Latent Semantic Indexing ( LSI ).意思是指通过分析一堆(不止一个)文档去发现这些文档中潜在的意思和概念,什么叫潜在的意思?我第一次看到这个解释,直接懵逼.其实就是发现文档的中心主题吧?假设每个词仅表示一个概念,并且每个概念仅仅被一个词所描述,LSA将非常简单(从词到概念存在一个简单的映射关系). 根据常识我们知道两个很常见的语言现象:1. 存在不同的词表示

潜在语义分析Latent semantic analysis note(LSA)原理及代码

文章引用:http://blog.sina.com.cn/s/blog_62a9902f0101cjl3.html Latent Semantic Analysis (LSA)也被称为Latent Semantic Indexing(LSI),理解就是通过分析文档去发现这些文档中潜在的意思和概念. 如果每一个词仅表示一个概念.而且每一个概念只被一个词所描写叙述.LSA将很easy(从词到概念存在一个简单的映射关系) 不幸的是,这个问题并没有如此简单.由于存在不同的词表示同一个意思(同义词).一个

【转】基于LDA的Topic Model变形

转载自wentingtu 基于LDA的Topic Model变形最近几年来,随着LDA的产生和发展,涌现出了一批搞Topic Model的牛人.我主要关注了下面这位大牛和他的学生:David M. BleiLDA的创始者,04年博士毕业.一篇关于Topic Model的博士论文充分体现其精深的数学概率功底:而其自己实现的LDA又可体现其不俗的编程能力.说人无用,有论文为证: J. Chang and D. Blei. Relational Topic Models for Document Ne

Probability Latent Semantic Analysis (PLSA) 模型 学习笔记

Probability Latent Semantic Analysis (PLSA) 模型 学习笔记 PLSA是前面LSA的兄弟版,相比于LSA而言,PLSA定义了概率模型,而且每个变量以及相应的概率分布和条件概率分布都有明确的物理解释了.这篇博文我们分三部分来说PLSA:基本思想,EM算法推导,以及优缺点分析. 1.  PLSA的基本思想 PLSA是一种主题模型topic model,是针对文本中隐含的主题来建模的方法.PLSA就是给定了文档d之后,需要以一定的概率选择与文档相对应的主题z,