大数据推荐系统实时架构和离线架构

本文详细介绍了大数据推荐系统的实时和离线架构,涉及数据收集、处理、实时推荐、离线计算、模型训练等内容,并通过电商案例展示了其实现过程。实时架构适合对推荐实时性要求高的场景,而离线架构则适用于处理大量历史数据的场景。
摘要由CSDN通过智能技术生成

随着互联网的发展,大数据推荐系统已经成为了很多互联网平台不可或缺的一部分。推荐系统的目标是根据用户的历史行为和偏好,向用户推荐最相关的内容,如商品、文章、音乐等,从而提高用户粘性和平台的盈利能力。本文将介绍大数据推荐系统的实时架构和离线架构,包含详细步骤和代码实例,并通过一个实际案例来展示其应用。

第一部分:实时推荐系统架构

实时推荐系统的主要目标是能够在用户产生行为后,尽快地推荐相应的内容。为了实现这一目标,我们可以采用以下实时推荐系统架构:

  1. 数据收集

实时推荐系统首先需要收集用户的行为数据,如点击、浏览、购买等。这些数据通常通过日志收集和消息队列来实现,保证数据的实时性和可靠性。

  1. 数据处理

收集到的行为数据需要进行实时的数据处理和特征提取。这包括数据清洗、用户画像的建立、用户兴趣标签的提取等。

  1. 实时推荐

通过实时推荐引擎,根据用户的实时行为和特征,推荐最相关的内容给用户。实时推荐引擎通常采用在线机器学习算法和模型,对用户兴趣进行实时预测。

  1. 反馈和更新

用户的反馈数据也需要及时收集和处理,包括用户对推荐结果的评分、点击等。这些反馈数据可以用来优化推荐算法和模型,实现更准确的实时推荐。

第二部分:实时推荐系统案例

假设我们要开发一个电商平台的实时推荐系统,为用户实时推荐商品。

  1. 数据收集

# 模拟数据收集

def collect_user_behavior(user_id, item_id, behavior):

 # 将用户行为数据写入消息队列

 message = f"{user_id},{item_id},{behavior}"

 message_queue.push(message)

  1. 数据处理

# 用户画像建立

def build_user_profile(user_id):

 # 从数据库中获取用户的历史行为数据,建立用户画像

 behavior_data = database.query_user_behavior(user_id)

 user_profile = {}

 for behavior in behavior_data:

   user_profile[behavior.item_id] = behavior.score

 return user_profile

  1. 实时推荐

# 实时推荐引擎

def real_time_recommend(user_profile):

 # 在线推荐算法,根据用户画像进行实时推荐

 recommended_items = online_ml_model.predict(user_profile)

 return recommended_items

  1. 反馈和更新

# 用户反馈处理

def handle_user_feedback(user_id, item_id, rating):

 # 将用户反馈数据更新到在线机器学习模型

 online_ml_model.update(user_id, item_id, rating)

以上代码示例展示了实时推荐系统的关键步骤,包括数据收集、处理、实时推荐和反馈更新。

第三部分:离线推荐系统架构

离线推荐系统的主要目标是根据用户的历史行为和大量离线数据,进行批量计算和模型训练,从而得到离线的推荐结果。离线推荐系统的架构如下:

  1. 数据收集和存储

离线推荐系统需要收集和存储大量的历史行为数据。这些数据通常保存在分布式存储系统中,如HDFS、HBase等,以便后续离线计算的使用。

  1. 离线计算和特征提取

通过离线计算引擎,对用户历史行为数据进行批量计算和特征提取。这包括用户的行为序列分析、商品的热度计算、用户-商品关联关系挖掘等。

  1. 离线模型训练

根据提取的特征,进行离线的机器学习模型训练。这些模型可以是协同过滤、矩阵分解等推荐算法。

  1. 离线推荐

将训练好的模型应用到离线推荐引擎中,生成最终的离线推荐结果。

第四部分:离线推荐系统案例

继续以电商平台为例,我们将展示离线推荐系统的关键步骤。

  1. 数据收集和存储

# 模拟数据收集和存储

