Big Data Management笔记06:Recommender Systems

Recommender System Model (RS Model)

对于推荐系统(Recommender System,以下简称RS)是什么,我相信不需要做过多介绍。简单的来说,就是系统会根据用户平时的喜好,为他推荐可能感兴趣的东西。也有一些推荐系统,比如Nextflix可以根据用户对电影的评分,来预测他对某一部电影会给出多少分,但它们的本质其实是一样的。

我们可以把RS看做一个函数(Function)

  • 输入(Input)
    - 用户模型 (User Model):该模型包含比如评分 (Ratings),偏好 (Preference)等信息
    - 对象(Items):可能会有对该对象的特征描述
  • 输出(Output):相关性得分 (Relevance score),用这个得分进行排名。

最终,我们认为具备高排名的对象与用户的关联性更强,因此将排名较高的对象显示给用户。但在这个过程中,我们也应当谨记,相关性可能取决于具体情况,而且推荐对象本身的特点可能也会很重要。

现在,我们来正式定义RS模型:

X = 用户集合
S = 对象集合
R = 评分集合(是一个有序集合,比如1-5星或是[0, 1]的实数)

定义一个效用函数 (Utility Function) u,它会以 XS 作为输入,并输出评分R,即 X * S -> R,因此我们可以构建一个效用矩阵 (Utility Matrix)

在这里插入图片描述
我们要做的就是预测矩阵中空白处的得分。

这里有几个很关键的问题:

  • 我们如何得到矩阵中这些“已知的”评分(Ratings)?
  • 我们如何从已知评分推断未知的评分?
  • 我们如何评估推断方式?

围绕以上问题,我们将逐一介绍。

Gathering Ratings(收集评分)

有好几种收集评分的方式,我们主要分为两类:

  • 显式收集(Explicit):要求用户进行评分。但这个方法实际不太可行,因为太叨扰用户
  • 隐式收集(Implicit):从用户的行为中学习评分。比如用户经常看某部电影,那么这部电影我们就会给它一个比较高的评分。
显式收集(Explicit)隐式收集(Implicit)
+ 可能是最精准的评分+ 通常由嵌入了推荐系统的网上商店或应用程序收集,例如,当客户购买商品时,许多推荐系统会将此行为解释为好评
+ 大多使用5分制或者7分满意度制+ 隐式评级可以不断收集,不需要用户方面的额外努力
- 用户不会总是愿意去给那么多对象评分- 不能确定用户行为是否被正确解释,例如,用户可能不喜欢他或她购买的所有书籍; 用户可能还为别人买了一本书

Predicting Ratings(预测评分)

推荐系统通过估计相关性来减少信息过载。这里给出一些推荐系统的范例:

在这里插入图片描述
图中主要有5种推荐系统:

  1. 个性化推荐(Personalized recommendations):使用用户的个人资料(Profile)和情境参数(Contextual Parameter)来进行预测,生成推荐列表
  2. 协同推荐(Collaborative):“告诉我同好中最受欢迎的东西”(该方法会评估用户之间的相关性)
  3. 基于内容的推荐(Content-based):“向我展示更多我喜欢的东西”(该方法会评估对象之间的相关性)
  4. 基于知识的推荐(Knowledge-based):“根据我的需求推荐适合的东西”
  5. 混合推荐(Hybrid):多种机制混合的推荐方法

Content-based Recommendation(基于内容的推荐)

在这里插入图片描述
该方法的核心思想是:为用户x推荐与他之前评出高分的对象相似的东西。

为此,我们需要:

  • 一些可用对象(Available Items)的信息(“content”)
  • 某些用户资料,可以描述用户的喜好(preference)

比如,电影推荐,推荐与用户喜欢的电影有着同样演员、导演、流派的电影。

