带相似度的 RSVD 算法

目录:
1.1 理论分析
1.2 代码解析
1.3 最终结果
1.4 后续工作

1. 带相似度的RSVD算法

1.1 理论分析

1.1.1 RSVD

RSVD,又称“ The Regularized SVD algorithm ”。这模型是接下来改进算法的 Baseline 。

那么接下来就简单介绍一下这个 RSVD 的损失函数和推导公式,迭代方法是 SGD。

  • 损失函数
RSVD 的损失函数
  • 推导公式
RSVD 的推导公式

接下来就是添加相似度进行改进了。

1.1.2 添加相似度的 RSVD

参考论文: An experimental study on implicit social recommendation - Hao Ma

论文中关于损失函数的描述如下:

添加相似度的 RSVD 的损失函数

用户矩阵和项目矩阵通过 SGD(即随机梯度下降)方法更新。

下面两条公式是根据损失函数(即公式 3 )推导得到的。代表含义是:用户矩阵和项目矩阵的更新公式。

添加相似度的 RSVD 的推导公式

从论文中的这段可到 和 的更新公式,代码中严格按照此公式改编

1.2 代码解析

下面是截取整个文件中的部分代码,这里的设计思路主要是根据 1.1 的公式(4)来编写的。

  1. 的更新方式
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, :])
  1. 的更新方式
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 的计算公式如下:

MSE 的计算公式

1.3.2 对比结果

下面表格是对比结果,模型共两个:baseline 和 添加相似度的 SGD

  • 名词解释:
    • Iteration:迭代次数
    • 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%

从表格中可以得到的信息是,在随着训练迭代次数的增加,添加相似度的 SGD 算法与原本未加相似度的 SGD 算法的差距一直再减少,并最终在迭代次数为 200 时,test_mse 的结果比未加的提升了。这表明添加相似度后,模型的泛化能力进一步提高,不容易过拟合。

1.4 接下来的工作

可以考虑给模型添加更多的特征或者其他信息。如时间、地理等信息。来维持模型的长期收益。

你可能感兴趣的:(带相似度的 RSVD 算法)