Collaborative Filtering with Temporal Dynamics------Yehuda Koren

  个体用户的喜好可能会随着时间有所改变,我们称之为concept drift(观念转移),推荐系统的一大任务就是出去暂时性的喜好的影响,而获取到用户长期喜好的features。concept drift包括新物品或新服务的出现(特定的节假日,季节性周期变化)---这些变化是群体性的变化(即大家都会有所转变);还有一些是各体性的变化(家庭结构的转变,用户的成长影响对电影,商品的喜好)---这些变化不能别建立在用户群级别上的模型所抓取。因此,我们旨在对每个用户建立concept drift模型,获取用户在时间轴上的行为转变。

  对每个用户建立模型,必然会产生行为数据少的问题(模型的建立仅基于当前用户行为数据),因此,抛弃或者分配低权重给古老的评分数据是不合适的,而需要在整个历史行为中提取出long-term(persistent signal),删除noise。

  以电影系统为例,以前用“3”表示不喜欢也不讨厌的用户,现在可能用“3”表示不喜欢了。另外,很多系统不能识别单设备多用户问题,简单的解决方案可能是用时间来划分使用者。

  Netflix数据集:从31 December,1999到31 December,2005,收集了480,000位用户在17,700部电影上超过100 million的评分记录,每部影片平均得到5,600条评分,每个用户平均给出208条评分。Netflix数据中的两个temporal effects:04年的时候平均评分从3.4上升到了3.6;随着电影年龄的增长,所获得的评分也在上升(老电影比新电影获得更高的评分):

  RMSE作为评分标准:RMSE上很小的进步对推荐系统top-N质量有很大的提升。

解决concept drift问题:

  1.instance selection:使用time-window(时间窗口),问题在于仅考虑窗口内的instances(且这些instances的significance都相同),同时抛弃了所有窗口外的  instances。

  2.instance weighting:估计instance的相关性给它一定的权重。使用时间衰减函数(time decay function),为过去的instances赋权。

  3.ensemble learning(集成学习):集成许多predictors,根据predictor与当前时间的相关性为predictor赋权(predictors that were more successful on recent instances get higher weights)。

principles: 

  1.需要一个能解释用户在整个时间轴上行为变化的模型,而不仅仅包括当前的行为。这是在每个时间片上提取signal,并且删除noise的基本条件。

  2.多种concepts变化需要捕捉,包括user-dependent,item-dependent,gradual以及sudden。

  3.essential to combine all those concepts within a single framework. This allows modeling interactions crossing users and items thereby identifying higher level patterns.

  4.不需要去推测用户未来可能的偏好(在稀疏数据下,这项工作很难),而是需要在历史数据中isolate persistent signal from transient noise。

4. TIME-AWARE FACTOR MODEL

  The baseline predictor:

  

  The factor model:

   

  完整的模型(包括隐式数据):

   

  we would not expect a signi?cant temporal variation of item characteristics,More speci?cally, we identify the following effects: (1) user biases(bu) change over time; (2) Item biases (bi) change over time; (3)User preferences (pu) change over time.

