模型原理
引入
本文是论文Metadata Embeddings for User and Item Cold-start Recommendations的阅读笔记.
本片论文是用来进行推荐任务的LightFM包对应的原理. 对应的代码地址为lightfm, 论文地址为arXiv. 对应包使用的说明文档地址为Welcome to LightFM’s documentation!.
通常使用Matrix factorization(矩阵向量化)这类模型来做推荐任务, 会将所有的user和item根据他们之间的相互联系, 计算出分别的向量. 即每个user或item都会对应一个向量, 这个向量可以是通过主题模型, 矩阵分解, embedding, 或梯度迭代计算得到的.
但这种方法有个无法解决的问题, 即冷启动问题. 因为新的user或item没有相关联的信息, 无法计算得到对应的代表向量.
使用Content-based(CB)模型能够解决这个问题. CB模型将item通过其对应的metadata进行表示, 对于user也是相同的操作, 只是两者的metadata的内容不同. 这里的metadata可以看做属性, 对于单个user和item, 都对应着多个不同的属性. 这些属性是提前知道的, 不需要等到有交互操作时才产生. 然后通过一定的逻辑, 将这些属性综合起来, 得到一个user或item对应的向量.
但一般的CB模型, 将不同的user独立开来, 忽视了user之间的联系, 这就导致了CB模型在有关联数据的情况下, 表现比MF模型差很多, 因此对应的冷启动结果也会较差.
模型原理
LightFM模型是一种混合了上面两种思想的content-collaborative模型. 具体来说:
LightFM是一种MF模型. 这是因为它使用了协同过滤矩阵, 与协同过滤模型一样, 最终得到
user和item对应的向量的这种思想, 整体上与MF模型是一致的.LightFM是一种CB模型, 因为它是基于content-collaborative的.
user和item对应的向量不是直接计算得到的, 而是通过对应的metadata组合得到的.
具体来说相对于普通的协同过滤模型中的user和item交互关系, LightFM中的交互关系不是两者直接的, 而是content-collaborative, 这里的content指的就是metadata. user对应一个metadata集合, item对应另一个metadata集合, 交互关系就发生在metadata层面.
举例来说, 假设userA具有三种属性, itemB具有三种属性, 所以交互是这两组属性之间发生的, MF也是在这个层面上进行的, 得到的是每个metadata对应的向量, 这里指的是user以及item的metadata.
然后, 对于user, 其对应的向量是这个user包含的所有metadata对应的向量的加和平均.
通过这种方法, 综合了content-based和collaborative recommender两种角度, 也解决了冷启动的问题.
LightFM模型也可以完全等价于普通的MF模型. 如果每个user都只对应一个metadata, 而且不同的user对应的metadata没有重复, 就可以理解为user的metadata中包含的就是每个user的指示属性, 等价于one-hot. 因此就没有后面的metadata组合的步骤, 得到的向量直接就是user或item对应的向量.
模型定义
使用数学符号正式地定义模型.
为user集合, 为item集合. 为user的特征集合, 即user的metadata集合, 一个user可以有多个metadata(特征). 是item的特征集合.
每个user都可能与多个items发成交互关系, 这种关系可能是正面的, 也可能是负面的(对于评分评级系统来说, 关系是比较复杂的, 行为关系就只是二值关系). 所有user-item交互对记为. 这个集合是正面交互集合和负面交互集合的并集.
user和item在这里都是假定完全可以被他们的metadata所描述的. 对于每个user, 它所包含的所有的metadata集合记为, 同理, 对于每个item, 它所包含的所有的metadata集合记为.
对于user和item对应的每个metadata(特征), 分别用等长的(维的)embedding向量和来表示. 对应的每个metadata(特征)还有一个偏置, .
因此, user对应的向量为其包含的所有metadata对应embedding向量的和:
item对应的向量为:
user对应的偏置也是对应之和:
item对应的偏置为:
模型对user和item的预测值为两个embedding向量的点积再加上对应的偏置:
这里的函数在评分系统同一般使用identity function即, 在二值数据中使用sigmoid函数.
在最优化求解步骤中, 极大似然函数:
使用
LightFM中提供了4种损失函数, 上面的损失函数只是默认指定的logistic损失函数. 另外还有BPR, WARP, k-OS WARP等损失函数. 再配合adagrad或adadelta两种learning rate调整策略进行训练.
最后更新于
这有帮助吗?