您的位置:首页 > 其它

LDA在资讯推荐的应用

2016-10-23 22:51 357 查看


项目背景需求

最初始公司想在已有的产品当中加上资讯模块来提高用户的活跃和在线停留时长。这就需要推送给用户感兴趣的资讯,而用户的用户画像已经保存了用户的兴趣特征,所以需要提取资讯的特征,用于用户的个性化推荐。

如何提取资讯的特征或者说对资讯进行简单的分类? 刚开始想到svm等一些常用的分类方法,但由于采集到的资讯也不知道有哪些分类,所以这种方法并不适合。想到了无监督的聚类的方法,因为自身产品的特性影响,所采集到的资讯数据,和今日头条等产品的传统资讯内容有所差异,一词多义的情况较多,聚类的方法虽然可以做,但需要指定类目,再加上聚类对多语义的情况效果并不好,因此方法也并没有选择。后来查了腾讯等其他公司,看了他们在使用LDA在做相关的东西,选择该方法去尝试提取资讯特征。

LDA理论简介

该篇博客只是对LDA做简要介绍,其中涉及到的推导过程会在后面抽时间专门写篇博文或者参考Blei, David M的论文和《LDA数学八卦》,后面给出一些参考资料.
1. 基础数学概念和结论

二项分布

二项分布是从伯努利分布推进的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,非正即负。而二项分布即重复n次的伯努利试验,概率密度函数



多项分布(二项分布扩展到多维的情况)

多项分布是指单次试验中的随机变量的取值不再是0-1的,而是有多种离散值可能(1,2,3…,k) ,

概率密度函数为:



Beta分布

Beta分布是一个作为伯努利分布和二项式分布的共轭先验分布的密度函数 ,它是一个连续分布,由于它描述概率p的分布,因此其取值范围为0到1



Dirichlet分布(beta分布在高维度上的推广)



另外一种表示方式:



共轭先验分布

某观测数据服从概率分布P(θ),给定若干样本x,考虑以下几个问题:

(1)
可否根据新观测数据x,更新参数θ

(2)
根据新给定的样本在多大程度改变参数θ

为了重新估计θ,在给定的样本x下参数θ的新概率分布,即P(θ|x),给定样本x下,P(x)是可观测出来,是已知的。根据贝叶斯公式可知:



如果后验概率p(θ|x)和先验概率p(θ)满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,
同时,先验分布叫做似然函数的共轭先验分布

结论

1).如果

,其均值(期望)可以用

来估计

2).Beta分布和二项分布是共轭分布,
针对观测到的数据符合二项分布,则参数的先验分布和后验分布都是Beta分布:

3).Dirichlet分布和多项分布是共轭分布,
针对观测到的数据符合多项分布,则参数的先验分布和后验分布都是Dirichlet 分布 :



4).文本模型中,document-topic和topic-word都服从Multinomial分布,其先验分布是Dirichlet分布,
该结论是主题模型的理论基础

2. 什么是主题模型 (Topic Model)?

主题模型旨在文档集合中找到一种结构。学习到这种“结构”之后,一个主题模型能回答以下这样的问题:X文章讨论的是什么?X文章和Y文章有多相似?如果我对Z文章感兴趣,我应该先读哪些文章?

主题模型的思想

一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。

对于要生成的一篇文档,它里面的每个词语出现的概率为:



对应的矩阵为:



主题模型就是通过计算各个文档中每个单词的词频得到左边的”文档-词语”矩阵,学习出右边两个矩阵

3. 主题模型是如何生成一篇文档?

为了更好的说明各种主题模型是如何生成一篇文档,先给出如下变量说明:

1).

表示词, V表示所有单词的个数

2).

表示主题,k表示主题个数 (预先给定,固定值)

3).

表示语料库,M是预料库中文档数

4).

表示文档,N是一篇文档中词数(随机变量)

Unigram
model



图1 Unigram Model 模型图



这种方法通过训练语料获得一个词的概率分布函数,然后根据这个概率分布函数每次生成一个词,一篇包含N个词的文档wn,需要使用这个方法N次,要生成M个这样的文档需要使用这个方法M次生成M个文档。p(w)是词服从的Multinomial分布的参数,由观察到的文本中出现的词学习得到,表示文本中出现每个词的概率。

Mixture of unigrams model

unigram模型的方法的缺点就是生成的文本没有主题,过于简单。而Mixture
of unigrams Model为了解决这个问题,引入了单主题。



图2 Mixture of unigrams model



z表示一个主题,p(z)表示主题的概率分布,z通过p(z)按概率产生;p(w|z)表示给定z时w的分布,可以看成一个k×V的矩阵,k为主题的个数,V为单词的个数,每行表示这个主题对应的单词的概率分布,即主题z所包含的各个单词的概率,通过这个概率分布按一定概率生成每个单词

