9

有沒有一種方法可以在線學習的方式來訓練LDA模型,加載以前的火車模型,並用新文檔更新它?在線學習Spark中的LDA模型

+4

計算器通常鼓勵加入自己的方式來解決該問題的一些代碼。有時候比賞金更有幫助。 –

回答

4

回答我自己:這是不可能的。

實際上,Spark有2個LDA模型訓練的實現,其中一個是OnlineLDAOptimizer。這種方法專門用於通過小批量文檔逐步更新模型。

優化器實現了在線變分貝葉斯LDA算法,該算法在每次迭代中處理語料庫的一個子集,並自適應地更新術語 - 主題分佈。

Original Online LDA paper:Hoffman, Blei and Bach, "Online Learning for Latent Dirichlet Allocation." NIPS, 2010

不幸的是,當前的mllib API不允許加載先前訓練過的LDA模型,並向其添加批處理。

某些mllib模型支持initialModel作爲增量更新的起點(請參閱KMeansGMM),但LDA當前不支持該更新。我爲它填充了一個JIRA:SPARK-20082。請給予好評;-)

爲了記錄在案,也是一個JIRA的流LDA SPARK-8696

2

我不認爲這樣的事情會存在。 LDA是概率性參數估計算法(對這個過程的簡單解釋,這裏是LDA explained),並且添加一個文件或幾個文件會改變所有以前計算出的概率,因此從字面上重新計算模型。

我不知道你的用例,但是如果你的模型在合理的時間內收斂並且在每次重新計算時丟棄一些最早的文檔以加快估計,你可以考慮批量更新。