LFM(MF分解技术)、LSI(SVD分解)、PLSI(EM)、LDA
隐语义模型LFM和LSI,PLSI,LDA,Topic Model其实都属于隐含语义分析技术,是一类概念,他们在本质上是相通的,都是找出潜在的主题或分类。这些技术一开始都是在文本挖掘领域中提出来的,近些年它们也被不断应用到其他领域中,并得到了不错的应用效果。比如,在推荐系统中它能够基于用户的行为对item进行自动聚类,也就是把item划分到不同类别/主题,这些主题/类别可以理解为用户的兴趣。
主题模型:Topic Model
topic model是针对文本隐含主题的建模方法,针对第一个case,马云对应的主题是阿里巴巴,阿里巴巴集团也隐含阿里巴巴主题,这样两个文本的主题匹配上,认为他们是相关的,针对第二个,分别针对水果以及手机主题,我们认为他们是不相关的。
究竟什么是主题?主题就是一个概念、一个方面。它表现为一系列相关的词,能够代表这个主题。比如如果是”阿里巴巴“主题,那么”马云“”电子商务“等词会很高的频率出现,而设计到”腾讯“主题,那么“马化腾”“游戏”“QQ”会以较高的频率出现。如果用数学来描述一下的话,主题就是词汇表上词语的条件概率分布,与主题密切相关的词,条件概率p(w|z)越大。主题就像一个桶,装了出现频率很高的词语,这些词语和主题有很强的相关性,或者说这些词语定义了这个主题。同时,一个词语,可能来自于这个桶,也可能来自那个桶,比如“电子商务”可以来自“阿里巴巴”主题,也可以来自“京东“主题,所以一段文字往往包含多个主题,也就是说,一段文字不只有一个主题。
上面介绍了主题的概念,我们最为关心的是如何得到这些主题?这就是topic model要解决的问题。
define: d表示文档,w表示词语,z表示隐含的主题。
p(w|d)=∑zp(w|z)p(z|d)
其中p(w|d)表示w在文档d中出现的概率,针对训练语料,对文本进行分词,w的频度除以文档所有词语的频度和,可以求出,对于未知数据,model用来计算该value.
p(w|z)表示在给定主题情况下词语的出现的概率是多少,刻画词语和主题的相关程度。
p(z|d)表示文档中每个主题出现的概率
所以主题模型就是 利用大量已知的p(w|d)词语-文档信息,训练出来主题-文档p(z|d)以及词语-主题p(w|z)。
主题模型的用途:
1.计算文本的相似性,考虑到文本语义,更好的刻画文本相似性,避免多义词,同义词的影响
2.文本聚类,用户聚类(RS)
3.去除噪音,只保留最重要的主题,更好的刻画文档
1. LFM:隐语义模型,MF分解
最终的用户评分矩阵(混淆矩阵)=P* Q
P矩阵代表了 user-class
Q矩阵代表了class-item
class:根据自动聚类算法获得几个类标签;
P、Q中的参数通过模型学习得到:
计算损失函数:随机梯度下降法,使得损失值最小;
参考文献:http://blog.csdn.net/harryhuang1990/article/details/99243772. LSI(LSA)模型:基于SVD分解
LSI: Latent Semantic Analysis (Latent Semantic Indexing)
背景:
传统的信息检索中:将单词作为特征,构造特征向量;计算查询单词与文档间的相似度;
但是没有考虑到语义、同义词等相关信息;
在基于单词的检索方法中,同义词会降低检索算法的召回率(Recall),而多义词的存在会降低检索系统的准确率(Precision)
我们希望找到一种模型,能够捕获到单词之间的相关性。如果两个单词之间有很强的相关性,那么当一个单词出现时,往往意味着另一个单词也应该出现(同义 词);反之,如果查询语句或者文档中的某个单词和其他单词的相关性都不大,那么这个词很可能表示的是另外一个意思(比如在讨论互联网的文章中,Apple 更可能指的是Apple公司,而不是水果) 。
LSA(LSI)使用SVD来对单词-文档矩阵进行分解。SVD可以看作是从单词-文档矩阵中发现不相关的索引变量(因子),将原来的数据映射到语义空间内。在单词-文档矩阵中不相似的两个文档,可能在语义空间内比较相似。
SVD,亦即奇异值分解,是对矩阵进行分解的一种方法,一个t*d维的矩阵(单词-文档矩阵)X,可以分解为T*S*DT, 其中T为t*m维矩阵,T中的每一列称为左奇异向量(left singular vector),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’与X差别很大,这是因为我们认为之前X存在很大的噪音,X’是对X处理过同义词和多义词后的结果。
在查询时,对与每个给定的查询q,我们根据这个查询中包含的单词(Xq)构造一个伪文档:Dq=XqTS-1,然后该伪文档和D’中的每一行计算相似度(余弦相似度)来得到和给定查询最相似的文档。
参考:http://www.cnblogs.com/kemaswill/archive/2013/04/17/3022100.html
3. PLSI:基于概率LSI
尽管基于SVD的LSA取得了一定的成功,但是其缺乏严谨的数理统计基础,而且SVD分解非常耗时。Hofmann在SIGIR'99上提出了基于概率统计的PLSA模型,并且用EM算法学习模型参数。PLSA的概率图模型如下:
参考文献:http://san-yun.iteye.com/blog/1966653
http://blog.csdn.net/yangliuy/article/details/8330640
3. LDA(推荐系统应用):
回顾:
主题模型就是 利用大量已知的p(w|d)词语-文档信息,训练出来主题-文档p(z|d)以及词语-主题p(w|z);在LDA模型中,主题-文档分布是α,词语-主题分布是β;
对于数据集D中的每个文档w,LDA假定了如下的生成过程:
LDA是一个三层的模型,α,β是全局超参数,采样一次即可。θd是文档级别的变量,每生成一个文档时采样一次。zn,wn是单词级别的变量,每生成一个单词时采样一次(1)选择一个N~Poisson(ϵ),N是该文档中单词的个数;
(2)选择一个θ~Dir(α),θ是主题分布所服从Dirichet(α)的参数;
(3)对于文档中的每一个词wn:
a.选择一个主题zn~Multinomial(θ);每个主题服从多项式分布;
b.在选定主题zn后,在该主题对应的词分布中选择一个单词wn,它的概率是p(w|zn,β)。wn~Multinomial(β);,
补充:
伯努利分布: 0-1分布;
二项分布:多个伯努利分布
多项式分布:有多个结果,伯努利分布的扩展
beta分布:来源于二项分布,是二项分布的共轭先验;x~U(0,1),随机采样后,排序之后的分布即为beta分布;
狄雷克类分布:多变量的bata分布
从Dirichet(α)中获得一篇文档的主题分布函数θ,作为先验分布;θ是文档级别的;
D:数据集D中包含M个文档,D=w1,w2,…,wM;w:每个文档中有N个单词,w=(w1,w2,...,wN),wn是文档词序列的第n个词;
z:z代表一个主题,是一个k维向量,k是主题个数,第k个主题可以表示为:zk=1,zj=0,k≠j,所以每个z是一个单位向量;
w:w代表一个词,是一个V维向量,V是总词典的大小,词典中第v个词可以表示为:wv=1,wu=0,u≠v,所以每个w都是一个单位向量;
α:是狄利克雷分布的参数,是我们要估计的参数;
β:是一个k*V的矩阵,k是主题个数,V是词典个数,β(i,j)代表主题zi中单词wj的概率,也就是说,β中存储的是主题-词分布,是我们要估计的参数。
概率模型图,我们可以得到如下概率公式:
θ服从多项式分布,我们最终获得一topic分布
给定α,β,根据文档生成的过程,可以得到,主题分布的参数θ,N个主题的集合z,N个单词的集合w,的联合分布:
N 个主题,N个单词 求得W的边缘分布目标:从给定的文档和word中,学习出一个topic分布模型,取对数似然:
wd是词语一篇文档的词语集合,有M篇文档算法如下:
3.1 Gamma函数
3.2 二项分布
3.3 Beta 分布
参考http://blog.csdn.net/happyer88/article/details/45936107
http://www.cnblogs.com/lixiaolun/p/4455764.html
http://blog.csdn.net/zhaoyin654/article/details/49153999
4. MF(矩阵分解一致)
http://blog.csdn.net/litoupu/article/details/16944359
网友评论