机器学习--概率图算法--主题模型算法理论

一 主题模型基础认知

1 主题模型的概念

第一点:主题模型是生成式模型

一篇文章的每一个词:文档以一定概率选择某个主题,并从这个主题中以一定概率选择某个词\Rightarrow p(word|doc)=\sum_{topic}p(topic|doc)p(word|topic)

第二点:主题模型的目的

主题模型可以自动分析每个文档,统计文档内词语,根据统计的信息判断当前文档包含哪些主题以及这些主题所占比例大小

2 主题模型的优点

  • 第一点:克服了传统信息检索中文档相似度计算的缺点(如词袋法等忽略语义与语序问题)
  • 第二点:从海量的文字中找到文字之间的语义主题(挖掘不同文字内在相同的语义主题)

二 主题模型具体算法

1 潜在语义分析(LSA,是一种基于SVD矩阵分解的主题模型算法

1)算法原理与流程

第一步:SVD分解

A_{m*n}=U_{m*m}\Sigma_{m*n} V^{T}_{n*n}\approx U_{m*k}\Sigma_{k*k} V^{T}_{n*k}

注意:

第一点:m表示词数,n表示文档数,k表示主题数

第二点:A,U,\Sigma,V^{T}含义

  • A_{ij}表示第i个词与第j个文档的相关度(通过IT-IDF计算得到)
  • U_{ij}表示第i个词与第j个主题的相关度
  • \Sigma_{ij}表示第i个主题与第j个主题的相关度
  • V_{ij}^{T}i个主题与第j个文档的相关度

第二步:判断文档相似度

  • 方式一:在文档主题矩阵V^{T}_{n*k}中使用聚类算法
  • 方式二:在文档主题矩阵V^{T}_{n*k}中使用距离度量公式(余弦相似度、欧式距离等)

2)优缺点

优点

适合小规模数据集且粗粒度找出文档的主题分布

缺点

  • SVD矩阵分解效率低
  • 很难选择适合的k值
  • 不是基于概率的模型,缺乏统计基础,解释性低

2 非负矩阵分解(NMF,是一种基于NMF矩阵分解的主题模型算法)

1)算法原理与流程

第一步:NMF分解

V_{m*n}\approx W_{m*k}H_{k*n}

注意:

第一点:m表示词数,n表示文档数,k表示主题数

第二点:V,W,H含义

  • V_{ij}表示第i个词与第j个文档的相关度(通过IT-IDF计算得到)
  • W_{ij}表示第i个词与第j个主题的概率相关度
  • H_{ij}表示第i个主题与第j个文档的概率相关度

第二步:损失函数(期望矩阵WH的乘积结果对应原矩阵V而言,误差尽可能的小)

f(W,H)= \frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{m}(V_{ij}-(WH)_{ij})^2

s.t.W_{ij}\geq 0,H_{ij}\geq 0

第三步:使用梯度下降法求解损失函数(共计包含m*k+k*n个参数)

W_{ij}^{k+1}=max\left \{ 0,W_{ij}^{k}-\alpha \bigtriangledown_{W_{ij}} f(W,H) \right \}

H_{ij}^{k+1}=max\left \{ 0,H_{ij}^{k}-\alpha \bigtriangledown_{H_{ij}} f(W,H) \right \}

第四步:判断文档相似度

  • 方式一:在文档主题矩阵H_{k*n}中使用聚类算法
  • 方式二:在文档主题矩阵H_{k*n}中使用距离度量公式(余弦相似度、欧式距离等)

2)模型过拟合解决方案(对损失函数添加正则项)

\Rightarrow f(W,H)+\alpha \rho |W|_{1}+\alpha \rho |H|_{1}+ \frac{\alpha(1-\rho)}{2} |W|_{2}^{2}+\frac{\alpha(1-\rho)}{2} |H|_{2}^{2}

注意:存在L1正则化项,所以这里采用坐标轴下降法,而非梯度下降法

3)优点

相比于SVD矩阵分解的效率,得到提高

3 隐含狄利克雷分布(LDA,基于贝叶斯网络的主题模型算法)

1)相关概率与统计理论

第一点:先验分布

  • 在获取样本X前,对于和样本X有关的参数\theta已经得到分布函数以及密度函数
  • \theta的分布函数以及密度函数,称为先验分布

第二点:后验分布

  • 在获取样本X后,对于和样本X有关的参数\theta,根据\theta|X进行重新估计分布函数以及密度函数
  • \theta|X的分布函数以及密度函数,称为后验分布

第三点:共轭分布

  • 如果先验分布和后验分布具有相同的分布形式(都是高斯分布或者二项分布等)
  • 将先验分布p(\theta)和似然函数p(X|\theta)称为共轭分布

第四点:二项分布(n重伯努利分布)

p(x_{1}=k,x_{2}=n-k)=C_{n}^{k}p^{k}(1-p)^{n-k}=\frac{n!}{k!(n-k)!}p^{k}(1-p)^{n-k}

第五点:多项分布(是二项分布的推广)

p(x_{1}=m_{1},x_{2}=m_{2},..,x_{k}=m_{k})=\frac{n!}{m_{1}!...m_{k}!}p_{1}^{m_{1}}p_{2}^{m_{2}}...p_{k}^{m_{k}}

注意:\sum_{i=1}^{k}m_{i}=n,\sum_{i=1}^{k}p_{i}=1

第六点:Beta分布

 

第七点:狄利克雷分布