当今,各种用户与媒体资源的交互(对照片的点赞、浏览的视频、下载的音乐)相比于显示反馈(评分)是比较容易取得的。但是,协同过滤(CF)系统忽略了这些交互。在多媒体推荐中,存在着item级别和component级别的隐蔽性,它们模糊了用户的喜好特征。
比如说,用户"看过"某个视频这个信息,并不能告诉我们用户如何喜欢这个视频(item级别),也不知道用户喜欢视频的哪个部分(component级别)。本文就提出ACF解决这种问题。本模型包含两个部分:
很多时候,用户的交互主要是隐式的,比如"观看"某个视频、"点赞"某个照片、"播放"某个音乐。由于隐式行为难以反映用户讨厌什么(比如负面反馈),目前的CF方法都是考虑如何把错过的用户行为加入到用户喜好的建模上。但很少有人深入去研究这些行为。所以本文会基于两个级别的隐式反馈上进行推荐。
但是,直接建模是很难的,因为我们缺少ground-truth。我们提出了ACF,可以用远程监督的方式自动为两级反馈分配权重。ACF利用潜在因子模型,通过将item和user转换为相同的潜在因子空间,使其可以直接比较。
我们有一个user-item交互矩阵R,有交互的地方值为1,没有交互则为0,我们要利用矩阵R,去估计可能的交互。关于矩阵分解有两种方法:
貌似有用到neighborhood-based CF。ACF将评分公式看做latent factor Model与neighborhood-base CF的结合。 还提到了SVD++和FISM。值得一看。
做法:为item和component建立特征向量,通过两层的整合,最终得到用户特征向量,以此来进行评分预测。 其实公式列好以后,用梯度下降就好,梯度的公式计算都交给tensorflow做。各种特征向量一顿整合,最后得到分数和cost,把cost交给tensorflow计算梯度,一直迭代就行了。