在这里插入图片描述
看到这里,你可能还不明白,所谓的对象“信息”(“Content”)到底是什么,下面我们给出一些简易的介绍。大多数 CB(基于内容)推荐技术都用于推荐文本文档,比如网页或者新闻组消息。同时,对象的信息也可用文本文档来表示,这些文档会有对这些对象的特点的文字描述。这样的描述有结构化 (Structured) 和非结构化 (Unstructured)两种方式。

  • 结构化最典型的就是用列表
    在这里插入图片描述
  • 非结构就有很多种类了,任何自由文本描述都有可能

至于 Profile,我们需要两种 Profile,即 Item Profiles 和 User Profiles

  • Item Profiles:每一个对象都建立一个 Profile,Profile 是一个特征集合/向量,比如电影,它的 Profile 可能就是 (作者, 标题, 演员, 导演…)。至于如何挑选关键特征,文本挖掘的通常启发式方法是 TF-IDF(术语频率*反向文档频率)
  • User Profile:最通常的形式就是已评分 Item Profiles 的加权平均,下图中用 u 表示用户,数字即为用户对 Items 的评分
    在这里插入图片描述

预测公式(Prediction heuristic):
给定 User Profile x 和 Items Profile i

在这里插入图片描述

该公式衡量 x, i 之间的相似度,如果足够相似,则 θ 接近 0(cosθ=1),否则接近 π(cosθ=-1),我们想要取最大值。

基于内容的推荐系统有以下优劣点:

ProsCons
不需要其他用户的数据选择合适的特征比较困难
能够向口味独特的用户推荐对新用户进行推荐很困难(无法建立User Profile)
能够推荐一些新的/不太流行的对象过度专业化 (Overspecialization):只专注于该用户,不会推荐他Profile之外的对象
可以提供解释

User-user Collaborative Filtering(用户与用户的协同推荐)

在这里插入图片描述
该方法的核心思想就是:“为我推荐同好喜欢的东西”,这一方法是比较主流的推荐方法。它实质上是一种使用 “群体智慧” 进行推荐的方法。这一方法同时秉持着两个思想,就是用户或显式或隐式地为对象进行了评分,而且现在有同样喜好的人,未来也会有相似的喜好。

简单的来说就是我们考虑一个用户 x,先找到一批和他有相似口味(评分类似)的用户组成一个集合 N,我们根据 N 中用户的评分来预测用户 x 的评分
在这里插入图片描述
这里常用的算法是 User-based Nearest-Neighbor Collaborative Filtering(基于用户的最近邻居协同过滤)。该算法的基本思想是:

  • 给定一个用户 Alice 以及一个她从未见过的对象i
  • 找到一群同好/Nearest Neighbors,同时这些用好过去为 i 进行过评分
  • 用这些同好对i的评分来对 Alice 对 i 的评分进行预测(比如可以用均值)
  • 对所有 Alice 未见过的对象进行同样操作,找到评分最高的几个进行推荐

这里给出一个例子:
在这里插入图片描述
该表格中的?就是我们想要预测的对象。但这里还存在一些问题:

  1. 我们该如何找到与 Alice 口味相似的用户?
  2. 我们该找多少用户?
  3. 我们如何用同好的评分来预测 Alice 评分?

Finding “Similar” Users(找到同好)

我们用 rx 表示Alice的评分向量 rx = [⭐, _, _, ⭐, ⭐⭐⭐]
另一个用户的评分向量为 ry = [⭐, _, ⭐⭐, ⭐⭐, _]

回顾一下相似度搜索 LSH 以及机器学习中我们进行相似度计算的方式,这里我们有很多方法可以用,比如 Jaccard Similarity, Cosine Similarity, Pearson correlation coefficient。

这里直接给出计算方式:
在这里插入图片描述
下面给出一个具体的例子:
在这里插入图片描述
在这里插入图片描述

Rating Predictions(评分预测)

