推荐系统实战

项目背景

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


技术栈

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调整其权重,尽可能接近用户偏好。


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

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

同现相似度
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容