查看原文
其他

融合协变量信息的结构主题模型

何辰轩 狗熊会 2023-08-15

文本数据是一种重要的社会科学研究对象。在日常生活中,大家或多或少都接触过文本数据,比如,所阅读的书籍报刊,应用软件发放的用户调查问卷,社交平台上的发言等。随着科技的迅猛发展,文本数据的可数字化使其存储和使用更为便捷,文本分析和文本挖掘成为热门领域。

在文本分析中,有一个重要的研究领域,即主题模型。最熟为人知的主题模型即LDA(Latent Dirichlet Allocation)主题模型,本文所介绍的结构主题模型(Structural Topic Model, STM)由2016年发表在Journal of the American Statistical Association上的论文《A Model of Text for Experimentation in the Social Sciences》提出,是LDA主题模型的一种拓展。

主题模型一般是一种无监督学习方法,旨在通过观测到的文档-词语数据,挖掘其背后所隐含的主题情况,建立文档-主题-词语的链接。本文的第一部分先介绍主题模型的一般思路;第二部分介绍结构主体模型(STM)的生成原理;第三部分介绍结构主题模型的估价方法——变分EM算法(Variational EM algorithm);第四部分将结合实例,介绍如何在R语言中使用结构主题模型进行估计;第五部分将进行总结,并给出模型的可应用场景。

主题模型

在介绍STM模型前,先简单的叙述LDA模型的基本原理。

潜在狄利克雷分配(Latent Dirichlet Allocation, LDA)是一种基于贝叶斯学习的话题模型,于2002年由Blei等发表在Journal of Machine Learning Research 3上的论文《Latent Dirichlet Allocation》中提出。

1.符号说明
设共存在个文档,使用作为索引。每个文档有个词语,使用作为索引。观测到的词语即为,表示第个文档中的第个词语,这就是文档-词语数据。所有观测的词语可以构成一个集合,使用作为索引。
接下来,假设个文档中,共存在个主题,主题使用作为索引。设为第个文档在个主题上的概率分布,为第个主题在个词语上的概率分布,
2.贝塔分布与狄利克雷分布
贝塔分布是一组定义在区间的连续概率分布,有两个参数,其概率密度函数为:
狄利克雷分布(Dirichlet Distribution)是一种多元连续随机变量的概率分布,是贝塔分布的一种拓展,对于元连续随机变量,,有一个维参数,其概率密度函数为:
其中,。称随机变量服从参数为的狄利克雷分布。
通过观察可以发现,狄利克雷分布中,取参数为2,即为贝塔分布。
3.LDA主题模型的生成过程
LDA主题模型是一种贝叶斯概率模型,其文本集合生成过程如下,给定单词集合、文本集合、主题集合,以及参数

(1)生成文档的主题分布:

对于给定的第个文档,首先生成该文档的主题分布
(2)生成文档中的词语,对于该文档中的每一个词语
从参数为的多项分布中,选择主题
给定主题,从多项分布的概率函数中抽取对应的词语,其中,,即每一个主题对应有一个词语的概率分布。
在LDA模型中,需要去估计每一个文档对应的主题分布(即),以及给定主题以后,该主题词语的多项分布概率

STM的模型原理

1.STM的提出

在LDA模型中,文档的主题分布是从狄利克雷分布中选取出来的,不同的主题之间不存在相关性,但是实际中,不同的主题之间是存在相关性的。另外,一些文档层级的协变量(例如:作者等),可能对主题的选取、主题下词语的选取有影响。STM模型可以有效地解决上述两个问题。

STM模型由Roberts等发表在Journal of American Statistical Association,Applications and Case Studies上的论文《A Model of Text for Experimentation in the Social Sciences》提出,其配套的R包由Roberts等发表在Journal of Statistical Software上的论文《stm: R Package for Structural Topic Models》提供具体使用方法。