在前一步中,我们通过计算评分相似性,找出了最相似的几位其他用户。现在,我们仍用 rx 表示 Alice 的评分向量,用 N 表示已经为 i 评过分的 k 位与 Alice 口味最相似用户的集合。

这里就有多种可能的方式:
在这里插入图片描述

最后,我们要注意的是基于用户 (User-based) 的Collaborative Filtering有两种实现方式:

  1. Memory-based:评分矩阵直接用于查找邻居/做出预测。它不适用于大多数现实情况,因为大型电子商务网站拥有数千万的客户和数百万的商品
  2. Model-based:基于离线预处理或“模型学习”阶段。在运行时,仅使用学习的模型进行预测,需要定期更新/重新训练模型。这一方法使用多种技术,模型的建立和更新在计算上可能会有比较高的代价

Item-item Collaborative Filtering(对象与对象的协同推荐)

我们目前介绍的都是用户对用户 (User-user) 的协同推荐,现在来看一看对象与对象 (Item-item) 的协同推荐。从名字上就可以看出,该方法的基本思想是 “使用对象(不是用户)之间的相似度来进行预测”,即对于对象 (Item) i 找到其他相似的对象,然后基于对相似对象们的评分 (Ratings),估计用户对 i 的评分。这里的相似度计算和预测函数可以沿用 User-user 中的方法。

在这里插入图片描述
这里的 sij 表示对象 i 和 j 的相似度,rxj 表示用户 x 对对象 j 的评分,N(i; x) 一系列与 i 相似且被用户 x 评过分的对象。

这里我们给出两个例子:

第一个例子比较简单。我们想要预测 Alice 对 Item5 的评分,首先,找到与 Item5 相似的 Item,这里找到的是 Item1 和 Item4,然后用 Alice 对 Item1 和 Item4 的评分来预测对 Item5 的评分。

在这里插入图片描述

第二个例子比较具体。首先我们有一个评分矩阵,横轴为用户 1-12,纵轴为电影 1-6,评分标准为 5 分制。黄色区域为已知评分,白色区域为未知评分。

在这里插入图片描述
现在,我们想预测用户 5 对电影 1 的评分:
在这里插入图片描述
同样,我们需要先找到与电影 1 相似的电影。这里我们仍然使用 Cosine Similarity 进行计算,不同的是我们先将每部电影的评分减去它的平均分,然后再计算行与行(每部电影)之间的相似度。
在这里插入图片描述
经过计算,我们发现电影 3 和电影 6 与电影 1 相似度最高,因此我们用用户 5 对这两部电影的评分来预测其对电影 1 的评分

在这里插入图片描述
具体到应用场景上,User-user 因为是基于相似用户,所以对社交性有更高的要求,适用于新闻推荐场景。因为新闻本身的兴趣点往往是分散的,相比用户对不同新闻的兴趣偏好,新闻的及时性、热点性往往是其更重要的属性,而User-user 正适用于发现热点,以及跟踪热点的趋势。

另一方面,Item-item 更适用于兴趣变化较为稳定的应用。比如在Amazon 的电商场景中,用户在一个时间段内更倾向于寻找一类商品,这时利用物品相似度为其推荐相关物品是契合用户动机的。

在实际情况中,Item-item 协同推荐比 User-user 协同推荐效果更好,因为用户的口味可能是多样的,对象相对简单。

找到 k 个最相似对象/用户的复杂度为 O(|x|),在运行过程中可能过于高昂,可以提前进行预计算,复杂度为 O(|x|2)

最后看一下协同推荐的优缺点:

  • Pros:适用于任何种类的对象,无需进行特征选取
  • Cons:
    1. Cold Start:系统中需要足够的用户以寻求匹配
    2. Sparsity:用户/评分矩阵稀疏,很难找到评分相同的用户
    3. First rater:无法推荐先前未评分的商品,比如新品或者冷门款
    4.Popularity bias:无法将商品推荐给具有独特品味的人,倾向于推荐热门商品

Evaluation(评估)

