机器学习主题模型之LSA、pLSA、NMF

版权声明:个人学习笔记,参考多方资料,仅用于个人复习使用,请勿用于商业用途 https://blog.csdn.net/liuy9803/article/details/81029355

 

一、主题模型Topic Model)

        判断文档相似性的传统方法是通过查看两个文档共同出现的词项(terms,不重复的words)有多少,如TF-IDF等。但这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的词项很少甚至没有,但两个文档是相似的。

        主题模型是用来在大量文档中发现潜在主题的一种统计模型。如果一篇文章有一个中心思想,那么一些特定词语会出现的比较频繁;真实情况下,一个文档中通常包含多个主题,而且每个主题所占的比例各不相同,则与各个主题相关的关键字出现的次数与主题之间的比例有关。主题模型能够自动分析文档(document),不计顺序地统计文档内的单词(word),根据统计的信息判断该文档包含的主题(topic)以及各个主题所占比例。

        主题模型是一种生成式有向图模型,主题模型中文档是由主题组成的,而主题是单词的一个概率分布;即每个单词都是通过“文档以一定的概率选择某个主题,再从这个主题中以一定的概率选择某个单词”这样一个过程得到的。

                 

        主题模型克服了传统信息检索中文档相似度计算方法的缺点,并能够在海量数据中找出文字间的语义主题,在自然语言处理、信息检索等领域有广泛的应用。

 

二、潜在语义分析

        潜在语义分析LSA/LSI(Latent Semantic Analysis/Indexing)是一种NLP技术,通过将高维向量映射到潜在语义Latent Semantic空间,提取与文档和词项有关的concepts,从而分析文档和词项之间的关系。LSA基于奇异值分解SVD的方法得到文档的主题,解决了传统向量空间模型无法处理一词多义synonymy或多次同义polysemy的问题。语义分布的基本假设是:Linguistic items with similar distributions have similar meanings.

        SVD分解:

                 

        假设有m个输入文档,每个文档有n个词项,则可以组成一个term-document的稀疏矩阵A∈Rm*n,它的行对应词项、列对应文档;Aij对应第i个文档的第j个词项,可以通过TF-IDF、词项在文档中出现的次数等方式确定矩阵每个元素的权重作为计算输入。经过SVD分解后将奇异值从大到小排列,取前k个最大的奇异值作为对原矩阵A的近似表示,Σ中的每个奇异值代表了潜在语义的重要度。

        通过一次SVD分解就可以得到主题模型,同时解决语义的问题,但是计算得到的矩阵U、V中经常存在负数;可以通过计算词项(U的行)、文档(V的行or VT的列)之间的余弦相似度得到词项与词项、文档与文档之间的相似度;还可以对U、V中的词项和文档直接进行聚类,提取语义级别的近义词集合,便于搜索且减少数据存储量。

        LSA适用于较小规模数据,可用于文档分类/聚类、同义词/多义词检索、跨语言搜索;SVD的计算很耗时,且潜在语义的数量k的选择对结果的影响非常大;LSA的原理简单但得到的不是概率模型,缺乏统计基础,矩阵中的负值难以解释,无法对应成现实中的概念。

 

三、概率潜在语义分析

        pLSA是基于双模式和共现的数据分析方法延伸的经典统计学方法。LSA是以共现表(矩阵w,d)的奇异值分解形式实现的,而pLSA是基于派生自LCM的混合矩阵分解,属于概率图模型中的生成模型,该类模型还有一元模型(Unigram Model)、混合一元模型等。

                 

        一元模型假设每篇文档中的词出现的次数服从多项式分布;而pLSA模型中引入了隐变量z作为潜在语义,并使用EM算法对潜在语义模型进行拟合;设文档d总数为i∈M、潜在语义z总数为k∈K,单词总数w为j∈N,文档-单词的共现频率矩阵N≡(nij),n(di,wj)表示单词wj在文档di中出现的频率。

                

        pLSA求解步骤如下

            (1)初始化:

                    令P(zk)=1/K,P(zk|di)和P(wj|zk)分别赋予一个0到1 之间的随机数作为初始值;

            (2)E步骤计算任何一个(di,wj)对产生潜在语义zk的后验概率:

                    

            (3)M步根据公式对模型重新估计:

                    

            (4)似然估计:

                    使用新的P(zk)、P(di|zk)、P(wj|zk)计算出P(di,wj)的新值并代入似然函数L;

                    反复迭代直到L的期望值增加量小于设定阈值时为止:

                   

        通过pLSA算法得到潜在语义空间Z={z1,z2,...,zK},由潜在语义的实际意义,概率值越大越表明其具有共性,与其他文档的区分度就越小;因此具有较大概率值的潜在语义难以找到文档真正要表达的语义,而概率较小的潜在语义则包含了丰富的语义信息。

 

