zoukankan      html  css  js  c++  java
  • 【机器学习】主题模型(二):pLSA和LDA

      -----pLSA概率潜在语义分析、LDA潜在狄瑞雷克模型


    一、pLSA(概率潜在语义分析)

      pLSA:    -------过拟合问题,就是求D, Z, W

      pLSA由LSA发展过来,而早期LSA的实现主要是通过SVD分解。pLSA的模型图如下:


      公式中的意义如下:


      具体可以参考2010龙星计划:机器学习中对应的主题模型那一讲

    *****************************************************************************************************************

            在论文《GoogleNews Personalization Scalable Online CF》一文中提级针对用户聚类,利用相似用户性信息计算喜欢的news。其中包含min-hash以及plsi,plsi是model-based 推荐算法,属于topic(aspect) model,其在NLP领域中用途很大。

    引入:

            在文本挖掘时,计算文档相似性是很基础的操作,通常,对文本进行分词,构建VSM,通过jaccard或者cosin计算距离或者相似性,这是基于corpus的思路,仅仅考虑词组,并未考虑文本的语义信息。针对下面情况,基于cropus很难处理:

            *如果时间回到2006年,马云和杨致远的手还会握在一起吗

            *阿里巴巴集团和雅虎就股权回购一事签署了最终协议

            如果采用基于corpus的jaccard距离等算法,那么这两个文本的完全不相关,但是事实上,马云和阿里巴巴集团,杨致远和雅虎有着密切的联系,从语义上看,两者都和“阿里巴巴"有关系。

    此外,另一个case:

            *富士苹果真好,赶快买

            *苹果四代真好,赶快买

            从corpus上来看,两者非常相似,但是事实上,2个句子从语义上来讲,没有任何关系,一个是”水果“另一个是”手机"。

            通过上面的例子,差不多也看出来topic model是什么以及解决什么问题。

    概念:

            topic model是针对文本隐含主题的建模方法,针对第一个case,马云对应的主题是阿里巴巴,阿里巴巴集团也隐含阿里巴巴主题,这样两个文本的主题匹配上,认为他们是相关的,针对第二个,分别针对水果以及手机主题,我们认为他们是不相关的。

            究竟什么是主题?[接下来参考baidu搜索研发部官方博客中对语义主题的定义]主题就是一个概念、一个方面。它表现为一系列相关的词,能够代表这个主题。比如如果是阿里巴巴主题,那么马云“”电子商务等词会很高的频率出现,而设计到腾讯主题,那么马化腾”“游戏”“QQ”会以较高的频率出现。如果用数学来描述一下的话,主题就是词汇表上词语的条件概率分布,与主题密切相关的词,条件概率p(w|z)越大。主题就像一个桶,装了出现频率很高的词语,这些词语和主题有很强的相关性,或者说这些词语定义了这个主题。同时,一个词语,可能来自于这个桶,也可能来自那个桶,比如电子商务可以来自阿里巴巴主题,也可以来自京东主题,所以一段文字往往包含多个主题,也就是说,一段文字不只有一个主题。

            上面介绍了主题的概念,我们最为关心的是如何得到这些主题?这就是topic model要解决的问题。

    define: d表示文档,w表示词语,z表示隐含的主题

                             

            其中 p(w|d)表示w在文档d中出现的概率,针对训练语料,对文本进行分词,w的频度除以文档所有词语的频度和,可以求出,对于未知数据,model用来计算该value.

            p(w|z)表示在给定主题情况下词语的出现的概率是多少,刻画词语和主题的相关程度。

            p(z|d)表示文档中每个主题出现的概率

    所以主题模型就是 利用大量已知的p(w|d)词语-文档信息,训练出来主题-文档p(z|d)以及词语-主题p(w|z)


    plsa模型:

            plsa是一种topic model,它属于生成模型(不是很理解),给定文档d后,以一定的概率选择d对应的主题z,然后以一定概率选择z中的词语w.

            plsa提供了一种模型求解的方法,采用之前介绍的EM算法,EM算法在之前已经介绍,现在不作处理,直接利用EM信息对topic model进行求解。

     

    其中Q是z的分布函数,表示在给定参数的情况下(w,d),z的后验概率。

            根据EM算法,我们最后求解:

    E-step :

            

    M-step:

             

    s.t.

            

    符合上面约束的情况下,求解最大值,

             

    其中θ代表期望估计的参数,p(wj|zk),p(zk|di),λz,λd

    L(θ)的最大值,需要对各个参数求偏导,令其等于0,

            首先求解p(wj|zk)对其求导后,

            

            已知有约束,将带入可以求出:

                          

            最后可以求得参数:

                  

    基于同样的方式,求p(zk|di),求偏导后有:

            

    利用约束,可以求得:

            

            EM是迭代算法,所以针对 p(zk|dip(wj|zk)都需要给出一个初始值,而Q(zk|di,wj) 表示在参数已知(上一轮迭代结果)时Z的分布,所以每次迭代式Q(zk|di,wj) 是利用之前的结果直接算出来。


    主题模型的用途:

    1.计算文本的相似性,考虑到文本语义,更好的刻画文本相似性,避免多义词,同义词的影响

    2.文本聚类,用户聚类(RS)

    3.去除噪音,只保留最重要的主题,更好的刻画文档


    plsa在推荐系统中的应用:

            上面介绍的是文档和词语的关系,映射到推荐系统中,表示为用户和ITEM的关系,ITEM可以使网,视频等。

            这样可以看出来描述的完全是同样的问题,求解p(s|u)=∑zp(s|z)p(z|u),模型参数为p(s|z)?p(z|u),里面上面的推导过程可以求得。

    具体的可以参考:

    Unsupervised learning by probabilisticlatent semantic analysis

    Latent Semantic Models for collaborativefiltering

    Google News Personalization Scalable OnlineCF

    二、LDA(潜在狄瑞雷克模型)

      LDA:  主题模型,概率图如下:

      和pLSA不同的是LDA中假设了很多先验分布(Dirichlet,且一般参数的先验分布都假设为Dirichlet分布,其原因是共轭分布时先验概率后验概率的形式相同。


  • 相关阅读:
    Centos7 安装redis及简单使用
    Python 网络编程之网络协议(未完待续)
    Docker 安装(centos7下)
    Centos7 下vmware NAT模式配置网络连接与DNS
    Docker 初识
    八月份第五周学习总结
    八月份第四周学习总结
    java 学生信息管理
    八月份第三周学习总结
    八月份第一周学习总结
  • 原文地址:https://www.cnblogs.com/DianaCody/p/5425626.html
Copyright © 2011-2022 走看看