基于实时计算(Flink)打造一个简单的实时推荐系统

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 本文为您介绍如何基于阿里云实时计算快速搭建实时推荐系统。

1.背景


对个人来说,推荐系统起着信息过滤的作用;对Web/App来说,推荐系统起着满足用户个性化需求,提升用户满意度的作用。亚马逊推荐产生的成交额占其GMV的30%以上;Netflix推荐系统每年帮其节省了近10亿美金的业务费用。

推荐系统越来越实时化。当一个会员访问Netflix,Netflix希望能够帮助他在几秒钟之内就找到他感兴趣的影片,以免他去寻找别的娱乐方式。

下文为您介绍如何基于阿里云实时计算快速搭建一套实时推荐系统。


2.概述


推荐就是把用户的兴趣与物品做链接。但通常情况下,用户和物品之前不会有直接的关系(比如用户根本没看过这个物品,自然也不会有浏览、点击、收藏、喜欢等联系),需要一些中间元素来做桥接。

根据中间元素的不同,推荐的思路大概分下面三类:


实时推挤概述 

  • 物品:推荐和用户过去喜欢的物品相识的物品;
  • 用户:推荐和当前用户兴趣相近的用户喜欢过的物品;
  • 特征:推荐符合用户过去喜欢的物品特征的物品。

本文重点介绍基于特征的推荐:基于标签的实时推荐。

标签是特征的一种表现形式,标签再弱化一些,就是类别。

说明:

  • 基于标签的推荐其实应用很普遍,比如豆瓣,比如淘宝,都用到了大量的标签,这样的推荐系统有很多优点,比如实现简单、可解释性好等等。
  • 以上部分描述重点参考了:《推荐系统实践》,作者:项亮。

一个简单的基于标签的实时推荐系统大概分三部分:

  • 标签系统
  • 数据流处理系统
  • 根据用户标签筛选出要推荐的内容

作为示例,假设业务需求描述为: 用户最近点击了什么样的内容,把类似的内容推荐给他。


实时推荐 

说明:

上图绿色实线部分是在线的实时流,蓝色虚线部分是离线计算的非实时部分。


3.标签系统


标签系统就是俗称的用户画像。 从属性变化性质来分,标签系统可分为静态标签和动态标签:

  • 静态标签: 短时间内变化不大的标签,比如性别、地域、职业、生活习惯等;
  • 动态标签: 不断变化的行为标签,比如关注的产品类别、产品偏好、内容偏好等 从更新时间的频率上来说,又可以分为短期兴趣标签和长期用户标签。

说明:

  • 短期标签的更新频率是分钟级或秒级。
  • 短期标签的更新频率是分钟级或秒级。


在这个简化的推荐系统里,我们只考虑实时部分(绿色实线部分)是可以满足需求的。 所以只考虑短期兴趣标签的计算,还是出于简化问题的考虑,我们假设现在只有四个标签,描述用户对内容类别的感兴趣程度:美妆、汽车、衣服、电子产品。 对一个用户来说,可以用0-1的浮点值来描述其感兴趣程度(也可以更简化,大于某个阈值为1,小于某个阈值为0)。


4.数据流处理系统(实时)


主要是绿色实线部分,针对系统推荐的内容。

用户有两种行为,点击或不点击,这个事件推送到实时计算(其实是两个流,一个是点击流,一个是曝光流,这两个流根据用户ID、内容ID做J)。

实时计算实时计算过去N秒(N可以根据业务需求取值,比如60,这就是一个事件窗口)内每个用户针对四种内容类别的点击率,然后把这个点击率作为用户的短期兴趣标签。

比如用户a:

试用


{
美妆:0.2,
汽车:0.1,
衣服:0.02,
电子产品:0.5
}

5.内容筛选系统


内容筛选系统就是根据用户的短期兴趣标签去筛选内容。 假设所有的内容都存储到某个数据库里,并打好了内容标签。 比如文档1:

试用


{
美妆:0.3,
汽车:0.5,
衣服:0.8,
电子产品:0.1
}

文档2:

试用


{
美妆:0.4,
汽车:0.2,
衣服:0.1,
电子产品:0.7
}

推荐流程是:用户发起访问⇒找到用户短期兴趣标签⇒计算文档与用户标签的相似度⇒相似度排序⇒展示内容。


6.总结


上文描述了一个简单的基于实时计算的实时推荐系统。

还可以进一步简化:把所有的0-1区间内的值替换成0或1。这样,每个用户的兴趣标签只有是否,文章的标签也是确定的。直接用搜索的方式就能完成内容筛选部分。比如当前用户最近60秒的兴趣标签是汽车,那么直接去内容库里搜索含有汽车标签的内容并推送。

您也可以逐步替换各个组件,升级成一个完备和专业的实时推荐系统。


案例与解决方案汇总页:

阿里云实时计算产品案例&解决方案汇总

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
相关文章
|
2月前
|
存储 SQL 分布式数据库
OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案
OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案
|
2月前
|
供应链 流计算
飞鹤基于阿里云实时计算Flink构建数字化运营管理体系
飞鹤借助实时计算Flink等产品,构建数字化运营管理体系,建立实时预警机制,提前窥探风险,为供应链等业务决策提效。
594 0
|
3月前
|
大数据 流计算
掌阅科技基于阿里云实时计算Flink构建数据基建平台
掌阅科技专注于数字阅读,是全球领先的数字阅读平台之一。基于数字阅读平台的海量用户,掌阅通过阿里云实时计算Flink等大数据计算和分析服务,搭建商业化、用户增长、推荐服务等数据基建平台,实现商业化增值与用户阅读体验的结合。
377 0
|
3月前
|
SQL 消息中间件 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(四)实时计算需求及技术方案
56 0
|
3月前
|
SQL 大数据 Serverless
什么是阿里云实时计算Flink版
什么是阿里云实时计算Flink版
41 1
|
4月前
|
运维 监控 调度
小米基于 Flink 的实时计算资源治理实践
小米基于 Flink 的实时计算资源治理实践
|
7月前
|
NoSQL 关系型数据库 MongoDB
版本发布|实时计算 Flink 版(2023-08-21 版本)
本文为您介绍 2023 年 8 月 21 日发布的 Flink 全托管版本的重大功能变更和主要缺陷修复。
604 0
|
4月前
|
搜索推荐 算法 前端开发
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
121 0
|
2月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
83 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
2月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
148 1

相关产品

  • 实时计算 Flink版