引言
KDD-Cup上使用的Yahoo!音乐数据进行推荐与利用Netflix电影数据进行推荐的区别:
(1)数据集跨度超过6000天,与电影相比,用户的音乐偏好更多样化,更不可预测,因为音乐的选择更多。此外,流派和艺术家的流行度变化也更快。需要考虑到时间变化效应;
(2)训练数据和测试数据都有日期信息和时刻信息。用户可能一天只能看一部电影,但是用户一天可以听多首歌。而且用户一天的心情可能不断地变化,在一天的不同时刻听不同的歌曲,因此考虑到之前模型没有考虑到的时刻time信息可能会得到更精确的用户模型。
(3)Yahoo!音乐数据包含的产品内容信息有:音乐流派,艺术家,专辑,一首歌。这些构成一个分类层级。直观上,一个用户对一首歌的洗好可能受他对该歌手或者这首歌的风格所影响。类似地,如果用户讨厌一个艺人,那么他可能不会给这首歌较高的评分。为了刻画这样的偏好,我们设计了一种下向的参数分享方案,使得分类较低的的参数分享方案依赖于它的上级,反之则不成立。
(4)Yahoo!音乐数据规模是Netflix数据的30倍。稀疏度更高,用户和产品的特征也更多样化,较难从单个模型学习到。这里设计了一个信息集成学习策略,使用描述用户、产品特征的元特征,训练一个非线性模型来预测。
实验表明,将日期,时间和分类信息融入到矩阵分解中可以提升基准矩阵分解的性能;而多个模型的信息集成的效果也远胜于单模型的效果。
基本知识
基本矩阵分解模型
带用户偏差和产品偏差的矩阵分解模型
其中 f(⋅) 是一个变形函数可以将一个实值匹配到一个确定范围内。这里使用的是sigmoid函数:
可以使得评分在0-1之内,我们可以通过将上式乘以100将评分映射到Yahoo!音乐数据的评分尺度之内。
上式的求解方式:
其中 λ1 和 λ2 是控制正则化程度的参数。
融合邻居信息
这里 N(u,i;k) 表示的是用户 u 评价过的、与产品
使用隐式反馈
一般意义上,隐式反馈可以指除了评分之外用户在产品上的任何形式的行为。隐式反馈是用户偏好欠精确的表征,但是这种数据更为丰富也更易获取。对于音乐推荐来说,用户的听歌历史例如他听某首歌听了多少次可以是一种很有用的隐式反馈。不过,这种数据在KDD-Cup数据集中并不存在。因此我们考虑另一种简单的隐式反馈,用户是否评价过该产品。这种类型的隐式反馈让我们可以利用测试数据,测试数据不包含评分。预测函数为:
其中 R(u) 表示用户 u 评价过的产品集合。每个产品都被分配一个特征向量
我们还是用了另外一种隐式反馈称作“局部隐式反馈”。我们没有将用户评价过的所有产品都融入 R(u) 进来。而是将 R(u) 限制为与待测产品在相同的当前评价分钟内的产品。
模型学习
我们使用随机梯度下降方法来学习大规模数据。当
f(x)=x
时有
eui=rui−r^ui
;当
f(x)=sigmoid(x)
时我们定义
eui=(rui−r^ui)r^ui(1−r^ui)
。模型参数根据如下方程进行更新: