经典论文笔记 | 当前(2005)推荐系统现状与改进建议

作者: 胖三斤66 | 来源:发表于2018-11-07 22:40 被阅读6次

一、前言

文献:Towards the Next Generation of Recommender Systems A Survey of the State-of-the-Art and Possible Extensions

这篇论文据说是推荐算法领域比较经典的论文,整理了当时(2005年)的推荐系统的发展现状并提出了一些改进思路。虽然年代比较久远,但依旧有助于队推荐系统有个大概的了解。

1.1 论文摘要

首先,论文将推荐系统分为 3 种类型:基于内容的推荐算法、协作的推荐算法以及混合型的推荐算法。章节结构先分别介绍这 3 种类型的推荐算法以及其局限性,然后针对上述谈到的局限性给出一些推荐系统的改进思路。

1.2 背景

推荐系统成为一个独立的研究领域是在 1990s 中期,因为第一篇关于协同过滤的论文的出现。随后,推荐系统成为一个重要的研究领域。

在最常见的表述中,推荐问题被简化为「预测用户对于尚未评分过的物品的评分问题」。 直观地,该预测评分通常基于用户特征信息、物品特征信息以及用户已评分过的物品评分数据。一旦我们可以预测尚未评分的物品的评分,我们就可以向用户推荐预测评分最高的物品。用公式表示如下:

推荐系统的公式化表示

补充说明:在推荐系统中,函数 u(c, s) 代表用户 u 对 item s 的评分。如 Tom 给电影 'Harry' 评分为 9,即 u(Tom, Harry) = 9。用户 c 是一个用户的特征向量,item s 是 一个 item 的特征向量。

1.3 简单实例描述构建推荐系统过程

如果上述公式描述理解比较抽象的话,下面用一个电影推荐系统讲解上述公式。

电影推荐系统实例(来自论文)

上图是一个电影推荐系统的用户对一些电影的评分表。其中,\phi 表示该用户尚未对这部电影进行评分,即我们需要通过推荐算法预测这个评分。

从已知评分到预测未知评分的过程就是推荐系统过程,这过程一般包括:

  1. 根据已知评分数据来训练模型,即预测函数 u,并通过验证集进行验证优化模型;
  2. 通过某项数值指标来判定模型的性能,比如均方误差指标;
  3. 当模型性能达到要求,就可用模型预测未知的评分;
  4. 一旦预测未知评分后,推荐系统将会 从对该用户的预测评分中 挑出最高或者 top N 的电影推荐给该用户。这步可用上面公式描述:\forall c \in C,s'_c = max_{s \in S} u(c, s)

这个模型 u 可以是基于机器学习,近似理论或者各种启发式。

1.4 推荐系统的分类

通常根据如何构建推荐系统,对推荐系统分为以下 3 个类别:

  1. 基于内容的推荐系统(Content-based recommendations):会将把与你过去喜欢的物品类似的物品推荐给你 (The user will be recommended items similar to the ones the user preferred in the past);
  2. 协作的推荐系统(Collaborative recommendations):推荐给你的物品将会是与你有相似品味的用户过去所喜欢的物品(The user will be recommended items that people with similar tastes and preferences liked in the past);
  3. 混合的推荐系统:是上面两种类型的结合

二、3 种推荐系统类型

2.1 基于内容的推荐系统

在基于内容的推荐系统中, u(c, s) 是基于用户 c 对与物品 s “相似”的物品 s_i \in S 的评分 u(c, s_i) 来估计的。比如在基于内容的电影推荐系统中,只有跟过去用户喜欢的电影有着较高相似度的电影才会被推荐给这个用户。

基于内容推荐算法起源于信息检索和信息过滤。也因此,基于内容的推荐算法经常应用于基于文本信息的物品的推荐,这些基于文本信息的物品一般使用关键字(keywords)表示。比如一个文档推荐系统,一个文档特征用 100 个关键字在这个网页内容的重要程度(即权值)来表示。

而在信息检索中,衡量一个关键字权值的最好方法之一: 「TF-IDF」

基于文本信息的物品特征表示

说完物品特征的表示,下面公式描述用户特征,包括用户品味和偏好。其中 w_{ci} 可以通过对用户已评分的物品的学习得到。

用户特征表示

有了用户特征和物品特征,就可以描述模型 u(c,s)
u(c,s) = score(ContentBasedProfile(c), Content(s))

其中 score() 是相似度的度量函数,即相似函数。常见的相似函数有 the cosine similarity measure。ContentBasedProfile(c), Content(s) 可以分别由向量 \underset{w_c}{\rightarrow},\underset{w_s}{\rightarrow} 表示。

基于内容推荐算法的模型

说了这么多公式,用一个例子串联起来。用户 c 在线读了很多跟医学相关的文章,我们希望基于内容的推荐系统给用户 c 推荐更多的医学相关的文章。那么关键字列表中与医学相关的关键字对于用户 c 而言权值较大,即假设关键字 k_1,k_2 是与医学相关的关键字,那么 w_{c1},w_{c2} 的值相当较大。那么,在用户 c 尚未阅读过的文章中 w_{1j},w_{2j} 值较大的文章更有可能推荐给用户 c,即这种文章的 u(c,j) 值会更大。

事实上,基于内容的推荐算法实现除了上述基于信息检索的方法之外,还有很多实现方法,比如贝叶斯分类器、决策树、人工神经网络等等机器学习方法。这些实现方法与基于信息检索的实现方法不同之处在于基于信息检索的实现方法中预测模型 u 是基于启发式公式,例如 cosine 相似函数;而机器学习的实现方法预测模型是一个通过对数据进行机器学习训练得到的模型。换句话说,基于内容的推荐算法可以划分为 2 种类别:1)基于启发式的,即使用信息检索技术;2)基于模型的,即使用机器学习方法训练模型。

举个例子,还是文章推荐系统,上文讲述都是运用基于启发式的基于内容推荐算法,下面以朴素贝叶斯分类器为例描述一下基于模型的基于内容推荐算法。朴素贝叶斯分类器判断文章与用户相关还是不相关的方法是:

  1. 先将待选文章分类(即训练分类模型);
  2. 然后学习用户偏好哪个类别的文章,接着推荐同类中用户尚未阅读的文章给用户。

而文章分类过程:1)计算文章属于每个类别的可能性;2)取可能性最大的类别作为这文章的类别。

2.1.1 基于内容的推荐算法的局限性

  1. 对于多媒体信息很难实现自动提取特征;对于纯文本的物品的特征提取非常简单,信息检索就能很好地完成自动提取特征任务。但对于多媒体物品的特征提取只能人工标记;

  2. 如果两种不同物品的特征表示是相同的,那么这两个物品无法区分;比如,两篇文章的由关键字权值组成的特征向量相同,但有一篇质量高,一篇质量低。但系统是无法区分的因为特征向量相同。

PS:没有理解这 2 点局限性。第 1 点应该是所有算法的通病「关于特征提取问题」,而第 2 点更像是因为基于信息检索的实现方法物品特征由关键字权值表示,这种做法相对不好,所以造成上述问题;而不能说是基于内容的推荐算法本身造成的。

  1. 过度专业化:基于内容的推荐系统不会推荐与用户过往尚未接触过的物品,比如用户从没吃过中国美食,他将永远不会接收到对中国餐厅的推荐信息;另一个问题,一个物品与用户过往接触过的物品过于相似可能不应该被推荐,比如一条新闻用户已经看过了,但另一篇文章换一种方法写了这条新闻,这篇文章不应该推荐给用户,因为重复了。

  2. 冷启动问题:当一个新用户拥有很少的评分数据,系统就无法准确推荐物品。

2.2 协作的推荐系统(Collaborative systems)

与基于内容的推荐系统不同,协作的推荐系统(或者称为协同过滤推荐系统 collaborative filtering systems) 预测用户对某物品的评分是基于与该用户相似的用户对这个物品的评分。

公式化的表达:「the model u(c,s) of item s for user c is estimated based on the models u(c_j,s) assigned to item s by those users c_j \in C who are “similar” to user c.」

举例说明,在电影推荐中,我们使用协作的推荐算法。我们会先找到跟用户 c 有着相似嗜好的用户,然后将这些相似的用户喜欢的电影推荐给用户 c。

协作的推荐算法可划分为 2 种类型:1)基于记忆的 / 基于启发式的(memory-based or heuristic-based);2)基于模型的

2.2.1 基于记忆的协作推荐算法

基于记忆的算法本质上是启发式公式,其基于用户的先前已评分的物品的整个集合来进行评分预测。公式化表示:「the value of the unknown rating r_{c,s} for user c and item s is usually computed as an aggregate of the ratings of some other (usually, the N most similar) users for the same item s」

启发式公式

其中 \hat{C} is the set of N users that are the most similar to user c and who have rated item s (N can range anywhere from 1 to the number of all users)。常见的聚合函数有:

