云音乐推荐系统(二):推荐系统的核心算法

一、召回阶段

1.1基于热门的召回

筛选用户播放歌曲的行为数据,
选取播放次数最多的歌曲作为热门歌曲,为每个用户进行推荐

1.2基于用户分群的召回

将用户划分为细粒度群体,为每一个用户群体筛选歌
曲播放行为,选取每个群体中的热门歌曲,为每一个
用户进行推荐
可以使用KMeans等聚类算法

1.3基于协同过滤的召回

二、协同过滤算法(计算相似的一种方式)

2.1基于用户(user-based)的协同过滤算法

首先计算用户与用户之间的相似性,
然后再计算其他与目标相似的用户对物品的评分来为目标用户推荐

2.2基于物品的(item-based)的协同过滤算法

与基于用户的协同过滤算法基本相似

2.3基于模型(model-based)的协同过滤算法

SVD矩阵分解协同过滤算法
LFM隐含语义协同过滤算法
ALS交替最小二乘协同过滤算法

三、协同过滤

依赖用户行为数据
分析用户行为数据,求出
用户与用户之间的相似度,进而通过相似度计算出用户对所有物品的”感兴趣程度”(user-based)
物品与物品之间的相似度,进而通过相似度计算出用户对所有物品的”感兴趣程度”(item-based)
中间矩阵,进而通过中间矩阵计算出用户对所有物品的”感兴趣程度”(model-based)

四、基于用户的协同过滤

在这里插入图片描述
根据用户行为数据,获取用户对物品的喜欢程度评分,同时用户无法对所有物品都进行评分,最终可组织成一个用户-物品稀疏矩阵
在这里插入图片描述
计算用户之间的相似程度,通过用户向量,按照余弦相似度公式进行求解
在这里插入图片描述在s插入图片描述
上面是向量点积
在这里插入图片描述
上面是是向量的模积

将用户一看出一个向量u1=[4.5,3,3.5,0,4,0];
将用户二看成一个向量u2=[0,4.5,5,0,0,4,0];
用户没有对物品进行评分回默认为0,但是可以对默认的没有评分的物品用平均数代替

余弦相似度的scala代码实现:

object cosine_similarity {
   

  //向量的模
  def module(vec: Vector[Double]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值