LDA 原理 上|学习笔记

简介: 快速学习LDA 原理 上

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践LDA 原理 上】学习笔记,与课程紧密联系,让用户快速学习知识。

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


LDA 原理 上

 

内容介绍

一、 LDA=Plsa+先验

二、 Dirichlet 分布

三、 三、例子---Dirchlet 骰子先验和后验分布的采样

 

一、LDA=Plsa+先验

LDA可以近似看成PSA,然后加了一个先验概率,pLSA可以简单写成p(d|θ),这是目标函数所算的概率,找一个θ包括 θd 和T(topic),找一个最好的θ最大化概率就是PSA,就是pLSA找最大化p(d|θ)的θ最好,但是问题是容易过拟合,可能得到一些文档。每一个都会出现很多个topic的,概率都会比较大。就相当于那种混杂的程度比较高。

其中d表示文档的一个编号。然后加入先验,给系数的参数较大的可能性,如此,最后估计出来参数会比较稀疏一些,然后稀疏的参数可能会更合理一些。

公式,参数的后验概率和先验概率乘以似然函数成正比。由于先验概率乘以似然函数还没有规划,规划之后就是等号。所以后援概率,是相当于综合了先验概率和似然函数。

后验概率是指比如生病,发烧类似的情况。然后,先验概率是加在{θd}和T上。因为{θd}和T的维度是不一样的,{θd}是K维的。T是W维的。W词汇表的大小。所以说在两个不同的对立式先验。

合理的先验

性质要符合直觉。

每个topic概率集中在少数词上,每个文档的不同topic概率集中在少数几个topic,定义域里包含所有合法的参数。

θ是记号,包括了{θd}和T。就是包含所有的参数。

后验概率等于先验概率乘以似验就是指被类似推理的一个范式,可以简单理解成,要找好的参数,先验概率不能太差,不需要特别好但是不能太差。然后似然函数需要满足的比较好。总之就是两方面都要有一定满足,综合起来。

 

二、Dirichlet 分布

image.gif1,先看分布的参数。这个X是每一个观测值,就是给每个X一个概率。阿尔法α是最重要的参数。定义的是(αi-1)次方,然后对所有的K连乘起来。X和α都是K维向量。它相当于对每一维算一个数,所以把K维乘起来。B(α)是规划常数,不用管

2,定义域是在向量X上,X大于零,就是所有纬度上的Xk加起来等于一。正好构成离散分布的参数,离散分布的参数也需要满足这些要求。

每个合法的X对应一个K维离散分布的一组参数。很容易作为第三方分布的先验分布。

有些人会说是分布的分布,那样说的话就会很费解。不如把分布的参数。就是是给分部的每一组参数都有一个概率。比如说每个分部是一个骰子。然后对于这些骰子有一些先验的信念。

比如说骰子应该是大致公平的。那就认为骰子六个面的概率基本上接近于1/6或在1/6附近,假设骰子肯定有作弊,那么离1/6概率比较远。这都相当于对骰子的一些事先的信念。然后可以用此作为率势分布来刻画,很好的一点是离散分布是共轭分部

共轭分布是指先验的对象,然后有从一些理想分布的观测,把观测作为已知的知识,算骰子六个面的后验概率,一样是对数分工

比如先验是六个一,然后观测六个面分布的频率是(5,2,1,1,1,0)。第一个面看了五次,第二面看了两次,很明显,这可能是有偏的一个骰子,后验概率是这种情况。这个骰子大概率就偏向第一面。

Dir(1,1,1,1,1,1)是指对骰子的情况,不做任何假设,可以是一个均匀的骰子,也可以是一个很奇怪的骰子(非常偏的一个骰子)。就某些面概率特别大,然后某些面概率特别小的骰子。一般情况来说所有的骰子概率几乎相同

然后从一个骰子空间或者骰子宇宙里头拿一个骰子出来。然后看到骰子观测值。就能估计后面概率,估计这方面到底是什么样。

 

三、例子---Dirchlet 骰子先验和后验分布的采样

image.gif实际出了一些样本有一个直观印象就是首先是六乘五的矩阵,是从全是一的对数给抽出来了。这个代码可以很方便的从这个幻灯片里头复制出来。每一行是一个样本,每一行是一个采样。然后可以看出来,就是这里面有五个采样,可以看出来,确实是各种情况都有,比如说有些第一面会比较大有些第一面小,采样就是抽样。

