为什么能学出有效的主题|学习笔记

简介: 快速学习为什么能学出有效的主题

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践为什么能学出有效的主题】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15532


为什么能学出有效的主题

 

再强调一下,刚才那个规律有相同主题词经常同时出现的同一文档,不同主题的词只会同只会同时出现在少数文档。

继续使用上次课的卤肉饭例子:假设卤肉饭和小吃这两词咱们知道它都属于美食这个主题,假设这个算法比较聪明,把他们归到一个主题了,只要一个文档里出现美食这个主题,那么鹅饭和小吃出现的概率就会比较大。这样给了很多文档里头里头会会有相当一部分同时出现了卤肉饭和小吃。假设算法呢他比较笨。他把卤肉饭和小吃归到不同的主题了那么会出现什么情况?image.gif

一个文档想同时出现卤肉饭和小吃,那就必须美食和科技它都有一定比例。这两个主题在这个文档里都都有一定比例,它才能生成卤肉饭和小吃,这样的话,当一个文档既有美食又有科技,这种情况很少见了,所以说如果程序把这个卤和小吃归到不同主题,那有卤肉饭和小吃同时出现的概率就会比较小。

当我们实际观测上午饭和小吃同时出现的概率是比较大的。程序就会意识到这样是分错了,就会把他们同一个主题。所以质化概率的话就会把这个词就分到同一个主题了。

一个很明显的问题就是有一些形容词,比如像“的”这个词,同时会出现在“the”每个文档里。这样的话它意味着几乎所有词都同时出现在很多文档里。学到的主题里头每个主题都会包括形容词。不过这样也比较好处理,就是咱们可以把停用词过滤一下。

主题模型的优势:

image.gif首先它是一个严格的统计模型,给另一个文档就都可以算出来一个概率来,这样的话,优化的是概率,这个总优化过程是有理论、保证的。另外一个好处是它是个升式模型,它比较好扩展。如图2所示,右上角图形这个是主题模型一个图模型。表示不同变量之间的相互意外关系。我们可以再加一些新的变量,比如说作者作者的写作风格或者是当前情感。他都会影响当天的分布。这样的话我们就得到一些扩展的LDA的扩展模型。

前几年就是很多人用这种方法发表论文。但也被人嘲讽,总是说这个模型一个灌水的招数就是图模型加圈,就加一个变量再加一个圈。主题模型一个还有一个优势是时空复杂性。就时间和空间复杂度,它都是和文档长度成线性关系。所以比增加了100倍运行时间也增加100倍,计算规模是很容易上去了。

LDA因为它是贝叶斯版的pLSA,它有一些自己的额外的优势。就它在分布引入一些额外假设,doc-topic的分布和topic-word的分布经常是稀疏的,每个topic可能有只有可能几百个词它是重点,大部分词在里头的频率都是接近于零。现在有个合理的小数级上的性能会更有棒,因为大语料里也有不频繁的词,也有不频繁的topic。对他们来说就实际上还是小数剧,所以说性能会更好一些。

疑问:doc-topic是怎么生成的?

根据主题模型的假设,如果是于p(d,Z|θ)的话,它是个自由参数。没有任何的约束,就是怎样能够最大化文档概率,选什么参数好?

doc-topic是从一个Dirchlet先验里拿出来,实际上相当于给了不同的doc-topic分布以不同的概率。所以说学习的时候就会倾向于学概率大的分布。比如说我一个文章,一个词属于哪个主题,我觉得他就是属于某个主题,他好像不是什么随机生成的。至于说是随机抽出来的意思是说他那我不知道他是从哪抽取,属于哪个主题。但是如果我知道这个文档里头抽取,比如说台湾卤肉饭有台湾小吃这俩主题,他占的比例比较大的话,那比较大的可能性是属于台湾或者属于小吃和美食这个主题了。

LDA是贝斯版的pLSA,为什么在小数据集上更鲁棒?因为如果数据集比较小,我们学出来的doc-topic分的不是太好,比如有五个文档,每个文档有四个主题,就相当于这几个主题的不同的组合。最后学出来可能有两个主题混在一块混成一个主题,即学出来的主题实际上他可能是不同主题混杂起来,因为数比较少。他就不能有效的把这些主题分开。他只要最大化那个文档生成的概率就行。

但这时候不同的主题就分得不是很清晰了,一个主题它包含几个实际的主题。这时候他可能算出来的概率仍然会比较大。所以说他学到参数就会不当。但是加了这个Dirchlet先验之后,他会促使学出一些稀疏的分布。

比如有500个词都是比较频繁的。然后加了先验之后现在只有100个次频繁了,就相当于把一些可以合并起来也可以不合并的一个主题给给分散到不同的主题去了。这样的话会学到的会更合理一些。

相关文章
|
前端开发 JavaScript
Yii2的主题是干什么的?有什么作用?为什么需要使用主题?
Yii2的主题是干什么的?有什么作用?为什么需要使用主题?
|
开发者 Python
为什么能学出有效的主题 中|学习笔记
快速学习为什么能学出有效的主题 中
65 0
为什么能学出有效的主题 中|学习笔记
|
自然语言处理 搜索推荐 开发者
基于主题知识问答|学习笔记
快速学习基于主题知识问答
61 0
基于主题知识问答|学习笔记
|
开发者 Python
为什么能学出有效的主题 上|学习笔记
快速学习为什么能学出有效的主题 上
56 0
为什么能学出有效的主题 上|学习笔记
|
开发者 Python
为什么能学出有效的主题 下|学习笔记
快速学习为什么能学出有效的主题 下
37 0
为什么能学出有效的主题 下|学习笔记
|
存储 移动开发 物联网
订阅主题 | 学习笔记
快速学习 订阅主题
167 0
订阅主题 | 学习笔记
|
JSON 数据格式
Agron主题安装
wordpress主题
372 0
Agron主题安装
|
前端开发 JavaScript
R沟通|设置xaringan主题
上一期我们讲解了如何使用谢益辉写的xaringan包[1]制作幻灯片,推文在这:R沟通|用xaringan包制作幻灯片。但是最后留了一个小尾巴,如果你不喜欢最原始版本的主题的话。你可以把内部的css进行设置,这时你得需要一些javascript的知识。
101 0
R沟通|设置xaringan主题