3 种常见的聚合函数

常见用户间相似性度量方法有 2 种:

2 种常见用户间相似性度量方法

2.2.2 基于模型的协作推荐算法

思路:利用已评分的数据集来学习一个模型,然后用模型去预测。

假设学习得到一个概率模型(可以运用聚类算法或者贝叶斯网络学习模型),评分分数范围是 [0,n] 。那么用户 c 对物品 s 的评分为

概率模型预测评分

2.2.3 协作的推荐系统的局限性

  1. 冷启动问题:新加的用户在系统中没有数据导致无法找到相似的用户,进而没有有效地推荐。

  2. 新物品的增加:协作推荐系统仅依靠用户相似性进行推荐。如果一个新物品的增加,没有用户评分,就无法进行推荐直到有一部分用户对新物品进行评分。

  3. 协作推荐系统是基于用户间相似度推荐的,那么一些很少用户评分的物品势必很少被推荐。不同于基于内容的推荐系统是基于用户与物品的相似度推荐的,即使新进入物品很少评分,系统依旧可以对新物品进行推荐。

2.3 混合型的推荐系统

混合型的推荐系统顾名思义就是基于内容和协作的组合形成的推荐系统。而常见的组合方式有:

  1. 分别实现基于内容的与协作的推荐系统,然后结合两者的预测结果;
  2. 将一些基于内容的特征纳入协作的推荐系统中
  3. 将一些协作的特征纳入基于内容的的推荐系统中
  4. 构建全新模型同时结合两种推荐系统的特征

下面对这 4 种组合方式进行简单的描述

2.3.1 分别实现,然后结合

分别实现两种推荐系统就不说了,就说说如何结合两者的预测结果。

  1. 两种预测结果进行线性组合或者投票表决。
  2. 基于一个质量矩阵,选择预测结果可信度高的作为最终预测结果。比如,DailyLearner 系统的推荐系统,可以给予具有更高置信度的推荐,同时选择推荐更符合用户的过去评级的推荐系统。
  3. (个人想法)既然一个是基于用户间相似度的,一个是基于用户与物品相似度的,那么可以取两者推荐物品集合的交集。

2.3.2 将基于内容的特征加入到协作模型

基于内容的比较的是用户与物品的相似度,用户的特征向量靠近于物品的特征向量,这样的好处在于即使新进入物品很少评分,系统依旧可以对新物品进行推荐。而这一点正在协作模型做不到的。

思路:在传统的协作模型基础上,保留基于内容模型的用户特征向量。这样推荐系统不仅能根据用户间相似度推荐,还能推荐用户与物品的相似度高的物品。

2.3.3 将协作的特征加入到基于内容的模型

(没看懂,虚心请教)。论文说最流行的方法就是对基于内容的模型特征进行降维操作。

2.3.4 构建一个统一的模型

论文中介绍了不少结合基于内容和协作的推荐系统模型,如基于潜在语义分析的概率模型,还有使用贝叶斯混合效应回归模型,其采用马尔可夫链蒙特卡罗方法进行参数估计和预测。对于后者模型,论文还给出其中一种相当简单的实现(来自于A. Ansari, S. Essegaier, and R. Kohli, “Internet Recommendations Systems,” J. Marketing Research, pp. 363-375, Aug. 2000):

使用贝叶斯混合效应回归模型,其采用马尔可夫链蒙特卡罗方法进行参数估计和预测来构建一个统一的推荐模型

当然,对于这研究领域,还有很多很多模型这里就不多做描述了。

2.4 小结

3种推荐算法小结

三、改进建议

3.1 对用户和物品全面的理解(Comprehensive Understanding of Users and Items)

大多数的推荐系统只使用了用户和物品的特征向量,而用户的浏览记录、用户交易记录等等可用的数据没有得到充分的利用。

比如,经典的协同过滤算法仅使用了用户和物品特征中有关于评分的特征向量来建立推荐系统,没有充分运用用户和物品的特征所有信息。

当然这跟建立特征的技术发展有关。目前有很多先进的数据挖掘技术、sequence, and signature-based methods 等等来建立更完整的用户和物品特征。

3.2 基于模型的推荐技术的扩展(Extensions for Model-Based Recommendation Techniques)

一些基于模型的算法还应该结合一些数学或者计算机科学的知识,改进算法使其有更好的效果。个人理解就是,有些模型过于简单需要改进。

3.3 多维度推荐

