开发者社区> 付空> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 本文为您介绍如何基于阿里云实时计算快速搭建实时推荐系统。 背景 对个人来说,推荐系统起着信息过滤的作用;对Web/App来说,推荐系统起着满足用户个性化需求,提升用户满意度的作用。亚马逊推荐产生的成交额占其GMV的30%以上;Netflix推荐系统每年帮其节省了近10亿美金的业务费用。
+关注继续查看

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


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

背景

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

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

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

概述

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

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


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

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

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

说明:

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

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

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

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


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

标签系统

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

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


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

数据流处理系统(实时)

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

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

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

比如用户a:

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

内容筛选系统

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

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

文档2:

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

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

总结

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

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

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于 Flink 构建大规模实时风控系统在阿里巴巴的落地
阿里云实时计算产品经理李佳林(风元)在 Flink 峰会的演讲。
559 0
二维火的实时计算Flink版实践落地
二维火的实时计算Flink版实践落地
344 0
贝壳基于 Flink 的实时计算演进之路
贝壳找房在实时计算之路上的平台建设以及实时数仓应用。
6036 0
Flink最佳实践(二)Flink流式计算系统
前言 在 Flink最佳实践(一)流式计算系统概述 中,我们详细讨论了流式计算系统中 时域、窗口、时间推理与正确性工具 等概念。 本文将以这些概念为基础,逐一介绍 Flink 的 发展背景、核心概念、时间推理与正确性工具、安装部署、客户端操作、编程API 等内容,让开发人员对 Flink 有较为全面的认识并拥有一些基础操作与编程能力。
7473 0
Flink最佳实践(一)流式计算系统概述
前言 传统的批处理拥有巨大 吞吐量 的优势,但是随之而来的是极其 高延迟 的缺陷。 随着大数据系统的不断发展,传统的批处理已然无法全部满足对 时效性 要求愈加严苛的业务需求。 为了适应逐渐变得 「实时」 的年代,大数据系统架构也由简单的批处理转向批流混合的Lambda架构,最后可能会逐渐演变成只有流计算的 高精准高时效 的Kappa架构。
1843 0
实时计算Flink——基本概念
产品模型 项目空间(Project) 项目空间是实时计算 Flink最基本的业务组织单元,是您管理集群、作业、资源、人员的基本单元。您可以选择创建项目,也可以用子账号身份加入其它Project中。实时计算的项目空间,通过阿里云RAM主子账号支持多人协作。
3406 0
实时计算Flink > 产品定价——自动续费
本页目录 自动续费自动续费 为了方便您的使用实时计算 Flink,实时计算共享模式推出了自动续费的功能。通过以下步骤,您可以为集群开启,关闭或者修改自动续费的功能。 进入阿里云控制台。选择续费。进入续费管理,选择流计算。
1374 0
实时计算Flink——发展历程
起源:脱胎于双十一实时大屏业务 实时计算 Flink脱胎于阿里巴巴集团内部双十一实时大屏业务,在阿里巴巴集团内部从最开始支持双十一大屏展现和部分实时报表业务的实时数据业务团队,历经多年的长期摸索和发展,到最终成长一个独立稳定的云计算产品团队。
2913 0
实时计算助力1688打造「实时挑货」系统
内容是一个电商app不可或缺的组成部分。越来越多的人会使用碎片时间浏览手机app的内容,包含导购的帖子、短视频、直播等。1688挑货业务,打造了基于买家和商家之间老买卖关系的内容场。让商家通过内容维系老客户,挖掘新客户。
3057 0
+关注
付空
阿里云实时计算产品经理付空
22
文章
0
问答
来源圈子
更多
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
+ 订阅
相关文档: 实时计算(流计算)
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载