4.2 Time changing baseline predictors

  baseline predictors中两个主要关联的时间因素为:1.item的popularity会随着时间改变;2.用户的平均评分会随着时间改变。新的模型baseline predictor:

  

  首先处理bi(t),由于我们不期望影片的bias会在短期内有很大的改变(不像用户一样),因此我们将整个时间片进行划分(小的时间片可以有更好的性能,大的时间片每个片内有更多的数据),以10周为一片,共划分为30片,对每个时间t,赋予一个Bin(t)(即1到30之间的整数),这样就可以把bi(t)分为static以及time changing两部分:

   

  对于bu(t),我们需要能够检测到短暂的temporal effect(用户bias可以在短时间内发生比较大的变化);另外,我们不期望将用户也像物品一样分片(因为没有足够的评分数据)。

  首先定义一个线性模型的时间偏移量函数,表示当前评分时间与平均评分时间之间的距离,如下(本文算法中β=0.4):

    

  给每个用户分配一个αu,因此得到一个模型(简单的线性模型,需要学习bu以及αu两个参数):

  

  另外提供一个曲线式模型:

  

  这个模型只能捕获到gradual concept drift,而Netflix数据集中,有些用户在特定日子的评分趋向同一个值,这可以被描述成用户当天的心情。因此,为了解决这种short lived effects,分配给每个用户每天一个参数bu,t,用于吸收day-speci?c variability。

  Notice that in some applications the basic primitive time unit to work with can be shorter or longer than a day. E.g., our notion of day can be exchanged with a notion of a user session.

  Netflix数据集中,每个用户平均在40天有过评分,因此user bias平均需要40个参数,加入到模型中:

  

  

  采用stochastic gradient descent学习参数(需要20-30个iterations,λ=0.01):

  

  

  下表比较各种不同的baseline predictors之间的性能(用户bias比物品bias时间偏移显著,day-speci?c variability影响最大):

  

  

  periodic effects:有些物品可能在特定季节或特定节日比较热门;电视节目在一天的不同时段热门度也不同(dayparting);用户可能在周末更加表现出购物的欲望等等。解决方法是可以分配一个参数给物品或用户,这样,原式变成(由于未找到影片推荐系统中的periodic effects,因此文章不采用):

  

  

  由于不同用户给出的评分标准不同,因此在bi(t)上添加一个参数(RMSE降至0.9555):

  

  

  cu是静态部分,cu,t是day-speci?c variability。

  还未考虑用户与影片交互的部分,RMSE就已经降至0.9555,与Netflix自己的0.9514已经相差不多。

4.3 Time changing factor model

  用户的偏好会随着时间改变,类似公式(9),得出用户偏好转移公式(各参数的意思与公式(9)基本相同):

  

  将以上所有公式合并,就可得到最终的公式(timeSVD++,大约30次迭代后可以收敛):

  

  对比SVD,SVD++,timeSVD++三种算法,可以得到:

 

5. TEMPORAL DYNAMICS AT NEIGHBORHOODMODELS

  这部分是item-similarity随时间变化的模型,额外部分,暂时就这样了。

  

时间: 2024-10-13 14:36:30

Collaborative Filtering with Temporal Dynamics------Yehuda Koren的相关文章

【RS】Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model - 当因式分解遇上邻域:多层面协同过滤模型