这是从后验概率里头抽出来的样本。可以看出几乎每个样本第一面的概率都很大。然后第二面的概率稍微大一点,有时候比第一个还大。虽然采样观测到的是第一个那个频率很高。

假设用最大似然估计,可以算一个平均值出来,可以算出来第一面的概率,大概是0.5,下面的是0.2。但是为了让推理更加鲁棒,或者说更加平滑。也不做那种最大似然规律那种点估计,假设虽然观测到这些频率。但仍然认为骰子另一方面的概率是服从概率分布的,并不能估计出来一个点,然后就相信这个点就是实际情况。

比如说最后一面一直没观察到,但不能认为最后一面的概率为零。如果做最大似然估计的话,最后一面的概率就是为0了。然后做推理的话。

最后一面就像采样里头最后一面。概率虽然很小,但是也不是0。相当于,虽然原理处理的时候尽量做的平滑,比如说一个词从来没有出现,但不能把它频率设成零,需要用很少的数去平滑,先验概率起到的效果就相当于对参数做一下平滑。

相关文章
|
机器学习/深度学习 数据采集 自然语言处理
【机器学习实战】10分钟学会Python怎么用LASSO回归进行正则化(十二)
【机器学习实战】10分钟学会Python怎么用LASSO回归进行正则化(十二)
4538 0
|
Oracle druid 关系型数据库
阿里Druid连接池的坑。。
Druid的坑 当查询数据库的Clob转换为Oracle Clob类型的时候。
704 0
|
5月前
|
缓存 边缘计算 前端开发
从业务需求到技术栈:电商API选型RESTful还是GraphQL?这5个维度帮你决策
在数字经济时代,电商平台的竞争已延伸至用户体验与系统效能。作为连接前后端及各类服务的核心,API接口的架构设计至关重要。本文对比RESTful与GraphQL两大主流方案,从电商场景出发,分析两者的技术特性、适用场景与选型逻辑,帮助开发者根据业务需求做出最优选择。
|
机器学习/深度学习 自然语言处理 算法
自然语言处理中的情感分析技术
自然语言处理中的情感分析技术
|
存储 运维 Prometheus
都有什么报警监控工具
都有什么报警监控工具
296 1
|
8月前
|
机器学习/深度学习 并行计算 PyTorch
【pytorch】【202504】关于torch.nn.Linear
小白从开始这段代码展示了`nn.Linear`的使用及其背后的原理。 此外,小白还深入研究了PyTorch的核心类`torch.nn.Module`以及其子类`torch.nn.Linear`的源码。`grad_fn`作为张量的一个属性,用于指导反向传播 进一步地,小白探讨了`requires_grad`与叶子节点(leaf tensor)的关系。叶子节点是指在计算图中没有前驱操作的张量,只有设置了`requires_grad=True`的叶子节点才会在反向传播时保存梯度。 最后,小白学习了PyTorch中的三种梯度模式 通过以上学习小白对PyTorch的自动求导机制有了更深刻的理解。
368 6
|
机器学习/深度学习 人工智能 自然语言处理
C++构建 GAN 模型:生成器与判别器平衡训练的关键秘籍
生成对抗网络(GAN)是AI领域的明星,尤其在C++中构建时,平衡生成器与判别器的训练尤为关键。本文探讨了GAN的基本架构、训练原理及平衡训练的重要性,提出了包括合理初始化、精心设计损失函数、动态调整学习率、引入正则化技术和监测训练过程在内的五大策略,旨在确保GAN模型在C++环境下的高效、稳定训练,以生成高质量的结果,推动AI技术的发展。
366 10
|
存储 对象存储
radosgw高可用对象存储网关实战指南
关于radosgw高可用对象存储网关的实战指南,涵盖了从基本概念到具体操作案例,再到架构设计和使用技巧的全面介绍。
403 6
|
消息中间件 存储 负载均衡
Apache Kafka核心概念解析:生产者、消费者与Broker
【10月更文挑战第24天】在数字化转型的大潮中,数据的实时处理能力成为了企业竞争力的重要组成部分。Apache Kafka 作为一款高性能的消息队列系统,在这一领域占据了重要地位。通过使用 Kafka,企业可以构建出高效的数据管道,实现数据的快速传输和处理。今天,我将从个人的角度出发,深入解析 Kafka 的三大核心组件——生产者、消费者与 Broker,希望能够帮助大家建立起对 Kafka 内部机制的基本理解。
483 2
|
IDE 测试技术 持续交付
单元测试功
【9月更文挑战第03天】
275 5