- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 710字
- 2021-08-06 15:00:00
6.4.6 整合用户和标的物metadata信息
本章参考文献[9]给出了一类整合用户和标的物metadata信息的矩阵分解算法,该算法可以很好地处理用户和标的物冷启动问题,在同等条件下会比单独的内容推荐或者矩阵分解算法效果更好,该算法在全球时尚搜索引擎Lyst真实推荐场景下得到了验证。下面简单介绍一下该算法的思路。
U表示所有用户的集合,I表示所有标的物的集合。FU表示用户特征集合(年龄、性别、收入等),FI表示标的物特征集合(产地、价格等)。S+、S-分别表示用户对标的物的正负反馈集合。fu⊂FU是用户u的特征表示(每个用户用一系列特征来表示)。同理fi⊂FI,表示标的物i的特征集合。
对于每个特征f,我们用和
分别表示用户和标的物嵌入到d维的特征空间的特征向量。
和
分别表示用户和标的物的偏差项。
那么用户u的隐因子可以用该用户的所有特征的嵌入向量之和来表示,具体来说,可以表示为
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/109-7-i.jpg?sign=1739506747-OoKsSK3Av0i1q83Epwrbba6IiXCp87lS-0-27e97eab88a50c2a954f37add8b521a3)
同理,标的物i的隐因子也可以用该标的物所有特征的嵌入向量的和来表示,具体如下:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/110-i.jpg?sign=1739506747-KLM6321KMbQriNECHAeF7BR1OGlfSXNU-0-f0950430a806e386063146c2967e831a)
我们用分别表示用户u和标的物i的偏差向量。那么,用户u对标的物i的预测评分可以表示为
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/110-3-i.jpg?sign=1739506747-cAZRSF17Ds3bUlGIaDKj5wqKyqep6sl4-0-94ba864f45daa4b951240af52e2eb61b)
其中,f(x)可以采用如下logistic函数形式:
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/110-4-i.jpg?sign=1739506747-NFvOFE7K6oBnY7NiHIMZb5fNDyAHiX4C-0-b9fb9cda6fc76a25bbaab31759ca236a)
有了上面的基础介绍,最终可以用如下似然函数来定义问题的目标函数,并通过最大化似然函数求得eU、eI、bU、bI这些嵌入的特征向量。
![](https://epubservercos.yuewen.com/2D1332/20784355001359006/epubprivate/OEBPS/Images/110-5-i.jpg?sign=1739506747-uzY0UgvXQtPX5g2AWamURuaMH8X3wj3i-0-4140585e7e37a2a3c5022f391288e21c)
上面利用特征的嵌入向量之和来表示用户或者标的物向量,这就很好地将元数据整合到了用户和标的物向量中了,再利用用户向量pu和标的物向量qi的内积加上偏差项,通过一个logistic函数来获得用户u对标的物i的偏好概率/得分,从介绍可以看到,该模型很好地将矩阵分解和元数据整合到了一个框架之下。感兴趣的读者可以详细阅读原文,对该方法做进一步了解(该文章给出了具体的代码实现,是一个非常好的学习资源,代码见https://github.com/lyst/lightfm)。