Model-Evaluation
SGD和ALS在協同過濾中的比較
矩陣分解在協同過濾中得到了廣泛的應用,簡單來說,它嘗試學習以下參數:
我們可以應用SGD和ALS作為學習算法,但是,正如我在這裡讀到的,他們說,
如果數據集很大,SGD 不實用,而 ALS 更好。
我想知道如果數據集很大,為什麼 SGD 不好?我想即使它很大,我們也可以使用 mini-batch SGD,這是訓練大型神經網絡的廣泛採用的方法,不是嗎?
跟進
通過 SGD,我們每次只使用一個數據點,並且只優化整個損失的一部分,即優化,所以我們更新使用這部分的梯度,得到.
絕對地將優化,但它可能會惡化整個損失的其他部分,比如說, 我的意思是兩者和涉及.
考慮到上述情況,我們如何保證 SGD 會收斂?
SGD 和 ALS 對於矩陣分解都非常實用,
Yehuda Koren 是 Netflix 獎(見此處)的獲得者,也是 CF 矩陣分解技術的先驅,當時在雅虎實驗室工作,並且是雅虎 CF 模型開發的一部分。
閱讀雅虎實驗室的出版物(例如這里和這裡),很容易看出他們大量使用 SGD,我們只能假設生產系統也是如此。
由於冷啟動問題,矩陣分解通常在
user_feature
xmovie_features
的矩陣(而不是 x 的矩陣users
)movies
上完成,從而使鏈接中提到的論點不太相關。SGD 在處理缺失數據方面也佔上風,這是一種相當常見的情況。
綜上所述,SGD 是一種非常常見的 CF 方法,我看不出它為什麼不能應用於大型數據集。