[论文标题]Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model   (35th-ICML,PMLR) [论文作者]Yehuda Koren [论文链接]Paper (9-pages // Double column) [摘要] 推荐系统为用户提供个性化的产品或服务建议.这些系统通常依赖于协同过滤(CF),通过分析过去的事务来建立用户和产品之间的关联.比较成功的CF方法有两种,一种是直

推荐系统(recommender systems):预测电影评分--构造推荐系统的一种方法:协同过滤(collaborative filtering )

协同过滤(collaborative filtering )能自行学习所要使用的特征 如我们有某一个数据集,我们并不知道特征的值是多少,我们有一些用户对电影的评分,但是我们并不知道每部电影的特征(即每部电影到底有多少浪漫成份,有多少动作成份) 假设我们通过采访用户得到每个用户的喜好,如上图中的Alice喜欢爱情电影,不喜欢动作电影,则我们将θ(1)设为[0,5,0],如此设置θ(2),θ(3),θ(4)的值,这样我们有了每个用户的θ的值以及他们对电影的打分,就可以推断出每部电影的x(特征)的值.

collaborative filtering协同过滤

每次我想看电影的时候,都会去问我的朋友,小健.一般他推荐的电影,我都比较喜欢.显然不是所有人都有小健这样的能力.因为我碰巧和小健有类似的品味. 这个生活中的经验,实际上有着广泛的用途. 当系统需要为某个人做出推荐时,一种机器学习的算法是这样工作的:就是在一大群人中找出一部分与他品味类似的人,把这些人的喜欢的东西排序,然后推荐给他. 自然引出两个问题: 谁是与他相近品味的人: 怎么对这些人喜欢的东西排序: 对于上述两个问题有多种不同的答案,不同的答案意味着不同的算法. --- 问题1的答案有两种:

亚马逊 协同过滤算法 Collaborative filtering

这节课时郭强的三维课.他讲的是MAYA和max .自己对这个也不怎么的感兴趣.而且这个课感觉属于数字媒体.自己对游戏,动画,这些东西一点都不兴趣,比如大一的时候刚开学的时候,张瑞的数字媒体的导论课.还有就是秀霞的动画课,自己记录一下自己的思想我在网上看见了这样一个说法,说的是跟着本科生导师做项目.就比如一个人说的,先找一个APP运行一遍,然后再这个基础上修改,各种的粘贴代码.是继续的做这个项目,还是学一点计算机的基础知识了.开始写算法,亚马逊的协同过滤算法 第一:初次印象,进入一个网站的时候,可

【转载】协同过滤(Collaborative Filtering)

Collaborative Filtering 协同过滤的主要目标:由于网络信息量的增多,用户往往被淹没在信息的海洋里,很难很轻易的找到自己感兴趣的topic.协同过滤就是为了把用户最可能感兴趣的信息推送给用户(Recommer system). 协同过滤的方法: model-base,user-base,item-base,content-base. user-based:搜集用户profile.对于一个active user,找到跟其比较接近(或者相似)的几个neighbour.使用这些ne

[论文阅读&翻译]Item-to-Item Collaborative Filtering

Amazon.com Recommendations Item-to-Item Collaborative Filtering 个人感受: 这篇论文首先介绍了历史上的三种算法:传统协同过滤.聚类.基于搜索的算法.第一种方法在计算效率.少量数据上表现欠佳:第二种方法准确率欠佳:第三种方法比较"简单",因此提出了大量计算在线下的物品-物品的相似记录进行推荐. 揣测一下作者的思路,计算量大是因为数据量大,但是其中有价值的就是其中购买的物品,而且对于购买的物品来说,我们推荐的也是根据购买的物品

Item-to-Item Collaborative Filtering

Amazon.com Recommendations Item-to-Item Collaborative Filtering 个人感受: 这篇论文首先介绍了历史上的三种算法:传统协同过滤.聚类.基于搜索的算法.第一种方法在计算效率.少量数据上表现欠佳:第二种方法准确率欠佳:第三种方法比较"简单",因此提出了大量计算在线下的物品-物品的相似记录进行推荐. 揣测一下作者的思路,计算量大是因为数据量大,但是其中有价值的就是其中购买的物品,而且对于购买的物品来说,我们推荐的也是根据购买的物品

协同过滤 Collaborative Filtering

协同过滤 collaborative filtering 人以类聚,物以群分 相似度 1. Jaccard 相似度 定义为两个集合的交并比: Jaccard 距离,定义为 1 - J(A, B),衡量两个集合的区分度: 为什么 Jaccard 不适合协同过滤?—— 只考虑用户有没有看过,没考虑评分大小 2. 余弦相似度 根据两个向量夹角的余弦值来衡量相似度: 为什么余弦相似度不适合协同过滤?—— 不同用户各自评分总和不一样,导致评分占总比不一样,可能计算出和事实相反的结果. 3. Pearson

Collaborative Filtering

for i=1:6040 Ai=ratings(ratings(:,1)==i,:); for j=1:5 Labnum(i,j)=length(Ai(Ai(:,3)==j)); end num(i)=length(Ai(:,1)); end num=[[1:6040]',num'];numsort=sortrows(num,-2); Xratings1101_1500=[]; for i=1:1501 Xratings1101_1500=[Xratings1101_1500;ratingsNe