个人翻译Collaborative Filtering with Temporal Dynamics
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随着时间的推移,客户对产品的偏好正在发生变化。
随着新的选择的出现,产品的感知和流行度也在不断变化。
同样,消费者的偏好也在不断变化,这使得他们重新定义了自己的品味。
因此,在设计推荐系统或一般客户偏好模型时,时间动力学建模应该是关键。
然而,这带来了独特的挑战。
在与多个产品和客户相交的生态系统中,许多不同的特性同时发生变化,而其中许多特性相互影响,这些变化往往是微妙的,并与一些数据实例相关联。
这将该问题与概念漂移探索区分开,后者主要跟踪单个概念。
经典的时间窗口或实例衰变方法无法工作,因为它们在丢弃数据实例时丢失了太多的信号。
需要一种更敏感的方法,以便更好地区分瞬态效应和长期模式。
我们提供的范例是创建一个模型,跟踪数据生命周期中时间变化的行为。
这允许我们利用所有数据实例的相关组件,同时只丢弃建模为不相关的组件。
因此,我们改进了两种领先的协同过滤推荐方法。
由Netflix公司对一个大的电影分级数据集进行评估。
结果是令人鼓舞的,比先前在这个数据集上报道的更好。
时间漂移数据建模是数据挖掘的核心问题。
通常,数据是随时间而变化的,并且应该不断更新最新的建模以反映其当前的性质。
对这类数据的分析需要在对对未来行为影响非常小的暂时性影响进行折扣,同时捕捉反映数据内在本质的长期趋势之间找到恰当的平衡。
这导致了许多关于这个问题的工作,这也被广泛地称为概念漂移;
参见例[15,25]。
客户偏好的时间变化建模带来了独特的挑战。
在这种情况下的一种概念漂移是新产品或服务的出现改变了客户的焦点。
与此相关的是季节性的变化,或特定的假期,这导致了特色购物模式。
这些变化都影响着整个群体,属于传统概念漂移研究的范畴。
然而,许多用户行为的变化是由本地化因素驱动的。
例如,家庭结构的变化可以彻底改变购物模式。
同样,个人也会逐渐改变他们对电影和音乐的品味。
所有这些变化都不能被寻求全局概念漂移的方法捕捉到。
相反,对于每个客户,我们关注的是不同类型的概念漂移,每种漂移都发生在不同的时间框架内,并被推向不同的方向。
在每个个体级别上对时间变化进行建模的需求大大减少了用于检测这种变化的可用数据量。
因此,我们应该使用更精确的技术,而不是那些足以建模全球变化的技术。
例如,用户过去的事务不再能丢弃或仅仅是降低权重,这些从过去的操作中提取出的信号对于理解用户本身或是对其他用户建模是没有价值的。
然而,我们需要在排除瞬态噪声的同时提取长期模式。
这需要一种更敏感的方法来解决客户偏好的漂移问题。
仅仅专注于识别和建模与现在或不久的将来相关的东西是不够的。
相反,我们需要对过去的每个点进行精确建模,这就允许我们区分应该捕获的持久信号和应该与模型的长期部分隔离的噪声。
建模用户偏好与多个应用程序相关,从垃圾邮件过滤到篮子分析。
我们在本文中主要关注的是为构建推荐系统建模用户偏好,但我们相信我们学到的一般经验也适用于其他应用程序。
自动推荐是一个非常活跃的研究领域。
这类系统分析用户对产品或产品的兴趣模式,以提供符合用户口味的个性化产品推荐。
我们希望用户的偏好随时间而改变。
这可能是多种因素造成的,有些是基本因素,有些则是间接因素。
例如,在电影推荐系统中,用户可以改变他们喜欢的类型,或者对演员或导演采取新的观点。
此外,他们可能会改变他们反馈的表现。
例如,在一个用户为产品提供星级评级的系统中,一个曾经通过“3星”输入来表示中性偏好的用户,现在可能会对相同的“3星”反馈表示不满。
同样,我们知道用户的反馈会受到锚定的影响,即当前的评级应该与同一短时间内给出的其他评级相比较。
最后,在许多情况下,系统不能将访问同一帐户的不同家庭成员分开,即使每个成员有不同的品味,并且应该有一个单独的模型。
这实际上创建了一个与帐户关联的多层元用户。
要区分不同的人,一种方法是假设时间相邻的访问是由同一成员(有时代表其他成员)完成的,这种方法可以很自然地通过假设客户随波逐流的时间模型获得。
所有这些模式和类似的模式应该使时间建模成为构建推荐系统的一个主要因素。
尽管如此,除了极少数的例外(在第7节中提到),推荐文献没有处理用户行为的时间变化。
也许,因为用户行为是由许多不同的概念漂移组成的,所有这些漂移都是在不同的时间框架和不同的方向上进行操作的,因此处理概念漂移和时间数据的通用方法在这种设置中不太成功。
我们展示了在用户行为中捕捉时间漂移模式对于提高推荐的准确性至关重要。
这也给了我们希望,对于推荐器的成功时间建模的见解将在其他数据挖掘应用程序中有用。
我们的测试台是Netflix公司发布的一个大型电影分级数据集,作为[4]竞赛的基础。
这个数据集结合了几个优点来完成手头的任务。
首先,它不是一个综合数据集,而是包含由真正付费的Netflix订户提供的用户电影评级。
此外,它相对较大的尺寸——超过1亿个日期标记的评级——使它成为现实生活中大型数据集的更好的代理,同时也重视计算效率。
最后,与其他一些主要数据集不同,时间效应是自然的,不是人为引入的。
这个数据集中出现的两个有趣的(如果不令人惊讶的话)时间效应如图1所示。
其中一个影响是2004年初评级标准的突然转变。
当时,平均评级值从3.4颗左右跃升至3.6颗以上。
另一个重要的影响是,电影的收视率会随着电影年龄的增长而上升。
也就是说,老电影比新电影获得更高的收视率。
在第6节,我们将回到这些现象,并使用我们的时间模型来解释它们的起源。
这项工作的主要贡献是提出了一种方法和具体的技术,以建模时间漂移用户偏好在推荐系统的背景下。
本文所提出的方法应用于上述广泛分析的电影收视率数据集,使我们能够坚定地将我们的方法与最近报道的方法进行比较。
我们表明,通过整合时间信息,我们取得了迄今为止报告的最佳结果,表明了揭示时间效应的重要性。
本文的其余部分组织如下。
在下一节中,我们将描述基本概念和符号。
然后,在第3节中,我们处理改变时间的用户首选项的原则得到了发展。
然后,这些原则以完全不同的方式在两种领先的推荐技术中得到实现:因子建模(第4章)和项-项neighborhhod建模(第5章)。
在1999年12月31日至2005年12月31日[4]的17770部电影中,大约50万Netflix匿名用户对超过1亿的电影评级数据进行了评估。
我们不知道有任何公开的可比较的数据集接近这个数据集的范围和质量。
为了保持与他人发布的结果的兼容性,我们采用了一些通用标准。
我们在Netflix公司设计的两套类似的设备上评估了我们的方法:一套是固定的(“探测设备”),另一套是测试设备(“测试设备”),每一套都有超过140万的收视率。
报告的结果在测试集中,而实验在坚持的集显示相同的结果。
在时间建模上下文中,需要注意的是,每个用户的测试实例比他/她的培训实例来得晚。
测试集上可实现的RMSE值在一个相当压缩的范围内,正如许多参加相关竞赛的参与者所报告的那样。
尽管如此,有证据表明RMSE条款的微小改进会对提出的少数几项建议[8]的质量产生重大影响。
推荐系统通常基于协同过滤(CF),它只依赖于过去的用户行为。
它不需要创建显式配置文件。
当每个项目都获得了足够的评级时,就像Netflix电影评级数据集一样,CF成为了首选和更精确的技术。
值得注意的是,CF技术不需要领域知识,也不需要大量的数据收集。
此外,直接依赖于用户行为可以发现复杂和意外的模式,这些模式很难或不可能使用已知的数据属性进行概要分析。
因此,CF在过去的十年里吸引了大量的关注,取得了显著的进步,并被一些成功的商业系统所采用,包括Amazon [9],TiVo和Netflix。
为了建立推荐,CF系统需要从根本上比较不同的对象:项目和用户。
促进这种比较的主要方法有两种,它们构成CF的两个主要原则:邻域方法和潜在因子模型。
邻域方法集中于计算项之间的关系,或者用户之间的关系。
项目-项目方法[9,14]根据同一用户对相似项目的评价来评估用户对项目的偏好。
从某种意义上说,这些方法将用户转换为项目空间,将他们视为一篮子评级的项目。
潜在因素模型(如矩阵分解)是一种替代方法,它将项目和用户转换为相同的潜在因素空间,从而使它们直接具有可比性。
潜在空间试图通过描述产品和用户从用户反馈中自动推断出的因素来解释评级。
例如,当产品是电影时,因素可能会衡量明显的维度,如喜剧与戏剧,动作的数量,或儿童取向;
定义不太明确的维度,如角色发展的深度或“离奇”;
或者完全不可解释的维度。
经常提到的概念漂移的例子之一是随着时间的推移改变客户的偏好,例如:“随着新产品和服务的出现,客户的偏好也会发生变化”[7]。
漂移客户偏好的这个方面突出了文献中一个常见的范例,即全局漂移概念影响整个数据。
然而,在许多应用中,包括我们的推荐系统的焦点应用,我们也面临着更复杂的概念漂移形式,在不同的时间点,许多用户相互关联的偏好以不同的方式漂移。
这需要学习算法跟踪多个变化的概念。
此外,与单个客户相关联的数据实例通常很少,因此需要更简洁、更有效的学习方法,从而最大限度地利用数据中的信号。
在一项关于概念漂移问题的调查中,Tsymbal[22]认为在文献中可以区分三种方法。
实例选择方法丢弃与系统当前状态不太相关的实例。
一个常见的变体是时间窗口方法只考虑最近的实例。
这个简单模型的一个可能缺点是,它在考虑的时间窗口中为所有实例提供了相同的重要性,同时完全丢弃了所有其他实例。
当时移是突然的时候这可能是合理的,但是当时移是逐渐的时候就不那么合理了。
因此,细化是实例加权,即实例是根据估计的相关性进行加权的。
通常,使用时间衰减函数,当实例发生在更深入的过去时,会低估它们的权重。
第三种方法基于集成学习,它维护了一系列预测器,共同产生最终结果。
这些预测因子是根据它们与当前时间点的相关性进行加权的,例如,在最近的实例中更成功的预测因子获得更高的权重。
我们对实例加权方案进行了广泛的实验,在邻域模型和因子模型上尝试了不同的指数时间衰减率。
一致的发现是,预测质量随着减少时间衰减而提高,在完全没有衰减的情况下达到最佳质量。
尽管用户确实会随着时间的推移而改变他们的品味和评分标准,正如我们之后所展示的。
然而,许多旧的偏好仍然存在,或者更重要的是,有助于在数据中建立有用的跨用户或跨产品模式。
因此,仅仅低估过去的操作就会随着丢失的噪声而丢失太多的信号,这对于每个用户的数据稀缺性是有害的。
至于集成学习,有多个模型,每个模型只考虑总行为的一小部分,可能会遗漏那些只有在考虑用户行为的全部范围时才能识别的全局模式。
在我们的案例中,他们的吸引力更小的原因是需要跟踪许多客户的独立漂流行为。
这就需要为每个用户构建一个单独的集成。
这样的分离将大大复杂化我们在多个时间点上跨用户集成信息的能力,这是协作过滤的基础。
例如,可以通过许多用户的相关操作建立产品之间有趣的关系,每个用户的操作都是在完全不同的时间点进行的。
捕获这样的集体信号需要构建一个包含所有用户和项目的单一模型。
Guideline:
我们寻找能够在整个时间段内解释用户行为的模型,而不仅仅是目前的行为(尽管存在性能限制)。
这是从每个时间点提取信号,同时只忽略噪声的关键。
应该捕获多个变化的概念。
有些依赖于用户,有些依赖于项目。
同样,有些是渐进的,有些是突然的。
虽然我们需要为每个用户和/或项目的独立漂移“概念”或首选项建模,但是将所有这些概念合并到一个框架中是很重要的。
这允许跨用户和项目建模交互,从而识别更高级别的模式。
一般来说,我们不试图推断未来的时间动态,例如,估计用户偏好的未来变化。
这可能很有帮助,但看起来太难了,特别是在已知数据数量有限的情况下。
相反,我们的目标是捕捉过去的时间模式,以便从瞬态噪声中分离出持久信号。
这确实有助于预测未来的行为。
现在我们来看看在处理两种主要的协同过滤方法——矩阵分解和邻域模型时,这些理想的原则是如何实现为具体的方法的。
CF的一个更成功的方法是基于矩阵分解模型[2,5,10,13,18]。
这种方法很好地模拟了时间效应。
在我们处理这些时间效应之前,我们想要建立一个静态因素模型的基础。
介绍矩阵分解模型
这种纯粹的因子模型很好地捕捉了用户和项目之间的交互。
然而,许多观察到的评级值是由于与用户或项目相关的影响,而与它们的交互无关。
一个主要的例子是典型的CF数据显示了大量的用户和项目偏差——即。
有些用户的评分高于其他用户,有些产品收到的评分高于其他。
我们将在基线预测器中封装那些不涉及用户项交互的效果。
这些基线预测器倾向于捕获大部分观察到的信号,特别是数据中的大部分时间动态。
因此,对它们进行精确的建模是至关重要的,这可以更好地识别真正代表用户项交互的信号部分,并且应该进行分解。
加偏置
bu和bi参数分别表示用户u和项目i与平均值的观测偏差。
例如,假设我们想要用户Joe对电影《泰坦尼克》的评级的基线估计。
现在,说平均评级所有电影,μ是3.7星。
此外,《泰坦尼克号》比一般的电影要好,所以它的星级往往比一般电影高0.5星。
另一方面,Joe是一个关键用户,他倾向于比平均值低0.3颗星。
因此,基线估计泰坦尼克号的评级将3.9星乔计算3.7−0.3 + 0.5。
之后使用SVD++因子模型
在这里,将评级分解为不同的部分是很方便的,因为它允许我们在分离中处理不同的时间方面。
更具体地说,我们确定了以下效应:(1)用户偏置(bu)随时间变化;
(2)项目偏差(bi)随时间变化;
(3)用户偏好(pu)随时间而变化。
另一方面,我们并不期望物品特征(qi)在时间上有显著的变化,因为物品与人类不同,它们的性质是静态的。
我们首先详细讨论包含在基线预测器中的时间效应。
通过两个主要的时间效应,大部分的时间变化都包含在基线预测因子中。
首先是要解决一个事实,即一件物品的受欢迎程度随着时间而改变。
例如,电影可能因外部事件(如新电影中演员的出现)的触发而进进出出。
这在我们的模型中表现出来,即项目偏见bi不是一个常数,而是一个随时间变化的函数。
第二个主要的时间效应与用户偏见有关——用户会随着时间的推移改变他们的基准评级。
例如,一个用户倾向于给一部平均的电影打分“四星”,现在可能会因为之前解释的各种原因给这样一部电影打分“三星”。
因此,在我们的模型中,我们希望将参数bu作为时间的函数。
这引出了一个时间敏感基线预测的模板
:
函数bui(t)表示第t天u对i的评级的基线估计值。
在这里,bu(t)和bi(t)是随时间变化的实值函数。
构建这些函数的确切方法应该反映一种合理的方法来参数化所涉及的时间变化。
我们将在电影评级数据集上下文中详细介绍我们的选择,该数据集展示了一些典型的考虑事项。
一个主要的区别是时间效应和更短暂的效应。
在电影评级的情况下,我们并不期望电影的受欢迎程度每天都在波动,而是在更长的一段时间内发生变化。
另一方面,我们观察到用户的影响每天都在变化,反映了客户行为的不一致性。
当建模用户偏见时,这需要更好的时间分辨率,而不是更低的分辨率,这足以捕获与项目相关的时间效果。
让我们从我们选择的改变时间的项目偏差开始- bi(t),它更容易捕捉,因为我们不需要最好的解决方案。
因此,一个适当的决策是将项目的偏见划分到基于时间的容器中。
在每个对应于一个箱子的时间段内,我们使用不同的项目偏见。
如何将时间轴划分为各个垃圾箱的决策应该在实现更好的分辨率(因此是更小的垃圾箱)和每个垃圾箱需要有足够的评级(因此是更大的垃圾箱)之间取得平衡。
对于电影评级数据,有各种各样的bin大小,产生的准确率大致相同。
在我们的实现中,每个bin对应大约连续10周的数据,导致数据集中所有天内总共有30个bin。
一天t与一个整数Bin(t)(在我们的数据中是1到30之间的数字)相关联,这样电影的偏差被分割成一个固定的部分和一个时间变化的部分:
虽然组合参数在项目上工作得很好,但在用户方面则是一个挑战。
一方面,我们希望有更好的分辨率让用户检测非常短的时间效应。
另一方面,我们并不期望每个用户都有足够的评级来对独立的垃圾箱做出可靠的估计。
时间用户行为的参数化可以考虑不同的函数形式,具有不同的复杂性和准确性。
介绍时间函数(见笔记)
到目前为止,我们已经讨论了用于建模用户偏差的平滑函数,该函数很好地配合了渐进概念漂移。
然而,在许多应用程序中,突然出现与一天或会话相关的“尖峰”。
例如,在电影评级数据集中,我们发现一个用户一天给出的多重评级往往集中在一个值上。
这样的影响不会超过一天。
这可能反映了用户当天的情绪,一天内给出的评分对彼此的影响,或者多人账户中实际评分者的变化。
为了解决这种短暂的影响,我们为每个用户和每一天分配一个参数,吸收特定于一天的变化。
这个参数用bu,t表示。
请注意,在某些应用程序中,要使用的基本原始时间单位可能比一天短或更长。
例如,我们的日期概念可以与用户的概念交换。
在Netflix的电影评级数据中,用户平均会在40天内进行评级。
因此,使用bu,t平均需要40个参数来描述每个用户的偏见。
预计bu,t作为一个独立的捕获用户偏见的工具是不够的,因为它忽略了所有跨越一天以上的信号。
因此,它作为前面描述的方案中的附加组件。
时间线性模型(7)为:
基线预测器本身不能产生个性化的推荐,因为它忽略了用户和项目之间的所有交互。
从某种意义上说,它捕获的是与建立建议不太相关的数据部分,这样做可以得到准确的建议。
尽管如此,为了更好地评估基于时间的用户偏差的各种选择的相对优点,我们将把它们作为独立的预测器进行比较。
利用随机梯度下降法,使相关的正则化平方误差降至最小。
例如,在我们的实际实现中,我们采用规则(9)对漂移的用户偏差进行建模,从而得出基线预测器:
表1比较了各种建议的基线预测器在数据中解释信号的能力。
与往常一样,捕获的信号量是通过测试集上的均方根误差来度量的。
作为提醒,测试用例比同一用户的训练用例来得晚。
我们将预测符编码如下:
表中显示,虽然时间电影效果驻留在数据中(将RMSE从0.9799降低到0.9771),但是用户偏见的漂移影响更大。
与线性模型相比,样条曲线在建模用户效果时的额外灵活性可以提高精度。
然而,用户偏差的突然变化是最显著的,这是由每日参数捕捉到的。
实际上,当包含这些变化时,线性建模(“线性+”)和样条建模(“样条+”)之间的差异实际上就消失了。
除了目前描述的时间效应之外,还可以使用相同的方法来捕捉更多的效应。
一个主要的例子是捕捉周期效应。
例如,一些产品可以在特定的季节或接近特定的假期时更受欢迎。
同样地,不同类型的电视或广播节目在一天中的不同时段都很受欢迎。
在用户方面也可以发现周期性的影响。
例如,用户在周末的态度和购买模式可能与工作日不同。
建模这种周期性影响的一种方法是为项目或用户的时间段组合指定一个参数。
这样,(6)的item bias:
同样,用户的也需要改变
我们无法在电影数据集中发现具有显著预测能力的周期效应,因此我们报告的结果不包括这些。
在基本预测器范围内的另一个时间效应与用户评级的变化有关。
虽然bi(t)是t时刻i项价值的用户独立度量,但用户对这种度量的反应往往不同。
例如,不同的用户使用不同的评定量表,一个用户可以随着时间的推移改变他的评定量表。
因此,电影偏见的原始价值并不是完全独立于用户的。
为了解决这个问题,我们向基线预测器添加了一个与时间相关的缩放特性,用cu(t)表示。
因此,基线预测因子(11)为:
Time changing factor model
在前面的小节中,我们讨论了时间如何影响基线预测器。
但是,正如前面所提到的,时间动态超出了这个范围,它们还会影响用户的首选项,从而影响用户和项之间的交互。
随着时间的推移,用户会改变他们的偏好。
例如,“心理惊悚片”的粉丝可能在一年后成为“犯罪剧”的粉丝。
同样,人类也会改变对某些演员和导演的看法。
这种效应是通过将用户因素(向量pu)作为时间的函数来建模的。
同样,我们需要在非常精细的每日基础上对这些变化进行建模,同时面对内置的用户评级稀缺。