- 构建企业级推荐系统:算法、工程实现与案例分析
- 刘强
- 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的隐因子可以用该用户的所有特征的嵌入向量之和来表示,具体来说,可以表示为

同理,标的物i的隐因子也可以用该标的物所有特征的嵌入向量的和来表示,具体如下:

我们用分别表示用户u和标的物i的偏差向量。那么,用户u对标的物i的预测评分可以表示为

其中,f(x)可以采用如下logistic函数形式:

有了上面的基础介绍,最终可以用如下似然函数来定义问题的目标函数,并通过最大化似然函数求得eU、eI、bU、bI这些嵌入的特征向量。

上面利用特征的嵌入向量之和来表示用户或者标的物向量,这就很好地将元数据整合到了用户和标的物向量中了,再利用用户向量pu和标的物向量qi的内积加上偏差项,通过一个logistic函数来获得用户u对标的物i的偏好概率/得分,从介绍可以看到,该模型很好地将矩阵分解和元数据整合到了一个框架之下。感兴趣的读者可以详细阅读原文,对该方法做进一步了解(该文章给出了具体的代码实现,是一个非常好的学习资源,代码见https://github.com/lyst/lightfm)。