2.STM的生成过程
STM的符号使用与上述LDA模型相同。在LDA模型中,有两个重要的多项分布概率分布,即,分别表示第个文档的主题概率分布以及第个主题的词语概率分布,在STM模型中,依然聚焦于这两个概率分布,并补充符号文档层面的两个协变量矩阵:
:协变量矩阵1,共有个特征,影响某一个文档在主题上的选择倾向(
: 协变量矩阵2,共有个特征,影响某一个文档中某一个主题在词语上的选择倾向(
值得一提的是,在STM模型中,多了一个下标,即在不同文档中,每一个主题的词语概率分布不尽相同。

STM模型的文本集合生成过程如下:

(1)首先考虑文档,主题分布向量的生成,该部分称为主题偏好模型(topic prevalence model):
首先生成系数矩阵,其中为单位矩阵,为协变量的维度,为主题的个数。这实际上就是协变量影响主题分布的回归系数,给定它的先验分布为正态分布,并根据数据更新其后验分布,其中为超参数:
排列成矩阵
接下来生成文档的主题分布向量,与LDA主题模型不同,为了引入不同主题之间的相关性,从对数多元正态分布中抽取主题分布向量,其中参数为协方差矩阵:
在这里,生成的是维的向量。这是因为,在生成过程中,首先生成的是多元正态分布向量,然后对其进行变换,由于有限定求和为1,故而可以限定最后一个元素为0,保证其唯一性。
(2)再考虑主题、文档下,词语分布向量的生成,该部分称为词语偏好模型(topical content model):
这相当于是做一个多项逻辑回归,因变量是观测到的词语,自变量是不同的主题、不同的协变量取值以及主题与协变量取值的交互项。多项逻辑回归的系数估计是截距项、是不同主题下词语的系数估计、是不同协变量取值下词语的系数估计、是交互项。反应的是第个文档、第个主题中,第个词语出现的概率。
(3)最后考虑词语集的生成,该部分称为核心语言模型(core language model):
从多项分布中抽取出主题
抽取到主题后,从多项分布中抽取词语
3.STM的模型解读
模型拟合完成后,需要去解释不同主题的含义。一般地,可以使用主题中出现频率最高的一些词语来代表该主题,即,但是,由于考虑到某一些词语整体的出现频率较高,并不能很好的代表某一个特定的主题。于是,可以将词语在某一个主题中出现的相对频率纳入考量,定义新的统计量如下:
这是词语出现频率与相对频率的调和平均数,是研究者指定的权重,一般设置为

使用变分EM算法估计STM

上一部分介绍了模型的文本生成逻辑,但是在该模型中,有很多的参数需要进行估计。在模型中,观测到的数据为文档-词语数据,主题偏好模型协方差矩阵,词语偏好模型协方差矩阵
需要进行估计的参数包括:每一个文档的主题概率分布,每一个词语所选择的主题,词语偏好模型中的多项逻辑回归系数,主题偏好模型中协变量的回归系数,以及主题偏好模型中的多元正态分布的协方差矩阵。其后验概率为,需要最大化该后验概率。

展开该后验概率,可得其正比于:

其中,
1.变分EM算法的基本逻辑

由于概率函数中有很多隐变量,需要使用EM算法进行估计,但是由于概率函数过于复杂,而且对数正态分布与多项分布是非共轭的,所以使用近似变分EM算法进行估计。

在近似变分EM算法中,使用概率函数去近似其真实的概率密度函数。由于真实的概率密度函数与其他变量是相关的,所以估计会较为复杂,故而转而去寻求概率函数去进行近似。使用KL散度描述该概率函数与真实密度函数的近似度:
通过最小化KL散度,可以最优化该概率函数,由于是观测到的变量,且KL散度大于等于0,则上式可以改写为:

定义右侧为ELBO(Evidence Lower BOund),需要最大化右侧函数最小化KL散度,对相关概率进行积分处理,可得该问题的ELBO为:

在变分EM算法的步,更新概率函数;在步,更新参数
2.变分E步
使用Laplace近似来估计的后验分布,将ELBO中与进行积分处理,可得正比于:
其一阶导为:
根据Laplace近似的原理,可以得到,达到更新概率函数的目的,令概率函数这一多项分布的概率为,有
3.M步
步的更新相对简单,使用回归方法更新参数,使用多项逻辑回归更新参数,使用最大似然估计更新参数,并可以考虑对其施加对角线惩罚项,其最大似然估计为:

通过变分EM算法迭代,逐渐更新相关参数。值得一提的是,这个算法并不是收敛的,所以不同的初始化可能会得到不同的结果,所以合理的初始化方法也非常关键。接下来用R语言来分析STM模型的实例。

R包stm及实例展示

1.stm包实现——数据读入

对于此次所介绍的STM模型,R语言中有一个程序包stm可以系统地实现该模型。以数据集poliblogs2008.csv为例,该数据记录了2008年美国政客所发的博客,其基本情况如下表所示。

表1  数据集poliblogs2008基本情况

各列数据的意义如下:

  • 数据的documents列表示文本的具体内容,表格中仅展示开头几个词语

  • docname列表示该行数据的名称

  • rating列表示政客的党派,为二分类变量,conservative为共和党,对应的liberal为民主党

  • day列表示博客发表的时间,取值从1-366

  • blog列为博客来源,为六分类变量,有“at”、“db”、“ha”、“mm”、“tp”、“tpm”六类

在该数据中,documents是所关注的文本数据;rating/day/blog三个变量,均可以作为文档协变量引入STM模型之中。

首先,将该数据读入Rstudio中,并使用stm包中的textProcessor()函数对文档进行预处理工作,代码如下:

data <- read.csv(“R_code/poliblogs2008.csv”, encoding = “UTF-8”)
processed <- textProcessor(data$documents, metadata = data)

textProcessor()函数对数据的documents列进行文本预处理,包括将所有字母转为小写、移除标点符号、移除停用词、移除数字、词干化等操作。

在完成文本预处理后,需要使用prepDocuments()函数,建立完整的文档-协变量数据。代码如下:

out <- prepDocuments(processed$documents, processed$vocab, processed$meta, lower.thresh = 1)
在上述操作中,processed$documents表示的是经过预处理以后的文本数据;processed$vocab表示的是词语构成的集合,集合大小对应模型中的参数processed$meta表示的是文档的协变量数据;lower.thresh是一个参数,出现频率小于等于lower.thresh的词语将会词语集合中删除。
2.stm包实现——模型拟合

在对数据完成预处理后,需要使用STM模型进行估计,模型估计的核心函数为stm(),代码如下:

poliblogPrevFit2 <- stm(
documents = out$documents,
vocab = out$vocab,
K = 20, # number of topics
prevalence =~ rating + s(day),
content =~ rating,
max.em.its = 15, # a maximum of 15 EM iterations
data = out$meta,
init.type = "Spectral" # Spectral Initialization
)
stm()函数中,表示主题的数目,这里指定为20;prevalence指的是主题偏好模型(topic prevalence model)指定的协变量;content指的是词语偏好模型(topic content model)指定的协变量;由于时间day是连续变量,故而使用spline函数将其离散为十类;max.em.its指的是最大迭代次数;ini.type指的是初始化方法,这里可以使用谱初始化方法。如果对模型有不同的假设,可以更改prevalencecontent参数后的变量。
3.stm包实现——模型解读

stm包中,有很多可以帮助进行可视化的函数;例如,使用者可以使用labelTopics()函数查看每个主题的核心词语。直接使用plot()函数,绘制拟合结果,可以得到各个主题的占比及其主题词如下图所示。

图1  主题占比及其主题词

从图中可以看出,某些主题的指向性较为明显,例如主题3主要与税收、经济有关;主题1、主题6、主题13、主题19主要与当年总统竞选活动相关。

同时,由于主题偏好模型与词语偏好模型本质是回归,故而可以通过可视化展现不同主题在不同协变量下的置信区间。下图所示为协变量rating在不同主题下的偏好。图中的三个位置为这三个政治家主要相关的主题。从图中可以看到,Sarah Palin更加倾向于Conservative,说明更多保守党的政客讨论了有关Sarah Palin的主题,事实上Sarah Palin是2008年保守党总统竞选人McCain的竞选伙伴;而民主党派政治家更倾向于讨论Obama相关的主题。值得一提的是,2008年的总统小布什虽然是保守党派的,但是在后期,很多保守党派政客与其政治观点不合,而倾向于民主党。

图2  协变量rating在不同主题下的偏好

下图所示为与Sarah Palin相关的主题,随着时间的变化,该主题占比的变化情况,从图中可以看到,该主题的占比在后期出现了显著的增长,这是因为在2008年后半年有关总统竞选的讨论,导致了该主题的增长。

图3  特定主题随协变量days的变化情况

4.其他实例

在实例分析中,还有很多的优秀的示例。本文再介绍若干个原论文提到的STM模型分析结果。例如,作者对于1997年至2006年新闻媒体中有关中国的报道的主题、及其如何发生变化感兴趣,通过获取五个重要新闻媒体(新华社、法新社、美联社、BBC、日本经济新闻)从1997年至2006年有关中国的报道,通过STM模型进行建模分析。通过分析发现,在这一系列报告中,有一个主题与“疫情”相关,该主题在非典爆发及东亚禽流感爆发期间出现明显的突增。下图右侧展示了与该主题最相关的两篇文档,是法新社与新华社有关非典的报道。

图4  主题随时间变化情况/主题最相关文档展示

下图所示展现的是新华社与BBC在不同主题之间的相关性。因为在模型中,主题比例生成存在一个多元正态分布,所以可以建立假设检验:检验不同媒体(即不同取值)下,不同主题之间是否存在相关性。

下图的横轴与纵轴均代表的是STM模型输出的主题。在0.1显著性水平下,粗黑点表示新华社在对应的两个主题下存在相关性,例如“煤矿、化学药剂”主题与“安全事故”主题在新华社的报道中存在相关性;粗灰点表示BBC在对应的两个主题下存在相关性,例如“朝鲜”主题与“全球挑战”在BBC的报道中存在相关性;细黑点表示两个媒体在对应的两个主题上均存在相关性,例如“伊朗”主题和“朝鲜”主题在两个媒体的报道中均存在相关性。这样的可视化可以有效地观察到不同媒体在报道上的倾向性。

图5  主题相关性(以新华社和BBC为例)

总结

本文主要讲述了STM模型的基本原理及其R语言实现。从实例中,可以看到,STM模型除了拥有LDA模型的功能以外,还能够很好的捕捉文档层级的协变量对主题的影响。

STM模型虽然功能强大,但是其估计的参数较多,比较适用于文本量较为可观的情况,如果样本量较少,可能比较难训练得到比较合理的结果。

参考文献

[1] 李航. 统计学习方法(第2版)[M]. 清华大学出版社, 2019.

[2] Blei D M ,  Ng A Y ,  Jordan M I . Latent Dirichlet Allocation[C]// Advances in Neural Information Processing Systems 14 [Neural Information Processing Systems: Natural and Synthetic, NIPS 2001, December 3-8, 2001, Vancouver, British Columbia, Canada]. 2001.

[3] Roberts M E ,  Stewart B M ,  Airoldi E M . A model of text for experimentation in the social sciences[J]. Publications of the American Statistical Association, 2016, 111(515):988-1003.

[4] Roberts M ,  Stewart B ,  Tingley D . stm: R Package for Structural Topic Models[J]. Journal of statistical software, 2019, 91(2).

- END -

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存