四、非负矩阵分解NMF

        NMF(Non-negative Matrix Factorization)是一种将矩阵分解为两个非负矩阵的分解方式,分解速度较SVD快,常用于矩阵分解、降维、主题模型、语音/图像识别等应用场景。

                V≈WH

        其中V∈Rn*m为文档-单词矩阵,W∈Rn*r体现文档和主题的概率相关度,H∈Rr*m体现单词和主题的概率相关度。

                

        NMF的目的是找到两个矩阵W、H,使它们的乘积与原矩阵误差尽可能小,度量方法有欧式距离、KL散度(未考虑W或H为零的情况及限制条件)等:

                

                其中|| · ||FFrobenius norm,即2范数

        NMF的目标函数中共包含了n*r+r*m个参数,可以使用梯度下降法、拟牛顿法、坐标轴下降法等进行求解。

                

        为了防止过拟合,可以在NMF的目标函数基础上添加L1、L2正则项:

                

                其中λ为L1、L2正则化参数,ρ为L1占总正则比

        如果想加入L1-norm,那么会导致目标函数不连续,就不能使用梯度下降和拟牛顿法求解了,此时可以使用坐标轴下降法。


        NMF scikit-learn用法

         

        (1)n_components:主题数K,需要根据分析文本主题的先验知识选取,可以多选择几个值进行交叉验证。

        (2)init:选择W、H初值的方法,默认是nndsvd或random;当对收敛速度不满意时才需要关注这个值。

        (3)solver:求解算法,默认是坐标轴下降法cd,还可以选择乘性更新算法mu。

        (4)beta_loss:衡量V与WH之间的损失值,可以输入字符串或浮点数,默认是’frobenius’or 2),还可以选择’kullback-leibler’or 1)或’itakura-saito’

        (5)tol:停止条件的阈值,默认为1e-4

        (6)alpha:正则化参数ɑ,默认是0即没有正则项;可以由一个比较小的值开始,参考Andrew Ng的调参方法进行设置。

        (7)l1_ratio:正则项混合参数∈[0,1],在ɑ>0时有效,需要调参;默认为0即只有L2-norm,如果L2的效果不好则再加上L1-norm。


五、坐标轴下降法

        CD(Coordinate Descent)一种非梯度优化算法,每次迭代时在当前点处沿着一个坐标方向进行一维线性搜索line search(固定其他维度的坐标方向),求得函数的局部极小值。CD的一个迭代过程为计算所有坐标轴的一维搜索,相当于GD计算负梯度的迭代过程;CD与GD每一轮迭代都需要O(mn)的计算量,其中m为样本数,n为系数向量的维度。

                 

        CD的数学依据是:对于一个可微凸函数,如果在某一点使得它在每一个坐标轴上都能取得最小值,那么这个点就是函数的全局最小值点。CD优化的方向从算法的一开始就确定了,算法步骤为:

        (1)初始化x0x0=(x10,...,xn0)

        (2)对于第k+1轮迭代,由于第k轮迭代xk已算出,那么xk+1的第i维度为:

                

                在求解每个参数局部最优解时可以用求导的方式来求解;

                这样就由x0求得函数F(x)的局部最优解,获取迭代序列x0,x1,x2,... 由一维线性搜索可知:F(x0)≥F(x1)≥F(x2)≥...

        (3)如果xkxk+1在各个维度上的变化都比较小,就停止迭代;否则继续第k+2轮迭代。


参考资料

《机器学习_周志华》、Wikipedia:Latent_semantic_analysis、Coordinate descent、刘建平的博客、百度文库-基于概率潜在语义分析的图像场景分类

没有更多推荐了,返回首页