-----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分布,其原因是共轭分布时先验概率和后验概率的形式相同。

【机器学习】主题模型(二):pLSA和LDA的更多相关文章

  1. 我是这样一步步理解--主题模型(Topic Model)、LDA

    1. LDA模型是什么 LDA可以分为以下5个步骤: 一个函数:gamma函数. 四个分布:二项分布.多项分布.beta分布.Dirichlet分布. 一个概念和一个理念:共轭先验和贝叶斯框架. 两个 ...

  2. LDA概率主题模型

    目录 LDA 主题模型 几个重要分布 模型 Unigram model Mixture of unigrams model PLSA模型 LDA 怎么确定LDA的topic个数? 如何用主题模型解决推 ...

  3. 理解 LDA 主题模型

    前言 gamma函数 0 整体把握LDA 1 gamma函数 beta分布 1 beta分布 2 Beta-Binomial 共轭 3 共轭先验分布 4 从beta分布推广到Dirichlet 分布 ...

  4. 通俗理解LDA主题模型

    通俗理解LDA主题模型 0 前言 印象中,最開始听说"LDA"这个名词,是缘于rickjin在2013年3月写的一个LDA科普系列,叫LDA数学八卦,我当时一直想看来着,记得还打印 ...

  5. 自然语言处理基础与实战(8)- 主题模型LDA理解与应用

    本文主要用于理解主题模型LDA(Latent Dirichlet Allocation)其背后的数学原理及其推导过程.本菇力求用简单的推理来论证LDA背后复杂的数学知识,苦于自身数学基础不够,因此文中 ...

  6. LDA( Latent Dirichlet Allocation)主题模型 学习报告

    1     问题描述 LDA由Blei, David M..Ng, Andrew Y..Jordan于2003年提出,是一种主题模型,它可以将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一 ...

  7. 通俗理解LDA主题模型(boss)

    0 前言 看完前面几篇简单的文章后,思路还是不清晰了,但是稍微理解了LDA,下面@Hcy开始详细进入boss篇.其中文章可以分为下述5个步骤: 一个函数:gamma函数 四个分布:二项分布.多项分布. ...

  8. NLP传统基础(2)---LDA主题模型---学习文档主题的概率分布(文本分类/聚类)

    一.简介 https://cloud.tencent.com/developer/article/1058777 1.LDA是一种主题模型 作用:可以将每篇文档的主题以概率分布的形式给出[给定一篇文档 ...

  9. 文本主题模型之潜在语义索引(LSI)

    在文本挖掘中,主题模型是比较特殊的一块,它的思想不同于我们常用的机器学习算法,因此这里我们需要专门来总结文本主题模型的算法.本文关注于潜在语义索引算法(LSI)的原理. 1. 文本主题模型的问题特点 ...

  10. 文本主题模型之非负矩阵分解(NMF)

    在文本主题模型之潜在语义索引(LSI)中,我们讲到LSI主题模型使用了奇异值分解,面临着高维度计算量太大的问题.这里我们就介绍另一种基于矩阵分解的主题模型:非负矩阵分解(NMF),它同样使用了矩阵分解 ...

随机推荐

  1. Python 3 mysql 简介安装

    Python 3 mysql 简介安装 一.数据库是什么 1.  什么是数据库(DataBase,简称DB) 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据 ...

  2. curl 监控web

    [root@rhel6 ~]# curl -I -s -w "%{http_code}\n" -o /dev/null http://127.0.0.1 [root@rhel6 ~ ...

  3. HTTP- 头部信息

    HTTP 头部信息由众多的头域组成,每个头域由一个域名,冒号(:)和域值三部分组成.域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在自每行开始处,使用至少一个空格或制表符. ...

  4. POJ 1258 Agri-Net(Prim算法)

    题意:n个农场,求把所有农场连接起来所需要最短的距离. 思路:prim算法 课本代码: //prim算法 #include<iostream> #include<stdio.h> ...

  5. windows目录create、isExsit、remove

    RemoveDirectoryA( __in LPCSTR lpPathName ); PathFileExistsA(LPCSTR pszPath); CreateDirectoryA(strDir ...

  6. 将jsp页面内容保存到excel(转)

    在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地.本篇就是通过export jsp to excel找到的. 原文地址:How to Export We ...

  7. BEC listen and translation exercise 38

    很高兴看到有这么多人想了解我们的体育设施.It's good to see that there are so many people wanting to find out about our sp ...

  8. nodejs stream基础知识

    分类 nodejs 的 stream 有四种: Readable:可读流 Writable: 可写流 Duplex:双工流 Transform:转换流 Readable // _read方法是从底层系 ...

  9. 《Effective C++》学习笔记(一)

    1.const成员函数不能更改成员变量 #include <bits/stdc++.h> using namespace std; class CtextBlock { public: s ...

  10. Hibernate - POJO 类和数据库的映射文件*.hbm.xml

    POJO 类和关系数据库之间的映射可以用一个XML文档来定义. 通过 POJO 类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对 ...