Spark MLlib模型训练—推荐系列算法

Spark MLlib模型训练—推荐系列算法

如果你平时爱刷抖音,或者热衷看电影,不知道有没有过这样的体验:这类影视 App 你用得越久,它就好像会读心术一样,总能给你推荐对胃口的内容。其实这种迎合用户喜好的推荐,离不开机器学习中的推荐算法。

在今天这一讲,我们就结合两个有趣的电影推荐场景,为你讲解 Spark MLlib 支持的协同过滤与频繁项集算法

电影推荐场景

今天这一讲,咱们结合 Kaggle 竞赛中的MovieLens 数据集,使用不同算法来构建简易的电影推荐引擎。尽管 MovieLens 数据集包含了多个文件,但课程中主要用到的,是 ratings.csv 这个文件。文件中的每条数据条目,记录的都是用户对于电影的打分,如下表所示。

image-20240804174935633

其中第一列 userId 为用户 ID,movieId 表示电影 ID,而 rating 就是用户对于电影的评分。像这样,同时存有用户与物品(电影)信息的二维表,我们把它们统称为“交互矩阵”,或是“共现矩阵”。你可能会疑惑,通过这么一份简单的二维表,我们能干些什么呢?

可别小瞧这份数据,与合适的模型算法搭配在一起,我就能根据它们构建初具模样的推荐引擎。在 Spark MLlib 框架下,至少有两种模型算法可以做到这一点,

  1. 一个是协同过滤(Collaborative Filtering),
  2. 另一个是频繁项集(Frequency Patterns)。

其中,前者天生就是用来做推荐用的,而后者是一种常规的非监督学习算法,你可以结合数据特点,把这个算法灵活运用于推荐场景。整个数据流差不多就是这样的

image-20240804222334441

协同过滤

我们先说协同过滤,从字面上来说**,“过滤”是目的,而“协同”是方式**、方法。简单地说,协同过滤的目标,就是从物品集合(比如完整的电影候选集)中,“过滤”出那些用户可能感兴趣的物品子集。而“协同”,它指的是,利用群体行为(全部用户与全部物品的交互历史)来实现过滤

这样说有些绕,实际上,协同过滤的核心思想很简单,就是“相似的人倾向于喜好相似的物品集”。

交互矩阵看上去简单,但其中隐含着大量的相似性信息,只要利用合适的模型算法,我们就能挖掘出用户与用户之间的相似性、物品与物品之间的相似性,以及用户与物品之间的相似性。一旦这些相似性可以被量化,我们自然就可以基于相似性去做推荐了。思路是不是很简单?

那么问题来了,这些相似性,该怎么量化呢?答案是:矩阵分解。

image-20240804175330720

在数学上,给定维度为(M,N)的交互矩阵 C,我们可以把它分解为两个矩阵 U 与 I 的乘积。其中,我们可以把 U 称作“用户矩阵”,它的维度为

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值