目錄:
1.1 理論分析
1.2 代碼解析
1.3 最終結果
1.4 后續(xù)工作
1. 帶相似度的RSVD算法
1.1 理論分析
1.1.1 RSVD
RSVD伞芹,又稱“ The Regularized SVD algorithm ”尽楔。這模型是接下來改進算法的 Baseline 呼渣。
那么接下來就簡單介紹一下這個 RSVD 的損失函數(shù)和推導公式癣防,迭代方法是 SGD绍豁。
- 損失函數(shù)
- 推導公式
接下來就是添加相似度進行改進了。
1.1.2 添加相似度的 RSVD
參考論文: An experimental study on implicit social recommendation - Hao Ma
論文中關于損失函數(shù)的描述如下:
用戶矩陣和項目矩陣通過 SGD(即隨機梯度下降)方法更新驶悟。
下面兩條公式是根據(jù)損失函數(shù)(即公式 3 )推導得到的胡野。代表含義是:用戶矩陣和項目矩陣的更新公式。
從論文中的這段可到 和 的更新公式痕鳍,代碼中嚴格按照此公式改編
1.2 代碼解析
下面是截取整個文件中的部分代碼硫豆,這里的設計思路主要是根據(jù) 1.1 的公式(4)來編寫的。
- 的更新方式
sum_pearsion += self.persion_score[u, f] * (self.user_vecs[u, :] -
self.user_vecs[f, :])
self.pearsion_arr = self.persion_reg * sum_pearsion
self.user_vecs[u, :] += self.learning_rate * \
(e * self.item_vecs[i, :] - \
self.pearsion_arr - \
self.user_fact_reg *
self.user_vecs[u, :])
- 的更新方式
self.item_vecs[i, :] += self.learning_rate * \
(e * self.user_vecs[u, :] - \
self.item_fact_reg *
self.item_vecs[i, :])
1.3 最終結果
1.3.1 評價指標
此次對模型的評價指標是 MSE笼呆,用來評價模型的準確度以及對比 baseline 模型熊响,看看添加相似度后準度是否有提升。
MSE 的計算公式如下:
1.3.2 對比結果
下面表格是對比結果抄邀,模型共兩個:baseline 和 添加相似度的 SGD
- 名詞解釋:
- Iteration:迭代次數(shù)
- train_mse:訓練集訓練時的 MSE
- test_mse:測試集測試時的 MSE
原SGD | Iteration | train_mse | test_mse | 加用戶相似度SGD | Iteration | train_mse | test_mse | train_mse 對比提升 | test_mse對比提升 |
---|---|---|---|---|---|---|---|---|---|
1 | 1.141784386 | 1.188415965 | 1 | 13.67562 | 14.20713 | -1097.74% | -1095.47% | ||
10 | 0.917914525 | 1.011238497 | 10 | 6.573647 | 9.61891 | -616.15% | -851.20% | ||
25 | 0.866157052 | 0.963646883 | 25 | 1.179691 | 1.99135 | -36.20% | -106.65% | ||
50 | 0.838677125 | 0.943052707 | 50 | 0.891645 | 1.107708 | -6.32% | -17.46% | ||
100 | 0.754480384 | 0.924777349 | 100 | 0.76197 | 0.948601 | -0.99% | -2.58% | ||
200 | 0.402944841 | 0.917382603 | 200 | 0.514333 | 0.898999 | -27.64% | 2.00% | ||
從表格中可以得到的信息是耘眨,在隨著訓練迭代次數(shù)的增加,添加相似度的 SGD 算法與原本未加相似度的 SGD 算法的差距一直再減少境肾,并最終在迭代次數(shù)為 200 時,test_mse 的結果比未加的提升了胆屿。這表明添加相似度后奥喻,模型的泛化能力進一步提高,不容易過擬合非迹。
1.4 接下來的工作
可以考慮給模型添加更多的特征或者其他信息环鲤。如時間、地理等信息憎兽。來維持模型的長期收益冷离。