矩陣分解是簡單的嵌入模型由於 回饋矩陣 A ,其中 是 「使用者人數」(或查詢數量) 和「項目數量」 模型會學習:
- 使用者嵌入矩陣 , 其中資料列 i 是使用者 i 的嵌入項目。
- 這是項目嵌入矩陣 , 其中第 j 列是項目 j 的嵌入項目。
學會從這些嵌入判斷出產品 是 意見表 A.您會發現 項目 就是點號商品 使用者嵌入的項目 和 item ,也就是您想要靠近 。
選擇目標函式
其中一項直覺的目標函式為平方距離。方法如下 盡可能減少所有觀察項目組合的平方錯誤總和:
在這個目標函式中,您只會加總觀察到的組合 (i、j), 也就是意見矩陣中的非零值不過 將多個值超過一個值,不是個好主意 — 能將損失降至最低,並無法產生無法有效建議的模型 而且一般而言不善
或許您可以將未觀察的值視為零,然後加總 矩陣的項目這樣有助於將 平方佛羅貝尼斯 及其約略值 之間的距離:
想要解決這個二次方程式問題 矩陣的單數值分解 (SVD)。不過 由於在實際應用程式中 矩陣 可能非常稀疏例如 與特定使用者看過的所有影片相比。 解決方案 (與模型的概略值對應) 可能趨近於零,最後成為不佳 一般化效能
相較之下,加權矩陣分解則會將目標分解 轉換為下列兩個總和:
- 已觀察項目的總和。
- 未觀察項目的總和 (視為零)。
以下的 超參數會將這兩個字詞加權。 系統就不會確立目標。 調整這個超參數非常重要。
其中 是查詢頻率和項目 j 的函式。
將目標函式降到最低
目標函式最小化的演算法包括:
隨機梯度下降 (SGD) 是一種將損失函式降到最低的通用方法。
加權交替最小正方形 (WALS) 是專門用於這項設定的 的特定目標
目標是 U 和 V 這兩個矩陣的二次方程式 (請注意 然而,這個問題並不是互通的)。WALS 的運作方式是 然後隨機交錯:
- 正在修正 與解決 的問題。
- 正在修正 與解決 的問題。
每個階段都能精確解決 (利用線性系統的解法),並能 發布。這個技巧保證會收斂,因為每個步驟 保證能減少損失
SGD 與 WALS
SGD 和 WALS 有優缺點。 請參閱以下資訊,瞭解兩者的比較結果:
SGD
相當靈活 — 可以使用其他損失 函式
可以平行處理。
較慢—不要以最快的速度交匯。
較難處理未觀察的項目 (需要 使用負取樣或重力)。
WALS
只仰賴損失正方形。
可以平行處理。
傳輸速度比 SGD 更快。
處理未觀察的項目更輕鬆。