白话LDA隐式狄里克雷分布模型

简介: 今天应学弟要求,又回顾了下LDA模型,陡然发现之前弄懂弄通的一些地方竟然开始有些生疏,果然还是得记录总结。 好记性不如烂笔头,于是将LDA模型又从头梳理了一下,有些体会,记录下来 以下尽可能不用代码也不用公式还原LDA模型的思想原貌 LDA全景图 1.

今天应学弟要求,又回顾了下LDA模型,陡然发现之前弄懂弄通的一些地方竟然开始有些生疏,果然还是得记录总结。

好记性不如烂笔头,于是将LDA模型又从头梳理了一下,有些体会,记录下来

以下尽可能不用代码也不用公式还原LDA模型的思想原貌

lda
LDA全景图

1.LDA解决的问题:

如何自动的从一批文档中,找出文档表达的n个主题思想?

2.LDA的假设:

任何模型都是对现实世界的一种假设,所以想要掌握一个模型,先了解它的假设是什么

LDA模型的假设基础就是:关键词在文档中出现的概率 = 关键词在主题中出现的概率 * 主题在文档中出现的概率

本质上还是贝叶斯统计推断

3.解决问题的思路:

不管是数学公式还是伪代码,本质上都是对解决问题思路的描述,搞学术的容易陷入纯数学的表达,搞工程的容易陷入纯代码的表达,

所以要进一步理解模型,就必须透过公式或代码,理解其解决问题的思路

LDA模型的思路又是什么呢?

3.1. 问题分解:

1.如何找到一篇文档中的主题思想?

2.如何求解所有文档主题思想的个数n?

3.2. 问题分析:

所以,LDA模型实际上是一口气解决了两个问题

对于 问题1,这个好办,我们可以挖掘出频率高有意义的关键词来指代文档的主题;

但这也就意味着一篇文章可能同时会有多个主题

对于 问题2,如果一篇文章只有一个主题,这事就好办了,我们可以用kmeans聚类的方式从1,2,3……n逐个尝试,找到匹配度最高的n

现在我们需要考虑一对多问题

我们就再假设,在这堆文档中主题的数量应该也是服从某种分布的,可能是正态分布,可能是伽马分布,暂时不知道

于是我们同样可以将这些分布逐一尝试,看看哪种分布的匹配度最高?

3.3. 解决方案:

于是解决方案就出来了

第一步 先找出每篇文档的所有主题(用关键词组表示)

第二步 再从分布函数中随机选择一个分布去匹配现有文档的主题数量,算出一个匹配度

第三步 不断尝试新的分布函数,直到匹配度最大为止

4.回到数学:

回到数学上,我们就会发现有很多博主苦口婆心的写了一堆公式,但大家还是看不懂,主要原因就是主次不分,总是过分强调细节

其实整体原理很简单,不是吗?接下来我们再对该模型中使用的关键技术对号入座,细节就不展开了,有兴趣大家可以自行搜索

4.1 对号入座

狄里克雷(Dirichlet)分布 就是对应 3.3 第二步中的分布函数,这个Dirichlet可以通过调参的方式模拟任意分布
Dirichlet

Gibbs采样 简单来说,重复的按一定规则从数据中随机选取k个样本的过程就叫Gibbs采样,对应到 3.3 不断尝试新的分布函数,就是需要不断试验,不断采样
Gibbs

变分推断EM 对应到 3.3 第二步中计算匹配度 及 第三步使得匹配度最大
v

4.2 技术质疑

为什么是狄里克雷分布? 因为这是目前为止数学家发明的最好的分布函数模拟工具

为什么要用Gibbs采样? 因为这是目前为止最科学使用最广泛的采样手段

为什么要用变分推断EM? 因为客观事物不可能完美的服从某种分布,只能做近似推断,而变分法同样是目前最好的近似推断工具

5.总结

所以LDA,顾名思义,也就是挖掘隐含的狄里克雷分布的一个过程

5.1. 优点:

通过非常直观的思维逻辑,解决了看似复杂的文本主题聚类的问题

5.2. 缺点:

非常依赖于数据,数据量如果太小,可能不会太凑效

5.3. 发散:

这种分布推理机器,未来是否可以与神经网络有很好的结合点呢?我们拭目以待

相关文章
|
6月前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(上)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
|
6月前
|
机器学习/深度学习 前端开发 数据可视化
R语言缺失数据变量选择LASSO回归:Bootstrap重(再)抽样插补和推算
R语言缺失数据变量选择LASSO回归:Bootstrap重(再)抽样插补和推算
|
6月前
|
算法
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型
|
6月前
|
数据可视化
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归分析连续变量和分类变量之间的“相关性“
R语言逻辑回归分析连续变量和分类变量之间的“相关性“
|
6月前
|
算法 定位技术
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
152 2
|
算法 数据库
KNN算法的简单应用将一维数据集分类——打开就可以跑
KNN算法的简单应用将一维数据集分类——打开就可以跑
|
机器学习/深度学习 算法 计算机视觉
多目标跟踪算法(最近邻NN)(全局最近邻GNN)(概率数据关联PDA)(联合概率数据关联JPDA)的学习
多目标跟踪算法(最近邻NN)(全局最近邻GNN)(概率数据关联PDA)(联合概率数据关联JPDA)的学习
多目标跟踪算法(最近邻NN)(全局最近邻GNN)(概率数据关联PDA)(联合概率数据关联JPDA)的学习
|
机器学习/深度学习 存储 算法
最邻近规则分类 KNN (K-Nearest Neighbor)算法及python实现
最邻近规则分类 KNN (K-Nearest Neighbor)算法及python实现
129 0
|
数据挖掘 索引 Python
Python实现固定效应回归模型实现因果关系推断(二)
Python实现固定效应回归模型实现因果关系推断(二)
910 1
Python实现固定效应回归模型实现因果关系推断(二)