一般的推荐系统只考虑两个维度:用户和物品。但对于一些应用来说,可能还要增加一些维度:上下文信息。上下文信息包括了时间、空间、季节等等。

比如,做一个旅游推荐,系统考虑到旅游地点的季节、用户与谁旅游、时间上的约束等等上下文信息;又比如说推荐电影,系统还需要考虑用户与谁去看、去电影院看还是在家看、观看时间是晚上还是白天等等上下文信息。

如果考虑上上下文信息的话,那么从二维度就变多维度。

考虑上上下文信息的话,那么从二维度就变多维度

个人感觉上下文信息可以先让传统推荐系统做出推荐后,根据上下文信息对推荐物品进行二次筛选,完全没必要增加到维度上增加模型的复杂度。

3.4 多重标准的评分(Multcriteria Ratings)

很多推荐系统是单一评分标准,比如电影评分和书籍评分。然而,有些应用,比如餐厅推荐就需要多重标准,要考虑餐厅的位置、装饰和味道等等多方面因素。如何将多重标准运用到推荐系统中?论文提供了以下几个方案:

  1. 找到帕累托最优解;
  2. 多重标准进行线性组成变成单一标准的问题;
  3. 选出最重要的标准,其余标准作为约束条件;
  4. 连续优化一个标准,将最优解转换为约束,并重复其他标准的过程。

(直接翻译原文的,自己理解在下面)

PS:不知道是我理解不对还是论文说的很牵强。评分本身就不是单标准的,电影评分也是如此。只不过是最终结果是一个数值罢了,这个数值也是由多个标准指标计算得到的。所以多重标准的评分压根算不上是改进建议。而且对物品有某些要求,可以把要求加入到物品特征中或者作为约束条件对推荐结果进行二次筛选。

3.5 非侵入性(Non Intrusiveness)

很多推荐系统需要用户的明确反馈或者参与(如给电影打分)--- 这叫做侵入性。但对于新闻推荐而言,如果需要用户明确的反馈反而给用户造成负担。此时,需要用到非侵入性的方法:使用非侵入性的指标来代替侵入性的指标。如对于新闻推荐,不能用用户对这新闻打分这一侵入性指标来判断用户是否对此新闻感兴趣,而是用用户阅读时间这一非侵入性指标来判断。

但非侵入性的指标,往往没有侵入性指标那么精确表示。阅读时间有时间也不能精确反应用户是否对此新闻感兴趣。因此,我们在选取非侵入性指标是需要尽可能准确反应用户对物品的感兴趣程度。

PS:说白了,就是预测用户对物品的评分,不是字面上打分的意思,而是用户对物品的感兴趣程度。不同场景衡量感兴趣程序的指标不同。指标的选择很重要

3.6 灵活性

很多推荐系统不能让用户自定义的推荐。比如电影推荐系统会通过预测评分给用户推荐他最有可能喜欢 top N 的电影。但是用户想要实时改变推荐需求,如只想要看最有可能喜欢中的来自纽约的电影。

论文给出这问题的一种解决方案:建立类似于 SQL 查询语言 RQL(推荐系统查询语言,Recommendation Query Language)。

RQL

论文提出一种增加灵活性的实现方案:结合 OLAP 方法。

我想到的最简单的增加灵活性的解决方案:保持原有的推荐系统不变,其余要求视为二次筛选的约束。

总结

下面是个人的总结,有部分观点与论文有所不同,如果有错误之处,还望大家指点迷津。

根据构建推荐系统的思想不同,将推荐系统分为 3 个类别:

  1. 基于内容的推荐系统:会将把与你过去喜欢的物品类似的物品推荐给你。【公式理解:基于用户与物品的相似程度推荐】
  2. 协作的推荐系统:推荐给你的物品将会是与你有相似品味的用户过去所喜欢的物品。【公式理解:基于用户间的相似度推荐】
  3. 混合型的推荐系统:两种思想结合。

每种类型的推荐系统的实现方法又可以分为两个类型:

  1. 基于启发式的方法:评分的预测基于一个启发式公式
  2. 基于模型的方法:评分的预测基于一个通过已知数据学习得到的模型。

个人比较认可的改进建议:

  1. 考虑上下文信息,对推荐结果进行二次筛选;
  2. 衡量用户对物品的感兴趣程度的指标选择很重要;

相关文章

网友评论

    本文标题:经典论文笔记 | 当前(2005)推荐系统现状与改进建议

    本文链接:https://www.haomeiwen.com/subject/lhbntqtx.html