def collect_user_behavior_batch():

 # 从数据库中导出用户历史行为数据到HDFS

 behavior_data = database.query_user_behavior_all()

 hdfs.write_data(behavior_data)

  1. 离线计算和特征提取

# 离线计算和特征提取

def offline_feature_extraction():

 # 从HDFS读取用户历史行为数据

 behavior_data = hdfs.read_data()

 # 进行离线计算和特征提取,如用户-商品关联关系挖掘

 user_item_association = offline_feature_engine.extract_user_item_association(behavior_data)

 return user_item_association

  1. 离线模型训练

# 离线模型训练

def offline_model_training(user_item_association):

 # 根据提取的特征进行离线模型训练

 model = offline_ml_model.train(user_item_association)

 return model

  1. 离线推荐

# 离线推荐引擎

def offline_recommend(model, user_id, top_n):

 # 根据训练好的模型,为用户生成离线推荐结果

 recommended_items = model.predict(user_id, top_n)

 return recommended_items

以上代码示例展示了离线推荐系统的关键步骤,包括数据收集和存储、离线计算和特征提取、离线模型训练和离线推荐。

第五部分:实时架构和离线架构的优势和适用场景

实时推荐系统和离线推荐系统各有优势,并适用于不同的场景:

实时架构的优势:

- 实时性高:能够及时响应用户行为,快速推荐最相关的内容。

- 反馈迭代:能够及时收集用户反馈,优化推荐算法和模型。

实时架构适用场景:

- 对推荐实时性要求较高的场景,如实时新闻推荐、实时广告推荐等。

离线架构的优势:

- 批量处理:能够高效地处理大量历史数据,进行复杂的特征提取和模型训练。

- 离线优化:能够充分利用大数据的离线计算能力,生成更准确的推荐结果。

离线架构适用场景:

- 对推荐实时性要求不高的场景,如商品推荐、音乐推荐等。

Image

结论

