基于实时计算(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月前
|
存储 监控 大数据
阿里云实时计算Flink在多行业的应用和实践
本文整理自 Flink Forward Asia 2023 中闭门会的分享。主要分享实时计算在各行业的应用实践,对回归实时计算的重点场景进行介绍以及企业如何使用实时计算技术,并且提供一些在技术架构上的参考建议。
705 7
阿里云实时计算Flink在多行业的应用和实践
|
1月前
|
SQL 消息中间件 Kafka
实时计算 Flink版产品使用问题之如何在EMR-Flink的Flink SOL中针对source表单独设置并行度
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
25天前
|
消息中间件 监控 Kafka
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
|
1月前
|
消息中间件 监控 Kafka
实时计算 Flink版产品使用问题之怎么调整Flink Web U显示的日志行数
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
SQL 流计算
实时计算 Flink版操作报错合集之怎么向一个未定义列的表中写入数据
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
2月前
|
SQL 数据处理 Apache
Apache Flink SQL:实时计算的核心引擎
Apache Flink SQL 的一些核心功能,并探讨了其在实时计算领域的应用。随着 Flink 社区的不断发展和完善,Flink SQL 将变得越来越强大,为实时数据分析带来更多的可能性。
|
2月前
|
数据采集 DataWorks 数据库
DataWorks产品使用合集之是否可以和Flink 实时计算结合使用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
3月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的电影推荐系统设计和实现(源码+LW+调试文档+讲解等)
|
3月前
|
搜索推荐 算法 小程序
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)
基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)

相关产品

  • 实时计算 Flink版