使用 Scikit Learn 进行潜在 Dirichlet 分配中的在线与批量学习

数据挖掘 Python scikit-学习 nlp 主题模型 低密度脂蛋白
2022-03-11 23:16:52

参考

我正在研究 Scikit Learn 的 LDA 算法以进行主题建模。有人可以告诉我“在线”学习方法与“批量”学习方法的工作原理吗?此外,在这种情况下和一般情况下,什么是学习衰减和学习偏移?

1个回答

使用批处理,您可以通过每次 EM 迭代提供整个数据。在在线实现中,您仅通过每个 EM 迭代(“小批量”)提供一些数据。来自sklearn 用户指南

批处理方法在每次完整传递数据后更新变分变量,而在线方法更新来自小批量数据点的变分变量。

来自关于在线 LDA 的论文

加权平均值来更新lambda 给予的权重由,其中 ∈ (0.5, 1] 控制旧值的速率的被遗忘并且减慢了算法的早期迭代。λλ~λ~ρt=(τ0+τ)κκλ~τ00

sklearn 实现中:

weight = np.power(self.learning_offset + self.n_batch_iter_, -self.learning_decay)

learning_offset也是如此,它减慢了早期迭代的速度,而\控制了旧权重被遗忘的速率。τ0learning_decayκ