电影推荐系统 python简书_推荐系统实战

项目背景

本项目主要介绍电商系统中常见的推荐功能,包括热门商品和优质商品的统计推荐模块,基于隐语义模型实现的离线推荐模块,以及自定义规则的实时推荐模块。

技术栈

CentoOS 7.0

spark 2.1.1

hadoop 2.7

scala 2.11.8

redis 4.0.2

kafka 2.12

mongodb 3.4.3

zookeeper 3.4.10

flume-ng 1.8.0

JDK 1.8

数据流程

数据流

核心模块

统计推荐(离线统计)

热门商品 : 根据所有历史评分数据,计算评分次数最多的商品。

近期热门商品 :按月统计所有历史评分数据评分最多的商品。

优质商品 :根据有所历史评分数据,计算平均评分最高的商品。

基于隐语义模型的协同过滤推荐(离线推荐)

1、将用户评分数据,分解为用户向量和商品向量。

2、将用户向量和商品向量相乘,产生的笛卡尔积作为预测评分空矩阵,此时这是个稀疏矩阵。

3、调用saprk的ALS.train,进行模型训练后,使用模型对2的矩阵进行预测,预测结果是稠密矩阵,空的矩阵位置也产生了预测评分。

4、对新的稠密矩阵进行聚合、排序后,即可得到用户评分列表。

商品相似度列表

通过商品特征矩阵结合余弦相似度公式,产生商品相似度列表。

余弦相似度

模型评估和参数选取

对于ALS模型训练的过程中,直接指定了隐语义模型的三个参数(rank,iteration,lambda),所以需要对模型进行评估。通常采用均方根误差(RMSE),考察预测评分与实际评分之间的误差值。

均方根误差

实时推荐

1、用户u对商品p进行了评分,触发一次实时推荐计算。

2、获取用户u按时间顺序最近的K个评分,记为RK;获取商品p的最相似K个商品集合,记为S作为候选商品集合。

3、然后对每个商品(s中元素),计算推荐优先级,计算公式如下:

相似度评分加权推荐优先级计算公式

其中:

Rr表示用户u对商品r的评分;

sim(q,r)表示商品q与商品r的相似度,设定最小相似度为0.6,低于该阀值视为两者不相关并忽略;

sim_num表示q与RK中商品相似度大于最小阀值的个数

incount表示RK中与商品q相似且评分较高(>=3)的商品个数

recount表示RK中与商品q相似且本身评分较低(<3)的商品个数

公式意义:

首先对于每个候选商品q,从用户u最近K个评分中,找出与q相似度较高(>=0.6)的u已评分商品们,对于这些商品中的每个商品r,将r于q的相似度乘以用户u对r的评分,将这些乘积计算平均数,作为用户u对商品q的基础预测评分,lgmax{incount,1}是增强因子表示好评,lgmax{recount,1}是减弱因子,表示差评。此公式采用相似度乘以评分加权值,并利用增强与削弱因子,实现了自定义的商品推荐优先级计算。

基于内容的相似推荐

通过提取物品内容的UGC标签,作为特征向量,结合商品相似度公式和实时推荐规则,实现商品相似度列表。为了避免热门标签对特征提取的影响,可以通过TF-IDF调整其权重,尽可能接近用户偏好。

基于物品的协同过滤相似推荐

如果物品有同样的受众(感兴趣的人群),那么它们是有内在相关性的。所以利用已有的行为数据,分析受众的相似程度,进而得出物品间的相似度。我们把这种方法定义为“同现相似度”,公示如下:

同现相似度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值