(理论)推荐系统——从0开始大数据开发实战:电影推荐系统(scala版)

本文深入解析推荐系统的原理,包括热门推荐、内容推荐、协同过滤推荐等方法,特别聚焦于协同过滤算法,如userCF、itemCF及modelCF,并以电影推荐系统为例,详细阐述其工作流程和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、推荐系统

根据用户的历史数据发掘用户的潜在需求。

 

二、长尾商品

区别于热门商品,热门商品代表用户们的普遍需求,而长尾商品代表用户的个性化需求。

 

三、推荐方法

1)专家推荐(人工推荐):资深专家根据经验给出推荐。

2)统计推荐(热门推荐):根据历史记录进行统计,得出推荐结果,简单有效。

3)内容推荐:利用机器学习,根据物品的特性,找出相似物品。

4)协同过滤推荐:根据本用户的历史数据,找出最相近的用户,根据最近用户对某物品的喜好,计算本用户对该物品的喜好程度。

5)混合推荐:多种方法结合进行推荐。

 

四、推荐系统架构

三个要素:

1)用户特征(用户行为数据、属性数据)

2)物品特征(物品和用户的交互数据、属性数据)

3)推荐算法

两个关键:

1)推荐准确性

2)推荐计算时长

 

五、协同过滤算法

三种类型:

1)基于用户的协同过滤(userCF)

2)基于物品的协同过滤(itemCF)

3)基于模型的协同过滤(modelCF)

 

userCF算法---步骤:

1)找出与目标用户兴趣相同的用户集合。

2)找出集合中用户所喜欢的、但目标用户没接触过的物品,推荐给目标用户。

例如:用户1看了a、b两部电影,用户2看了a、b、c三部电影,则认为用户1和用户2为相似用户,并且把用户2看过的,但用户1没看过的电影c推荐给用户1。

 

itemCF算法---步骤:

1)计算物品间的相似度。

2)根据物品的相似度和用户的历史记录进行推荐。

例如:用户1看了a、d、g三部电影,用户2看了c、d、g三部电影,则认为电影d、g为相似电影,如果用户3看了电影d,而没有看电影g,则把电影g推荐给用户3。

 

Q: itemCF(基于物品的协同过滤) 和前面讲的内容推荐,都需要找出相似物品,两者之间有什么不同?

A:

内容推荐是根据物品的属性数据来计算相似度的(例如 电影a、c的类型属性都是“喜剧片”,或地区属性都是“大陆”,则两个电影相似)。

itemCF是根据大量用户的行为记录来计算相似度的(例如 大多数用户既看了电影a,也看了电影c,则两个电影相似)

 

modelCF算法:

同时考虑了用户和物品两个方面,通过所用用户给物品 的评分,来对某个用户的喜好进行判断(具体内容见下文)。

 

不同的算法有相应适合的应用场景。

 

六、电影推荐系统

电影推荐系统使用的就是spark MLlib中 的基于ALS矩阵分解的协同过滤算法,属于基于模型的协同过滤算法(modelCF)。

spark MLlib :

 

 

七、电影推荐算法步骤

1)获取用户id

2)删除用户之前存在的推荐结果

3)装载样本评分数据(不同用户对不同电影的评分数据:userid、 movieid、rating、timestamp )

4)装载电影信息数据(从movieinfo表中取出movieid、moviename、typelist)

注:样本评分数据和电影信息数据以.dat文件的形式被传入HDFS中

 

5)将样本评分数据切分成3部分,60%用于训练(训练集)、20%用于校验(校验集)、20%用于测试(测试集)

6)训练不同参数下的模型,并在校验集中校验,找出最佳模型

如何训练?

设置参数(隐语义因子的个数、ALS的正则化参数、迭代次数),将设置的参数和训练集作为参数传入到spark MLlib库的ALS()函数中,得到推荐模型,调整参数会得到多个不同的模型。

如何校验?

将校验集装入模型中,得到用户对电影的预测评分,计算预测评分和实际评分的均方根误差,找出多个模型中均方根误差最小的模型作为最佳模型。

7)用最佳模型预测测试集的评分,并计算预测评分和实际评分的均方根误差,改进最佳模型。

8)用最佳模型预测某用户对电影信息数据集中的所有电影的评分,选出评分最高的前十部电影

9)将推荐结果存入数据库recommendresult表中

 

八、ALS()函数

ALS()函数:

用户对电影的评分行为可以表示成一个评分矩阵(mxn),U(用户user),I(电影 item)

由于用户不会对所有电影进行评分,所以矩阵中一定会存在缺失值,类似于稀疏矩阵。

在实际应用中,m和n的数值都很大,矩阵很可能突破上亿项,这时需要对矩阵进行分解,而ALS算法对于这种大规模矩阵的分解可以取得较好的分析效果。

ALS算法旨在找到两个低维矩阵X(m x k)和Y(k x n),使这个两个矩阵的内积XY可以近似表示A。

这里k被称为隐语义因子。

原先的评分矩阵A为m个用户对于n部电影的评分,分解后:

X矩阵表示m个用户对于电影的k个特征(类型、导演、年代等)的偏好程度。

Y矩阵表示n部电影对k个电影特征的包含程度。

向量Xu 和 Yi 的转置的内积就是用户u对于电影i的近似评分。

ALS算法即"最小交替二乘法"算法首先会随机对X和Y矩阵进行初始化,接着随机初始化X0,然后固定X0去求解Y0,再固定Y0去求解X1,直到两个矩阵的内积(即预测评分)和实际评分的均方根误差小于预定义的阈值时,则求出了一个推荐模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值