大数据推荐系统在互联网平台中发挥着重要的作用,通过根据用户的历史行为和兴趣,向用户推荐最相关的内容,提高用户粘性和平台盈利能力。本文介绍了大数据推荐系统的实时架构和离线架构,通过实际案例展示了各自的应用。实时架构适用于对推荐实时性要求较高的场景,而离线架构适用于对推荐实时性要求不高,但需要处理大量历史数据的场景。在实际开发中,根据具体需求,可以选择合适的架构来构建高效、稳定的大数据推荐系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
⼤数据推荐系统架构 推荐系统介绍 推荐系统介绍 当下,个性化推荐成了互联⽹产品的标配。但是,⼈们对推荐该如何来做,也就是推荐技术本⾝,还不甚了解。为此,好学的你肯定在收藏 着朋友圈⾥流传的相关⽂章,转发着微博上的相关讨论话题,甚⾄还会不断奔⾛在各种⼤⼩⾏业会议之间,听着⼤⼚职⼯们讲那些⼲货。我 知道,这样碎⽚化的吸收,增加了知识的同时,也增加了焦虑。因为技术的不平等⼴泛存在于业界内,推荐系统也不例外。推荐系统从搜索 引擎借鉴了不少技术和思想,⽐如内容推荐有不少技术就来⾃搜索引擎, 由 Amazon 发扬光⼤的。推荐系统也是现在热门的⼈⼯智能分⽀ 之⼀,但凡⼈⼯智能类的落地,都需要具备这⼏个基本元素才⾏:数据、算法、场景、计算⼒。推荐系统也不例外,⽽刚好,现在的时代, 这些元素的获得成本相⽐⼗年前已经⼩了很多。未来随着各种硬件设备越来越智能,万物互联得越来越紧密,⼈们的个性化需求、场景的多 样性、数据的复杂性都对推荐系统提出了更⾼的要求。 推荐系统概括⼀下,其实就是以下的的⽬标主要包括: ⽤户满意性:⾸当其冲的,推荐系统主要就是为了满⾜⽤户的需求,因此准确率是评判⼀个推荐系统好坏的最关键指标。 多样性:虽然推荐系统最主要还是满⾜⽤户的兴趣,但是也要兼顾内容的多样性,对于权重不同的兴趣都要做到兼顾。 新颖性:⽤户看到的内容是那些他们之前没有听说过的物品。简单的做法就是在推荐列表去掉⽤户之前有过⾏为的那些内容。 惊喜度:和新颖性类似,但新颖性只是⽤户没看到过的但是确实是和他⾏为是相关的,⽽惊喜度是⽤户既没有看过和他之前的⾏为也不 相关,但⽤户看到后的确是喜欢的。 实时性:推荐系统要根据⽤户的上下⽂来实时更新推荐内容,⽤户的兴趣也是随着时间⽽改变的,需要实时更新。 推荐透明度:对于⽤户看到的最终结果,要让⽤户知道推荐此内容的原因。⽐如,"买过这本书的⼈同时也买过"、"你购买过的xx和 此商品类似"。 覆盖率:挖掘长尾内容也是推荐系统很重要的⽬标。因此,推荐的内容覆盖到的内容越多越好。 基于这些⽬标,推荐系统包括四种推荐⽅式: 热门推荐:就是热门排⾏榜的概念。这种推荐⽅式不仅仅在IT系统,在平常的⽣活中也是处处存在的。这应该是效果最好的⼀种推荐⽅ 式,毕竟热门推荐的物品都是位于曝光量⽐较⾼的位置的。 ⼈⼯推荐:⼈⼯⼲预的推荐内容。相⽐于依赖热门和算法来进⾏推荐。⼀些热点时事如世界杯、nba总决赛等就需要⼈⼯加⼊推荐列 表。另⼀⽅⾯,热点新闻带来的推荐效果也是很⾼的。 相关推荐:相关推荐有点类似于关联规则的个性化推荐,就是在你阅读⼀个内容的时候,会提⽰你阅读与此相关的内容。 个性化推荐:基于⽤户的历史⾏为做出的内容推荐。也是本⽂主要讲述的内容。 其中,前三者是和机器学习没有任何关系的,但却是推荐效果最好的三种⽅式。⼀般说来,这部分内容应该占到总的推荐内容的80%左右, 另外20%则是对长尾内容的个性化推荐。 推荐系统架构 推荐系统架构 online部分架构 部分架构 核⼼模块 业务⽹关,推荐服务的⼊⼝,负责推荐请求的合法性检查,组装请求响应的结果。 推荐引擎,推荐系统核⼼,包括online逻辑,召回、过滤、特征计算、排序、 多样化等处理过程。 数据路径 1、请求的刷新从gateway,经过流量分配模块,传到业务gateway,业务gateway⽀持http,tcp(使⽤thirtf协议或者protobuf 协议) 等多种类型接⼝; 2、⽤户⾏为数据,从gateway到Flume agent,然后到kafka,为后⾯online,realtime userprofile部分的提供实时数据,也为offline部 分的数据存储系统提供数据。 offline部分架构 部分架构 本⽂从⼤框架上介绍推荐系统架构,在许多公司⾯试中会给你⼀个推荐或者数据挖掘的问题,⽐如让你简单设计⼀个feed流推荐系统,所以 需要对推荐系统的整体框架要了解。下⾯是⼀个推荐系统的主要部分 从框架的⾓度看,推荐系统基本可以分为数据层、召回层、排序层。 数据层包括数据⽣成和数据存储,主要是利⽤各种数据处理⼯具对原始⽇志进⾏清洗,处理成格式化的数据,落地到不同类型的存储系统 中,供下游的算法和模型使⽤。 sessionlog:对原始数据进⾏清洗合并,sessionlog⼀般就是清洗合并后的数据,后续的算法和统计都是根据sessionlog进⾏再加⼯。 userprofile:对⽤户属性和⾏为等信息进⾏采集和统计,为后续算法提供特征⽀持。 itemDoc:对视频、商品等属性、曝光、点击等字段进⾏统计, 为后续算法提供特征⽀持。 召回层主要是从⽤户的历史⾏为、实时⾏为等⾓度利⽤各种触发策略产⽣推荐的候选集,对不同的策略和算法产⽣的候选集进⾏融合并按照 产品规则进⾏过滤,⼀般融合和过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值