我对LDA和主题建模很陌生,我想了解一下推理机制。我想应用LDA进行活动识别。假设我已经定义了由事件概率分布组成的10个主题。例如
TOPIC_1 = event1 (0.5), event2 (0.4), event3 (0.0), event4 (0.0) and event5 (0.1).我想了解一个人一天中哪些话题是活跃的。一个人的一天是由每分钟抽样的一系列事件组成的。
为了了解哪个主题是活跃的,我所做的是:
对吗?你对使用相似函数有什么建议吗?
发布于 2016-04-18 19:29:58
我们可以通过把每个小时当作文档来建立活动识别的主题模型。然后,我们可以将词汇表定义为观察到的活动信号计数的离散向量(即,我们可以使用k均值对每个活动进行离散化测量,并计算每个小时内活动发生的次数)。离散化程度将决定词汇表的大小。通过这种方式,我们可以构造术语文档矩阵并应用tf(详见原始BLE2003LDA论文 )。
在构造了术语文档矩阵之后,我们可以使用多种推理算法中的一种来学习主题:变分bayes、EM算法、Gibbs采样器等,它们各有其优点。大型语料库中常用的一种推理算法是在线变分贝叶斯(用马特·霍夫曼编写的python语言,作为scikit-learn和gensim的一部分)。
在对训练活动数据进行LDA模型拟合后,通过量化数据并将数据转换到我们的学习主题空间(在E步骤中完成,在scikit-learn中作为转换方法实现),可以计算新测试数据的主题相似度。一旦得到测试数据的主题比例,就可以使用多种相似性度量之一,例如余弦相似度或对称KL散度来检索主题比例相似的文档)。
关于建模假设的注意事项: LDA假设文档是独立的(即小时活动时间序列是独立的)。此外,这些词语是可交换的(例如,离散的活动度量可以在文档中置换)。
https://stackoverflow.com/questions/24888410
复制相似问题