# 基于Spark的Netflix Prize电影推荐系统(包括离线推荐与实时推荐)
>数据集:[我的百度云分享](https://pan.baidu.com/s/1boWBwnX)
## 离线推荐
- 基于Spark MLlib自带的ALS最小二乘法矩阵分解算法,比较简单,文档也比较多,就不详细说了:-D。。。
- 选择的迭代次数iterations=5,物品、用户特征个数K=50
- 使用了RMSE方法评价推荐精度,结果为0.5757
不同iterations、K值组合下,RMSE值表现
![result1](Pictures/1.png)
## 实时推荐
### 实时推荐算法设计
设计的实时算法的大体思想是:
当用户u对电影p进行了评分,将触发一次对u的推荐结果的更新。由于用户u对电影p评分,对于用户u来说,他与p最相似的电影们之间的推荐强度将发生变化,所以选取与电影p最相似的K个电影作为候选电影。
每个候选电影按照“推荐优先级”这一权重作为衡量这个电影被推荐给用户u的优先级。
这些电影将根据用户u最近的若干评分计算出各自对用户u的推荐优先级,然后与上次对用户u的实时推荐结果的进行基于推荐优先级的合并、替换得到更新后的推荐结果。
注意:由于Netflix Prize数据电影间相似度无法直接计算,这里利用ALS算法的物品矩阵进行cos计算得到各个电影间相似度,详情见Doc下文档
具体算法设计实现文档在目录Doc下
### 实时推荐延迟测试
#### 下面的数据结果分别是瞬间产生1000、5000、10000、30000、50000个评分数据情况下实时推荐系统的响应时间表现
**batchDuration选择了2s**
![result2](Pictures/2.png)
![result3](Pictures/3.png)
![result4](Pictures/4.png)
![result5](Pictures/5.png)
![result6](Pictures/6.png)
将以上这些测试结果汇总对比如图
![result7](Pictures/7.png)
#### 保持一定的速度逐渐产生大量评分时实时推荐系统的响应时间表现
a.速度为500个数据量每秒时
![result8](Pictures/8.png)
横坐标没有数学意义,而是作为每个评分的标识;纵坐标表示了对应横坐标上的评分的实时推荐响应时间,单位为秒。在每秒产生500个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在6s内完成。
b.速度为1000个数据量每秒时
![result9](Pictures/9.png)
横纵坐标意义同上。从图中可以看到,在每秒产生1000个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在6s内完成。与每秒500个评分的速率下实时表现差不多。
c.速度为1500个数据量每秒时
![result10](Pictures/10.png)
横纵坐标意义同上。在每秒产生1500个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在5s内完成。与每秒500、1000个评分的速率下实时表现差不多。
d.速度为2000个数据量每秒时
![result11](Pictures/11.png)
横纵坐标意义同上。横纵坐标意义同上。在每秒产生1500个评分数据的速率下,实时推荐系统性能良好,最慢的实时推荐也在5s内完成。与每秒500、1000、1500个评分的速率下实时表现差不多。
e.速度为2500个数据量每秒时
![result12](Pictures/12.png)
横纵坐标意义同上。在每秒产生2500个评分数据的速率下,实时推荐系统随着时间推移性能开始下降,这是由于数据堆积产生的问题:当新数据到来时,还有旧数据没有处理完成,造成新数据堆积等待处理,使得被堆积的数据实时响应时间增大。可以看到,在1分钟内实时推荐响应时间逐渐升至20s。可以预见,2500个评分数据/s的速率保持时间越长,实时推荐响应时间越慢。
f.速度为3000个数据量每秒时
![result13](Pictures/13.png)
## 项目结构
- alsBatchRecommender.scala: ALS离线推荐,以及计算电影间相似度
- streamingRecommender.scala: 实时推荐
没有合适的资源?快使用搜索试试~ 我知道了~
基于ApacheSpark的Netflix电影的离线与实时推荐系统源码+数据集+详细文档(高分毕业设计).zip
共22个文件
png:13个
scala:2个
sbt:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 105 浏览量
2024-04-17
14:21:05
上传
评论
收藏 778KB ZIP 举报
温馨提示
【资源说明】 基于ApacheSpark的Netflix电影的离线与实时推荐系统源码+数据集+详细文档(高分毕业设计).zip基于ApacheSpark的Netflix电影的离线与实时推荐系统源码+数据集+详细文档(高分毕业设计).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕设项目、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 3、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于ApacheSpark的Netflix电影的离线与实时推荐系统源码+数据集+详细文档(高分毕业设计).zip (22个子文件)
Netflix-Recommender-with-Spark-master
src
main
scala
org
pact518
alsBatchRecommender.scala 4KB
streamingRecommender.scala 10KB
Doc
实时推荐算法文档.pdf 386KB
build.sbt 738B
Pictures
10.png 40KB
9.png 37KB
3.png 24KB
12.png 41KB
1.png 68KB
11.png 40KB
13.png 44KB
6.png 32KB
5.png 30KB
4.png 28KB
8.png 33KB
7.png 11KB
2.png 31KB
.gitmodules 0B
.gitignore 47B
README.md 4KB
project
assembly.sbt 188B
171265889347208773632.zip 416B
共 22 条
- 1
资源评论
- lyp1709222024-05-30这个资源内容超赞,对我来说很有价值,很实用,感谢大佬分享~
不走小道
- 粉丝: 3224
- 资源: 5113
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功