- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 348字
- 2021-08-06 14:59:58
6.3.1 利用SGD来求解矩阵分解
假设用户u对标的物v的评分为ruv,u、v嵌入k维隐因子空间的向量分别为pu、qv,我们定义真实评分和预测评分的误差为euv,公式如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/104-5-i.jpg?sign=1739473481-Ck0bSp6Z9Rjx8Quo9dNPMZgMo7rJ46hc-0-35eb274296e0f68e632835e364382929)
式(6-1)对应的最优化问题的目标函数如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/104-6-i.jpg?sign=1739473481-8G4EfCe8eWi1EogQLL59wHAzTXu9UFKF-0-4944fd84d7d48ad1b3e394ad197d89ae)
f(pu,qv)对pu,qv求偏导数,具体计算如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/104-7-i.jpg?sign=1739473481-3jOGbbDPe5bAPRtnbwOL8Ecx8nIkzPpV-0-6b9348dd227914946bcb5d9386ac4c67)
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/105-i.jpg?sign=1739473481-V18XSBkt2aOvDM8fLAFDfoToQjXbNc6l-0-bb7e7eec08968d3f50cf5c934de21f7c)
有了偏导数,再沿着导数(梯度)相反的方向更新pu、qv,最终我们可以采用如下公式来更新pu、qv。
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/105-2-i.jpg?sign=1739473481-56btWjGGI4c89UZngO2RUX0xBNs2ItE0-0-54168a0c327cb8503ed0cb5deb26c675)
上式中为步长超参数,也称为学习率(导数前面的系数2可以吸收到参数中),取大于零的较小值。pu、qv先可以随机取值,通过上述公式不断更新pu、qv,直到收敛到最小值(一般是局部最小值),最终求得所有的pu、qv。
SGD方法一般可以快速收敛,但是对于海量数据,单机无法承载这么大的数据量,所以在单机上是无法或者在较短的时间内无法完成上述迭代计算的,这时可以采用ALS方法来求解,该方法可以非常容易地进行分布式拓展。