Model-Evaluation

SGD和ALS在協同過濾中的比較

  • March 12, 2016

矩陣分解在協同過濾中得到了廣泛的應用,簡單來說,它嘗試學習以下參數:

我們可以應用SGDALS作為學習算法,但是,正如我在這裡讀到的,他們說,

如果數據集很大,SGD 不實用,而 ALS 更好。

我想知道如果數據集很大,為什麼 SGD 不好?我想即使它很大,我們也可以使用 mini-batch SGD,這是訓練大型神經網絡的廣泛採用的方法,不是嗎?

跟進

通過 SGD,我們每次只使用一個數據點,並且只優化整個損失的一部分,即優化,所以我們更新使用這部分的梯度,得到.

絕對地將優化,但它可能會惡化整個損失的其他部分,比如說, 我的意思是兩者和涉及.

考慮到上述情況,我們如何保證 SGD 會收斂

SGD 和 ALS 對於矩陣分解都非常實用,

Yehuda Koren 是 Netflix 獎(見此處)的獲得者,也是 CF 矩陣分解技術的先驅,當時在雅虎實驗室工作,並且是雅虎 CF 模型開發的一部分。

閱讀雅虎實驗室的出版物(例如這里這裡),很容易看出他們大量使用 SGD,我們只能假設生產系統也是如此。

由於冷啟動問題,矩陣分解通常在user_featurexmovie_features的矩陣(而不是 x 的矩陣usersmovies上完成,從而使鏈接中提到的論點不太相關。

SGD 在處理缺失數據方面也佔上風,這是一種相當常見的情況。

綜上所述,SGD 是一種非常常見的 CF 方法,我看不出它為什麼不能應用於大型數據集。

引用自:https://stats.stackexchange.com/questions/201279

comments powered by Disqus