Spark——ALS推荐算法
推荐算法介绍
算法 | 说明 |
---|---|
基于关系型规则的推荐 | 1、消费者购买产品A,那么他有多大机会购买产品B 2、购物车分析(啤酒和尿布) |
基于内容的推荐 | 1、分析网页内容自动分类,再将用户自动分类 2、将新进已分类的网页推荐给对该群感兴趣的用户 |
人口统计式的推荐 | 1、将用户以个人属性(性别、年龄、教育背景、居住地、语言)作为分类的指标 2、以此类作为推荐的基础 |
协同过滤式的推荐 | 1、通过观察所有用户对产品的评分来推断用户的喜好 2、找出对产品评分相近的其他用户、他们喜欢的产品当前用户多半也喜欢 |
协同过滤式推荐的优缺点
优点 | 缺点 |
---|---|
1、可以达到个性化推荐 2、不需要内容分析 3、可以发现用户新的兴趣点 4、自动化程度高 |
1、冷启动问题:如果没有历史数据就没办法分析 2、新用户问题:新用户没有评分,就不知道他的喜好 |
ALS推荐算法的介绍
Spark MLlib支持的ALS推荐算法式机器学习的协同过滤式推荐算法。机器学习的协同过滤式推荐算法通过观察所有用户给产品的评分来推断每个用户的喜好,并向用户推荐合适的产品。
Item A | Item B | Item C | Item D | Item E | |
---|---|---|---|---|---|
User 1 | 2 | 1 | 5 | ||
User 2 | 1 | 3 | 1 | 1 | |
User 3 | 3 | 4 | |||
User 4 | 2 | 2 | 1 | 2 | |
User 5 | 1 | 1 | 1 | 4 | 1 |
- 隐式评分(Implicit Rating)
有时在网站的设计上并不会请用户对某个产品进行评分,但是会记录用户是否选择了某个产品。如果选择了某个产品,就代表用户可能对该产品感兴趣,但是我们不知道评分为几颗星,这种方式为隐式评分。(1代表用户对该项产品感兴趣)
Item A | Item B | Item C | Item D | Item E | |
---|---|---|---|---|---|
User 1 | 1 | 1 | 1 | ||
User 2 | 1 | 1 | 1 | 1 | |
User 3 | 1 | 1 | |||
User 4 | 1 | 1 | 1 | 1 | |
User 5 | 1 | 1 | 1 | 1 | 1 |
相似性推荐算法就是找出用户喜好的相同。例如,User 1有兴趣的项目是(A,B,C), User 2 有兴趣的项目是(A,B,C,D)。两者相差只有一个D。因此,可以将D推荐给User 1。
当用户和项目数很多时,会存在大量的空白,这称为稀疏矩阵。
将原有的稀疏矩阵进行矩阵分解。
将原本矩阵A(m*n)分解成X(m*rank)矩阵与Y(rank*n)矩阵,而A大致等于X*Y。
数据下载
电影数据集下载
本案例选择100K数据作为训练数据。Ubuntu中下载并解压数据集。
# 创建并进入存放数据集的文件夹
$ mkdir -<