我正在研究 Scikit Learn 的 LDA 算法以进行主题建模。有人可以告诉我“在线”学习方法与“批量”学习方法的工作原理吗?此外,在这种情况下和一般情况下,什么是学习衰减和学习偏移?
使用 Scikit Learn 进行潜在 Dirichlet 分配中的在线与批量学习
数据挖掘
Python
scikit-学习
nlp
主题模型
低密度脂蛋白
2022-03-11 23:16:52
1个回答
使用批处理,您可以通过每次 EM 迭代提供整个数据。在在线实现中,您仅通过每个 EM 迭代(“小批量”)提供一些数据。来自sklearn 用户指南:
批处理方法在每次完整传递数据后更新变分变量,而在线方法更新来自小批量数据点的变分变量。
来自关于在线 LDA 的论文:
加权平均值来更新lambda 。给予的权重由,其中 ∈ (0.5, 1] 控制旧值的速率的被遗忘并且减慢了算法的早期迭代。
在sklearn 实现中:
weight = np.power(self.learning_offset + self.n_batch_iter_, -self.learning_decay)
learning_offset也是如此,它减慢了早期迭代的速度,而\控制了旧权重被遗忘的速率。learning_decay