与机器学习和深度学校类似,我们将划分训练集和测试集,用测试集与评估预测结果

在这里插入图片描述
在这里插入图片描述
具体评估的方法可以使用 RMSE 以及计算预测准确率等。

BellKor Recommender System

这里介绍一个推荐系统,该推荐系统赢得了 Netflix 竞赛。先大致介绍一下Netflix竞赛:该竞赛中,使用的训练集数据有一亿个评分 (Ratings),48万用户,17770部电影,总计是6年的数据(2000-2005年)。测试集是每个用户的最新评分(总计 280 万个),采用 RMSE 进行评估。参与该竞赛的队伍超过 2700 支,如果能对 Nextflix 的系统有 10% 的性能提升,奖励一百万美元。(Netflix 的系统 RMSE 为 0.9514)

BellKor Recommender System 采用的是数据的多尺度建模,它将数据的顶级“区域”建模与精致的本地视图相结合,该系统的 RMSE 为 0.8563。

其中我们主要关注三个层级:
在这里插入图片描述

  • Global Effect(全局效应):关注用户/电影的总体偏差
  • Factorization(因式分解):关注“局部效应”
  • Collaborative filtering(协同推荐):提取局部模式

Modeling Local & Global Effects(局部和全局效应建模)

  • Global(全局):
    - 电影的平均评分为3.7分
    - 《第六感》的评分比均分高0.5分
    - 用户 Jack 的评分比平均分低0.2分
    - 如此,我们可以预测 “用户Jack为《第六感》的评分可能为4分”
  • Local(局部:使用协同推荐/最近邻搜索):
    - Jack 不喜欢类似的电影《天兆》
    - 最终评估,“用户Jack为《第六感》的评分可能为3.8分”

在实际情况中,如果对偏差 (deviations) 进行建模,我们将获得更好的估计。

这里的 bxi 就是我们用全局效应估计出的评分
在这里插入图片描述
这里我们 wij 来计算加权总和,以从数据中直接进行评估,而不用使用相似度:

在这里插入图片描述

Matrix Factorization(矩阵分解)

我们之前使用权值 wij 得出了一个预测公式,权重 wij 根据其作用得出,不使用任意相似性度量,明确说明相邻电影之间的相互关系。接下来,要关注潜在因子模型(Latent factor model),以提取出 “区域” 相关性( “regional” correlations)。

这里再深入解释一下。我们之前介绍的 User-user 和 Item-item 都属于协同推荐 (Collaborative Filtering)。但是 CF 本身存在一些缺点,那就是它的泛化能力比较弱,换言之,无法将两个物品相似这一信息推广到其他物品的相似性计算之上。
这就会造成一个比较严重的后果,那就是很强的 “头部效应”,容易与大量对象有高相似性;而尾部对象 (冷门对象)因为特征向量比较稀疏,与其他对象的相似性就会比较低,因而很少被推荐。
举一个具体的例子,如下所示由 4 个对象组成的共现矩阵
在这里插入图片描述
根据这个矩阵去计算对象之间的相似度的话,可以得到右边的结果。可以看到 A, B, C 之间毫无相似性,但 D 却与 A, B, C 都有相似性。然而 D 的这些相似性仅仅因为它比较热门,很多人都会买。 这就是 CF 最大的缺陷,头部效应明显,无法处理稀疏矩阵。
为解决上述问题,同时增加模型的泛化能力,矩阵分解技术被提出。该方法在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征,在一定程度上弥补了协同过滤模型处理稀疏矩阵能力不足的问题。

我们这里主要介绍 Matrix Factorization(矩阵分解)方法,它实际上就是一种特殊的对矩阵的奇异值分解。即矩阵 M = U · Σ · VT。在在该模型中中,我们计算 𝑈,𝑉 和 Σ(借助一些线性代数软件),但通过取 𝑈 和 𝑉T 的前三列,仅保留了三个最重要的特征。

