Spark 机器学习——协同过滤ALS算法

@羲凡——只为了更好的活着

Spark 机器学习——协同过滤ALS算法

一、什么是协同过滤?

1.入门的看法

a.和你类似的人喜欢的物品会被推荐给你 
b.你喜欢某个物品,算法会推荐和该物品类似的书籍给你

2.百度的解释

是电子商务推荐系统的一种主要算法。协同过滤简单来说是利用某兴趣相投、拥有共同经验之
群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)
并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别
不感兴趣信息的纪录也相当重要。

3.专业的剖析

m个用户和n个物品:
a.将某用户对n个物品的喜好作为向量来计算用户间相似度,根据相似度高的用户对物品的偏好将物品推荐给他们。
b.将m个用户对某物品的喜好作为向量来计算物品间相似度,根据用户历史的偏好将相似度高的物品推荐给用户。
二、什么是ALS算法?

1.入门的看法

ALS是交替最小二乘法(Alternate Least Square),
其中LS是大家最熟知的最小二乘法(Least Square),
所以ALS就是交替的使用最小二乘法的算法。

2.百度的解释

ALS算法是在矩阵分解(matrix factorization)中使用的一种算法。
有一个稀疏矩阵,假设这个矩阵是低阶的,可以分解成两个小矩阵相乘。
然后交替对两个小矩阵使用最小二乘法,算出这两个小矩阵,就可以估算出稀疏矩阵缺失的值。

3.专业的剖析

对一个大的矩阵A(m*n),拆分成两个小矩阵B(m*k)和C(k*n),
先随机产生一个B1,根据最小二乘法算出C1,再根据C1用最小二乘法算出B2,B2在算出C2,
依次交替循环,知道瞒住最小误差或最大迭代次数
三、spark实现协同过滤ALS算法

官方案例地址:http://spark.apache.org/docs/2.3.2/ml-collaborative-filtering.html
idea中的pom文件中需要添加如下依赖

<dependency> 
	<groupId>org.apache.spark</groupId>
	<artifactId>spark-mllib_2.11</artifactId>
	<version>${spark.version}</version>
	<scope>compile</scope>
</dependency>

温馨提示:
1.数据在spark安装包下的 data/mllib/als/sample_movielens_ratings.txt
2.spark.version 换成自己的spark版本(spark2.0+),我用的是2.3.2,scala是2.11.12

====================================================================

@羲凡——只为了更好的活着

若对博客中有任何问题,欢迎留言交流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值