SVDFeature

引言

  KDD-Cup上使用的Yahoo!音乐数据进行推荐与利用Netflix电影数据进行推荐的区别:
(1)数据集跨度超过6000天,与电影相比,用户的音乐偏好更多样化,更不可预测,因为音乐的选择更多。此外,流派和艺术家的流行度变化也更快。需要考虑到时间变化效应;
(2)训练数据和测试数据都有日期信息和时刻信息。用户可能一天只能看一部电影,但是用户一天可以听多首歌。而且用户一天的心情可能不断地变化,在一天的不同时刻听不同的歌曲,因此考虑到之前模型没有考虑到的时刻time信息可能会得到更精确的用户模型。
(3)Yahoo!音乐数据包含的产品内容信息有:音乐流派,艺术家,专辑,一首歌。这些构成一个分类层级。直观上,一个用户对一首歌的洗好可能受他对该歌手或者这首歌的风格所影响。类似地,如果用户讨厌一个艺人,那么他可能不会给这首歌较高的评分。为了刻画这样的偏好,我们设计了一种下向的参数分享方案,使得分类较低的的参数分享方案依赖于它的上级,反之则不成立。
(4)Yahoo!音乐数据规模是Netflix数据的30倍。稀疏度更高,用户和产品的特征也更多样化,较难从单个模型学习到。这里设计了一个信息集成学习策略,使用描述用户、产品特征的元特征,训练一个非线性模型来预测。

实验表明,将日期,时间和分类信息融入到矩阵分解中可以提升基准矩阵分解的性能;而多个模型的信息集成的效果也远胜于单模型的效果。

基本知识

基本矩阵分解模型

带用户偏差和产品偏差的矩阵分解模型

r^ui=f(pTuqi+au+bi)(1)

其中 f() 是一个变形函数可以将一个实值匹配到一个确定范围内。这里使用的是sigmoid函数:
f(x)=11+exp(x)(2)

可以使得评分在0-1之内,我们可以通过将上式乘以100将评分映射到Yahoo!音乐数据的评分尺度之内。
上式的求解方式:
mina,b,p,q(u,i)K(ruif(pTuqi+au+bi))2+λ1(upu2+iqi2)+λ2(a2+b2)(3)

其中 λ1 λ2 是控制正则化程度的参数。

融合邻居信息

r^ui=f(au+bi+pTuqi+|N(u,i;k)|12jN(u,i;k)wij(rujr¯u)(4)

这里 N(u,i;k) 表示的是用户 u 评价过的、与产品i最相似的 k 个产品(SVD++结合的邻域模型都是产品的邻居)。传统的邻域方法依赖于余弦或者皮尔逊相似度方法来定义参数wij。在SVD++中将 wij 视作与用户和产品特征向量一样的待学习的参数。在计算过程中,我们仅需要存储和更新每个产品的 k 近邻的参数,也就是k×n个参数,其中 n 是产品个数。作者使用一个map-reduce集群来预计算k近邻(使用皮尔逊相似度方法作为计算指标)。然后对每条评分记录在单机上预计算 N(u,i;k) 。有了这些预计算信息后,我们就可以有效使用第6节的方法了。

使用隐式反馈

一般意义上,隐式反馈可以指除了评分之外用户在产品上的任何形式的行为。隐式反馈是用户偏好欠精确的表征,但是这种数据更为丰富也更易获取。对于音乐推荐来说,用户的听歌历史例如他听某首歌听了多少次可以是一种很有用的隐式反馈。不过,这种数据在KDD-Cup数据集中并不存在。因此我们考虑另一种简单的隐式反馈,用户是否评价过该产品。这种类型的隐式反馈让我们可以利用测试数据,测试数据不包含评分。预测函数为:

r^ui=f(au+bi+(pTu+|R(u)|12jR(u)yTj)qi)(5)

其中 R(u) 表示用户 u 评价过的产品集合。每个产品都被分配一个特征向量yj,维度与用户/产品向量 pu qi 相同都为 k |R(u)|12为标准化反馈的经验参数。(使得隐反馈较多的用户的预测评分偏离基准评分,较少的更靠近基准评分)
  我们还是用了另外一种隐式反馈称作“局部隐式反馈”。我们没有将用户评价过的所有产品都融入 R(u) 进来。而是将 R(u) 限制为与待测产品在相同的当前评价分钟内的产品。

模型学习

  我们使用随机梯度下降方法来学习大规模数据。当 f(x)=x 时有 eui=ruir^ui ;当 f(x)=sigmoid(x) 时我们定义 eui=(ruir^ui)r^ui(1r^ui) 。模型参数根据如下方程进行更新:

pupuγ(λ1pueui(pTu+|R(u)|12jR(u)yTj))qiqiγ(λ1qieuipu)yjyjγ(λ2yj|R(u)|12euipu)wijwijγ(λ2wijeui(rujr¯u))auauγ(λ3aueui)bibiγ(λ3bieui)

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值