在本模型中,我们只用2个矩阵的积来表示原矩阵。即 R ≈ Q · PT

在这里插入图片描述
这里的 factors 是一个超参数(Hyper Parameter)(隐向量的维度)由设计者/用户决定,在这个例子中我们设为 3,在实际中,factor 数量越大,隐向量表达能力更强,效果会越好,但也会增大计算量,降低泛化性,因此这需要权衡。在该方法中,我们希望重构出的矩阵中 “已知” 评分的误差尽可能小,而未知评分的部分我们暂时忽略。比如,评分矩阵 [1][1] = 1,Q 与 PT 相乘计算得出一个评分为 0.85,误差为 0.15

接下来,我们看如何估计用户 x 对项目 i 的缺失评分。比如我们想知道用户 5 对对象 2 的评分,只需要用对应的行列相乘即可得到结果。
在这里插入图片描述
我们之所以说该方法中的 SVD 是特殊版本,就是因为一般的 SVD 当有缺失项目时,无法定义。这里有多种方式找到 P 和 Q,一般比较常用的是最小化误差:

在这里插入图片描述

注意,我们不要求 P,Q 的列为正交/单位长度,P,Q 将用户/电影映射到潜在空间。

该目标函数的目的是让原始评分 rui 与用户向量和物品向量之积 qi Tpu 的差尽量小,这样才能最大限度地保存共现矩阵的原始信息。这里的 K 是所有用户评分样本的集合。为了减少过拟合现象,加入正则化项后的目标函数如下所示:

在这里插入图片描述
使用该目标函数可使用梯度下降法 (Gradient Descent) 来进行矩阵分解。

优点缺点
泛化能力强。一定程度解决了矩阵稀疏问题矩阵分解同样不方便加入用户、物品和上下文相关的特征,这使得矩阵分解丧失了利用很多有效信息的机会,同时在缺乏用户历史行为时,无法进行有效的推荐
空间复杂度降低。不再需要维护一整个用户-对象共现矩阵,复杂度从 n2 降为 (n+m)*k
更好的扩展性和灵活性。矩阵分解的最终产出是用户和物品隐向量,
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Big Data Management and Processing" English | ISBN: 1498768075 | 2017 | 487 pages | PDF | 23 MB "Big Data Management and Processing is [a] state-of-the-art book that deals with a wide range of topical themes in the field of Big Data. The book, which probes many issues related to this exciting and rapidly growing field, covers processing, management, analytics, and applications… [It] is a very valuable addition to the literature. It will serve as a source of up-to-date research in this continuously developing area. The book also provides an opportunity for researchers to explore the use of advanced computing technologies and their impact on enhancing our capabilities to conduct more sophisticated studies." –-Sartaj Sahni, University of Florida, USA "Big Data Management and Processing covers the latest Big Data research results in processing, analytics, management and applications. Both fundamental insights and representative applications are provided. This book is a timely and valuable resource for students, researchers and seasoned practitioners in Big Data fields. –Hai Jin, Huazhong University of Science and Technology, China Big Data Management and Processing explores a range of big data related issues and their impact on the design of new computing systems. The twenty-one chapters were carefully selected and feature contributions from several outstanding researchers. The book endeavors to strike a balance between theoretical and practical coverage of innovative problem solving techniques for a range of platforms. It serves as a repository of paradigms, technologies, and applications that target different facets of big data computing systems. The first part of the book explores energy and resource management issues, as well as legal compliance and quality management for Big Data. It covers In-Memory computing and In-Memory data grids, as well as co-scheduling for high performance computing applications. The second part of the book includes comprehensive coverage of Hadoop and Spark, along with security, privacy, and trust challenges and solutions. The latter part of the book covers mining and clustering in Big Data, and includes applications in genomics, hospital big data processing, and vehicular cloud computing. The book also analyzes funding for Big Data projects.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值