模型原理

引入

本文是论文Metadata Embeddings for User and Item Cold-start Recommendations的阅读笔记.

本片论文是用来进行推荐任务的LightFM包对应的原理. 对应的代码地址为lightfm, 论文地址为arXiv. 对应包使用的说明文档地址为Welcome to LightFM’s documentation!.

通常使用Matrix factorization(矩阵向量化)这类模型来做推荐任务, 会将所有的useritem根据他们之间的相互联系, 计算出分别的向量. 即每个useritem都会对应一个向量, 这个向量可以是通过主题模型, 矩阵分解, embedding, 或梯度迭代计算得到的.

但这种方法有个无法解决的问题, 即冷启动问题. 因为新的useritem没有相关联的信息, 无法计算得到对应的代表向量.

使用Content-based(CB)模型能够解决这个问题. CB模型将item通过其对应的metadata进行表示, 对于user也是相同的操作, 只是两者的metadata的内容不同. 这里的metadata可以看做属性, 对于单个useritem, 都对应着多个不同的属性. 这些属性是提前知道的, 不需要等到有交互操作时才产生. 然后通过一定的逻辑, 将这些属性综合起来, 得到一个useritem对应的向量.

但一般的CB模型, 将不同的user独立开来, 忽视了user之间的联系, 这就导致了CB模型在有关联数据的情况下, 表现比MF模型差很多, 因此对应的冷启动结果也会较差.

模型原理

LightFM模型是一种混合了上面两种思想的content-collaborative模型. 具体来说:

  • LightFM是一种MF模型. 这是因为它使用了协同过滤矩阵, 与协同过滤模型一样, 最终得到useritem对应的向量的这种思想, 整体上与MF模型是一致的.

  • LightFM是一种CB模型, 因为它是基于content-collaborative的. useritem对应的向量不是直接计算得到的, 而是通过对应的metadata组合得到的.

具体来说相对于普通的协同过滤模型中的useritem交互关系, LightFM中的交互关系不是两者直接的, 而是content-collaborative, 这里的content指的就是metadata. user对应一个metadata集合, item对应另一个metadata集合, 交互关系就发生在metadata层面.

举例来说, 假设userA具有三种属性, itemB具有三种属性, 所以交互是这两组属性之间发生的, MF也是在这个层面上进行的, 得到的是每个metadata对应的向量, 这里指的是user以及item的metadata.

然后, 对于user, 其对应的向量是这个user包含的所有metadata对应的向量的加和平均.

通过这种方法, 综合了content-basedcollaborative recommender两种角度, 也解决了冷启动的问题.

LightFM模型也可以完全等价于普通的MF模型. 如果每个user都只对应一个metadata, 而且不同的user对应的metadata没有重复, 就可以理解为user的metadata中包含的就是每个user的指示属性, 等价于one-hot. 因此就没有后面的metadata组合的步骤, 得到的向量直接就是useritem对应的向量.

模型定义

使用数学符号正式地定义模型.

UUuser集合, IIitem集合. FUF^Uuser的特征集合, 即user的metadata集合, 一个user可以有多个metadata(特征). FIF^Iitem的特征集合.

每个user都可能与多个items发成交互关系, 这种关系可能是正面的, 也可能是负面的(对于评分评级系统来说, 关系是比较复杂的, 行为关系就只是二值关系). 所有user-item交互对记为(u,i)U×I(u,i)\in{U\times{I}}. 这个集合是正面交互集合S+S^{+}和负面交互集合SS^{-}的并集.

useritem在这里都是假定完全可以被他们的metadata所描述的. 对于每个useruu, 它所包含的所有的metadata集合记为fuFUf_u\in{F^U}, 同理, 对于每个itemii, 它所包含的所有的metadata集合记为fiFIf_i\in{F^I}.

对于useritem对应的每个metadata(特征)ff, 分别用等长的(dd维的)embedding向量efUe_f^UefIe_f^I来表示. 对应的每个metadata(特征)还有一个偏置bfUb_f^U, bfIb_f^I.

因此, useruu对应的向量为其包含的所有metadata对应embedding向量的和:

qu=jfuejU\mathbb{q}_u=\sum\limits_{j\in{f_u}}\mathbb{e}_j^U

itemii对应的向量为:

pi=jfiejI\mathbb{p}_i=\sum\limits_{j\in{f_i}}\mathbb{e}_j^I

useruu对应的偏置也是对应之和:

bu=jfubjUb_u=\sum\limits_{j\in{f_u}}b_j^U

itemii对应的偏置为:

bi=jfjbiIb_i=\sum\limits_{j\in{f_j}}b_i^I

模型对useruuitemii的预测值为两个embedding向量的点积再加上对应的偏置:

r^ui=f(qupi+bu+bi)\hat{r}_{ui}=f(q_u \cdot p_i + b_u + b_i)

这里的函数f()f(\cdot)评分系统同一般使用identity functionf(x)=xf(x)=x, 在二值数据中使用sigmoid函数.

在最优化求解步骤中, 极大似然函数:

L(eU,eI,bU,bI)=(u,i)S+r^ui×(u,i)S(1r^ui)L(e^U, e^I, b^U, b^I)=\prod\limits_{(u,i)\in{S^{+}}}\hat{r}_{ui} \times \prod\limits_{(u,i)\in{S^{-}}}(1-\hat{r}_{ui})

使用

LightFM中提供了4种损失函数, 上面的损失函数只是默认指定的logistic损失函数. 另外还有BPR, WARP, k-OS WARP等损失函数. 再配合adagradadadelta两种learning rate调整策略进行训练.

最后更新于