美文网首页
每日学习记录 2019-10-10

每日学习记录 2019-10-10

作者: hwang_zhic | 来源:发表于2019-10-11 10:23 被阅读0次

2019-10-10

问题的提出

ALS 和 RSVD模型的简介

  • ALS 的预测评分公式如下:

  • R \approx U V^{T}

其中:

  • R为打分矩阵(m*n,m表示用户个数,n表示物品个数)
  • U表示用户对隐含特征的偏好矩阵(m*k)
  • V表示物品对隐含特征的归属矩阵(n*K)

上述模型的参数就是U和V,求得U和V之后,就可以近似的得到用户对未评分物品的评分。

  • 另一个模型 RSVD 的预测评分公式如下:

  • \hat{r}_{u i}=U_{u .} V_{i .}^{T}+b_{u}+b_{i}+\mu

  • 其中:

    • \mu 为总电影的平均分
    • bu为用户u的属性值
    • bi为商品i的属性值

    上述模型的参数就是U,V,bu,bi和\mu,求得这些参数之后,就可以近似的得到用户对未评分物品的评分。

提出问题

现在想要把 RSVD 模型中的后三项(bu,bi和 \mu )添加到 ALS 中看看效果如何。

  • 原 ALS 的 Cost 函数(代价函数)为:

  • J(U, V)=\sum_{i}^{m} \sum_{j}^{n}\left[\left(r_{i j}-u_{i} v_{j}^{T}\right)^{2}+\lambda\left(\left\|u_{i}\right\|^{2}+\left\|v_{j}\right\|^{2}\right)\right]
    其中:λ 为正则项系数

因此问题如下:

  • 添加后三项(bu,bi和 \mu )到 ALS 模型中后,代价函数应该变成什么?

解决问题:

为了探究代价函数中是如何添加新的正则项,我写了一篇新的简书,里面描述了关于正则项的原理,作用,以及如何调整:

https://www.jianshu.com/p/c66c337294b9

在那篇简书中,提到了 2 种不同的正则项的形式:

  • 一是 L2 正则项,添加的是 w_{j}^{2},假设参数 w 是参与预测评分的参数
  • 二是 L1 正则项,添加的是 \left|w_{j}\right|,假设参数 w 是参与预测评分的参数
  • 而 L2 的效果通常比 L1 好,所以代价函数添加正则项时使用 L2 的形式

因此,我觉得 ALS 模型添加后三项的代价函数应变为:

  • J(U, V)=\sum_{i}^{m} \sum_{j}^{n}\left[\left(r_{i j}-u_{i} v_{j}^{T}-b_i-b_u-\mu\right)^{2}+\lambda\left(\left\|u_{i}\right\|^{2}+\left\|v_{j}\right\|^{2} + \left\|b_{i}\right\|^{2} + \left\|b_{u}\right\|^{2} \right)\right]

新的问题提出

原本的 ALS 代码将如何改编?

明天10-11的计划

查看代码,以及多个文章,看看如何改编代码。

计划源码使用 implicit 库的 movielens.py 的代码,在此基础上进行改编。

相关文章

网友评论

      本文标题:每日学习记录 2019-10-10

      本文链接:https://www.haomeiwen.com/subject/mwctmctx.html