Probabilistic Latent Semantic Analysis (PLSA),概率隐语义模型

Mixture of unigrams model模型的方法的缺点就是只允许一个文档只有一个主题,这个假设在实际的应用场景中基本上不成立,大多数的文档都会多个主题。PLSA引入了多主题,即文档的主题也是按照一定概率得到的。



图3 PLSA模型



按照上述方式,文档生成了,那该怎么得到主题分布呢??

上述的生成文档的方法,可简化为下图概率流程:





如何估计数θ?

EM算法 (Expectation-maximization algorithm),具体推导参考其他资料,后续抽时间会写一个专门的EM算法的博客
EM算法思想:



步骤如下:







Latent Dirichlet Allocation

LDA是在pLSA的基础上加层贝叶斯框架,需要考虑历史先验经验。





LDA的参数推导采用算法:变分EM(精确)
和 Gibbs采样(近似)

4. 在资讯推荐上的应用

LDA的输出为主题-词向量的概率分布矩阵和文档-主题向量的概率分布矩阵,根据一定规则选取几个概率较大的主题作为资讯的特征,并和用户画像的用户兴趣标签建立映射关系,根据资讯特征的分值以及点击反馈的来进行个性化推荐,整个推荐的流程如下:



5. 问题和总结
在用LDA做训练和推荐的过程中也遇到一些问题,踩过很多坑,其中主要有下面三个,并给出了当时的解决方案,不一定是最好的解决方案,仅供参考,如有其他比较好的方法,欢迎交流讨论。

问题一:分词效果不好、高频词、干扰词太多,影响主题的词分布

解决方法:

1) 加入产品相关的特征词以及搜狗词库等扩充分词词库,在进行参数调优过程出现的干扰词加入到停用词典中过滤

2) 计算tf和df时过滤指定阈值的高频词和低频词,采用TF-IDF计算词的权重,选取TF-IDF均值较大的5000个词作为LDA的词典,这样也可以过滤一些低频词,尤其是针对训练集比较大,词库较大的情况一定要采用TF-IDF进行过滤,这也是Blei,
David M原始论文推荐的方法

问题二:计算出的文章主题效果较差,和文章不太相关

解决方法:

1) 如果主题得分最大值和第二大值相差较多,则只保留最大得分主题

2) 选择N个主题, N小于M(主题总数),计算其得分值得方差,若方差较小,则主题之间的区分度较低,可将其挑出进行人工处理。

问题三:对于长度较短和图片较多,主题不明显的文章,效果比较差

解决方法:

1) 问题二的解决方法可以处理一部分,另外目前打算和分类器或者有监督的主题模型解决,有其他比较好的方案,求告知。

总结:

LDA的应用场景主要有:

1) 文本聚类/分类、语义分析

主题是聚类中心,文章和多个类簇(主题)关联

2) 特征生成(分类算法的输入)

LDA可以生成特征供其他机器学习算法使用;LDA为每一篇文章推断一个主题分布;K个主题即是K个数值特征,
用于逻辑回归、决策树、svm等分类算法的预测任务

3) 降维

每篇文章在主题上的分布提供了一个文章的简洁总结

4) 推荐系统

将文章主题作为用户的特征

最后,给出在训练和实验的一些注意的点吧,不一定对,要具体场景具体对待:

1).分词效果对主题的分布的影响比较大,尤其是干扰词,需要多实验几次,找到加到停用词典中

2).语料库数据量一定要大,尽可能的能模拟出需要的应用场景

3).不太适合短文本的主题建模

由于自己能力水平有限,这篇博文并没有特别多的干货,仅仅是自己对前段时间工作的总结,对于一些公式,
自己懒得写了,就直接截图了,对于侵犯其他作者利益的,特别抱歉,有什么错误不对之处,
还请各位大神批评指正,也欢迎各位一起交流讨论,共同学习进步。

6. 参考资料

1). Blei, David M.; Ng, Andrew Y.; Jordan, Michael I. Latent
Dirichlet allocation(LDA原始论文):

http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf

2). LDA数学八卦, http://www.flickering.cn/tag/lda/

3). July博客http://blog.csdn.net/v_july_v/article/details/41209515

4). Blei. Probabilistic Topic Models:http://www.cs.princeton.edu/~blei/papers/Blei2012.pdf

一网友的翻译:http://www.cnblogs.com/siegfang/archive/2013/01/30/2882391.html

5). LDA的相关论文、工具库:http://site.douban.com/204776/widget/notes/12599608/note/287085506/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LDA 个性化推荐 资讯