协同过滤算法
协同过滤推荐算法,是最经典、最常用的推荐算法。通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些相似用户对某一信息的评价,形成系统关于该指定用户对此信息的喜好程度的预测。
步骤
1.收集用户偏好
2.找到相似的用户或物品
3.计算推荐
思想
通过观察所有用户User给产品Product/Item的评价Rating来判断每个用户的喜好Favorite
功能
1.针对用户来说(User-CF)
推荐哪些电影给用户
2.针对电影来说(Item-CF)
推荐给哪些用户
用户对产品的评分 Rating
1.显式评价
观察电影后,直接评分
滴滴打车后,直接评分
2.隐式评分
网易音乐,听某首歌的次数
音乐的收藏次数
每个网站上浏览次数
网站点击量、视频播放次数
Spark MLlib中协同过滤推荐算法:ALS算法
Data(User-Product-Rating)
→
\rightarrow
→ Rating
ALS交替最小二乘法
→
\rightarrow
→ ALS
矩阵分解(matrix factorization)模型
→
\rightarrow
→ MatrixFactorizationModel
在ALS算法当中,将用户对产品的评价放在个矩阵中
矩阵的每一行:
每个用户对所有产品的评价
矩阵的每一列
每个产品被所有用户的评价
概念
矩阵Matrix
→
\rightarrow
→ 向量Vector
→
\rightarrow
→ 数组Array
稀疏矩阵SparseMatrix
\quad
稀疏向量SpareVector:值为0占50%以上
稠密矩阵DenseMatrix
\quad
稠密向量DenseVector:值为0占50%以下
ALS(交替最小二乘法)算法核心
将用户对产品评价矩阵拆分称两个矩阵
用户因子矩阵和产品因子矩阵
X
(
n
∗
m
)
=
U
(
n
∗
k
)
∗
V
(
k
∗
m
)
X(n*m)=U(n*k)*V(k*m)
X(n∗m)=U(n∗k)∗V(k∗m)
首先初始化
U
0
U_0
U0,交替生成
V
,
U
V,U
V,U,不断迭代
算法参数
迭代次数(交替次数),特征值K的选择