本文翻译自<
为了表述通畅,文章采用第一人称视角。
一、Abstract
协同过滤方法由于user-item矩阵的稀疏性,效果受限。可以使用辅助信息解决这个问题。 在本文中,微软探索了如何利用知识库中的各种不同的信息去提升推荐系统的performance。 首先,为了使用知识库,我们设计了三个组件分别从物品的结构化内容,文本内容和视觉内容中提取语义特征。更确切的说,网络TransR提取物品的结构化信息(同时考虑nodes和relationships)。stacked denoising auto-encoders提取文本表达。stacked convolutional auto-encoders 提取物品视觉表达。最后我们提出整合的框架:Collaborative Knowledge Base Embedding(CKE)来联合学习协同过滤的隐式向量以及物品的基于知识库的语义表达。
1、Introduction
本文的贡献点:
目前为止(2016年的paper),第一次使用知识库中的结构化内容,文本的内容,视觉的内容进行推荐的方法。
使用了embedding方法自动提取语义representation。这些学习到的representation可以用在除了推荐以外的其他方面。
CKE能用同时提取feature representation和捕捉item 与 user之间的隐式关系。(隐式关系,我觉得就是item embedding)。
基于两个real-word数据集。我们进行了大量的实验。结果显示:我们的方法比baseline提升了很多。
2、Preliminary
2.1 隐式反馈
本文目标针对隐式反馈,所以user-item交互矩阵表示成如下:有交互为1,没有交互或不知道是否有交互为0。
2.2知识库
将推荐系统中的item映射到知识库中,举个例子:一个电影通常被映射成一个entity描述这个电影。这些entities用术语“item entities”表示。
知识库中的信息可以分成三部分:结构化知识,文本知识,视觉知识。
①:结构化知识 表现为知识库中的实体以及实体的联系。比如:对于一个电影来说,实体就表示为电影和他的属性:科幻电影,演员等。关系就表示实体之间的联系:出演,评分等 ②:文本知识 通常给出book or movie的topic ③:视觉知识 视觉信息很多,本文通常使用书的封面或一个电影的海报作为视觉知识。
问题的明确表达: 本文的推荐问题是:给定有结构化知识,文本知识,视觉知识的知识库以及user的隐式反馈,用我们的方法产生一个用户感兴趣的ranked list。
3、Overview
CKE的两个步骤: 1) knowledge base embedding 2) collaborative joint learning.
在知识库embedding阶段。使用Bayesian TransR提取结构化知识。使用Bayesian stacked denoising auto-encoder (Bayesian SDAE)提取文本知识。使用 Bayesian stacked convolutional autoencoder (Bayesian SCAE)提取视觉知识。
在协同联合学习阶段,物品的隐含向量最终表示为:item offset vector和第一阶段的三个embedding的融合。然后通过优化pair-wise ranking学习user,item向量。最终使用user,item的latent vector产生推荐。
4、KNOWLEDGE BASE EMBEDDING 阶段
4.1 Structural Embedding
结构化信息表现为一个network,因为一个实体有很多实体与之相连。那么把这个网络给映射到一个连续的向量空间就是我们需要做的事情。首先介绍TransR这个模型(他是一个state of the art的 network embedding方法,AAAI2015)。
TransR表示实体和关系在不同的语义空间下,并通过relation-specific 矩阵桥接。如下图:4.2 Textual Embedding
这部分显示介绍SDAE,然后再介绍 Bayesian SDAE。4.3 Visual Embedding
类似于4.2节的Bayesian SDAE的引入方法。 首先是SCAE5、COLLABORATIVE JOINT LEARNING阶段
这一部分主要是为了把从知识库中提取的item embedding融合到collabrative filtering 中去。其中η代表协同过滤中的物品的隐含向量。其他的三个分别代表从知识库中提取出来的特征。
然后使用pair-wise的形式:这个式子的意思是,对于用户i来说,相比j'来说,更喜欢j物品。θ表示模型参数。
6、EXPERIMENTS
分别使用书和电影这两个领域进行试验。 数据集: MovieLens-1M : consists of 1M ratings with 6,040 users and 3,706 movies. 去除掉评分数少于3的用户。
IntentBooks:由 Microsoft’s Bing search engine and Microsoft’s Satori knowledge base收集得到。这个数据集中,用户对书的兴趣由点击或查询操作产生。
** Satori knowledge base** :从这个知识库中提取structural knowledge, textual knowledge and visual knowledge为上面的两个数据集。
最后得到的数据集信息如下:
说明:sk代表结构化知识,tk代表文本知识,vk代表视觉知识。
然后开始做大量的实验,实验指标是MAP@K(mean average precision)和Recall@K。 数据集划分70:30划分。关于实验部分具体详情请参阅原论文。
下面说一下为什么使用Recall和MAP这两个指标吧:
对一个二分类问题,实际取值只有正、负两例,而实际预测出来的结果也只会有0,1两种取值。如果一个实例是正类,且被预测为正类,就是真正类(True Positive),如果是负类,被预测为正类,为假正类(False Positive),如果是负类被预测成负类。称为真负类(True Negative),正类被预测为负类称为假负类(False Negative)。
信息检索中,我们经常会关系“检索出的信息有多少比例是用户感兴趣的”以及“用户感兴趣的信息中有多少被检索出来了”。即查准和查全。这时候传统的错误率就不能体现出来了。
mAP的本质其实是多类检测中各类别最大召回率(recall)的一个平均值
计算mAP之前我们先要了解Precision和Recall也就是精确率和召回率。
精确率主要衡量模型做出预测的精准度,也就是TP在TP与FP和中的占比率
召回率主要用来衡量模型对positives的检测程度,也就是TP在TP与FN中的占比率
一般来说,我们希望上述两个指标都是越高越好,然而没有这么好的事情,准确率和召回率是一对矛盾的度量,一个高时另一个就会偏低,当然如果两个都低,那肯定时哪点除了问题。
实际多类别分类任务中,我们通常需要知道从top-1到top-N(N是所有测试样本个数)对应的precision和recall。显然随着我们选定的样本越来也多,recall一定会越来越高,而precision整体上会呈下降趋势。把recall当成横坐标,precision当成纵坐标,即可得到常用的precision-recall曲线。一个真实的P-R曲线如下:
计算AP: 首先设定一组阈值,[0, 0.1, 0.2, …, 1]。然后对于recall大于每一个阈值(比如recall>0.3),我们都会得到一个对应的最大precision。这样,我们就计算出了11个precision。AP即为这11个precision的平均值。这种方法英文叫做11-point interpolated average precision。
AP衡量的是学出来的模型在给定类别上的好坏,而mAP衡量的是学出的模型在所有类别上的好坏,得到AP后mAP的计算就变得很简单了,就是取所有AP的平均值。
实验总结: CKE(S)、CKE(T)、CKE(V)分别表示只用Structure,Textual或Visual的CKE模型。
①:CKE(S)、CKE(T)、CKE(V)都能beat掉baseline②:相较CKE(S),CKE(T)、CKE(V)提升的效果没有CKE(S)好,不过也是可以beat掉baseline。
③:CKE(STV)效果最好。
paper总结: 2016年的文章,十分新颖的将side information融合到矩阵分解的协同过滤模型中,同时对于不同domain的特征使用不同的网络去提取特征。