推荐系统-Task05推荐系统流程构建

简介: Offilne部分:主要是基于离线物料系统生成的物料画像和用户画像进行处理,为每个用户生成热门页列表和推荐页列表,并将其存储到Redis中Online部分:主要是针对不同的用户,使用不同的策略,提供热门页列表和推荐页列表的新闻数据,进行过滤排序之后,展示到前端页面上

1.推荐系统基本流程:


Offilne部分:主要是基于离线物料系统生成的物料画像和用户画像进行处理,为每个用户生成热门页列表和推荐页列表,并将其存储到Redis中

Online部分:主要是针对不同的用户,使用不同的策略,提供热门页列表和推荐页列表的新闻数据,进行过滤排序之后,展示到前端页面上


2. Offline部分


2.1 热门页列表构建


2.1.1 业务流程

基于离线物料系统生成的物料画像(MongoDB的NewsRecSys库的FeatureProtail集合数据),根据其发布时间以及用户的行为记录(阅读量、点赞量和收藏量)计算热度值,更新物料中所有新闻的热度值

将所有新闻按照类别,将热门列表存入缓存中,提供给Online的热门页列表


2.1.2 核心代码逻辑

代码位于recprocess/recall/hot_recall.py

update_hot_value()方法:主要用于更新物料中所有新闻的热度值,通过遍历MongoDB的NewsRecSys库的FeatureProtail集合数据,选取最近3天发布的新闻,通过使用下列公式,进行热度值的计算,并更新hot_value字段(初始值为1000):

news_hot_value = (news_likes_num * 0.6 + news_collections_num * 0.3 + news_read_num * 0.1) * 10 / (1 + time_hour_diff / 72)

Copy to clipboardErrorCopied

注: 上述公式源自魔方秀公式: 魔方秀热度 = (总赞数 * 0.7 + 总评论数 * 0.3) * 1000 / (公布时间距离当前时间的小时差+2) ^ 1.2


最初的公式为Hacker News算法: Score = (P-1) / (T+2)^G 其中P表示文章得到的投票数,需要去掉文章发布者的那一票;T表示时间衰减(单位小时);G为权重,默认值为1.8


group_cate_for_news_list_to_redis()方法:主要用于将物料库(FeatureProtail集合),通过遍历各类新闻,按照下面形式存入Redis[0]的hot_list_news_cate中:

hot_list_news_cate:<新闻类别标识>: {<新闻类别名>_<新闻id>:<热度值>}

Copy to clipboardErrorCopied


2.2 推荐页列表构建

2.2.1 业务流程

针对注册用户,建立冷启动的推荐页列表数据,通过用户年龄、性别指定用户群,自定义用户的新闻类别,根据新闻热度值,生成冷启动的推荐列表

针对老用户,提供个性化推荐,目前该系统没有提供千人千面的推荐功能


2.2.2 核心代码逻辑

代码位于recprocess/cold_start/cold_start.py

generate_cold_user_strategy_templete_to_redis_v2()方法:按照用户类别、新闻类别提供各类新闻的热度值;通过自定义配置将用户分为4类,遍历各类别中的新闻类型,将物料库(MongoDB的NewsRecSys库的FeatureProtail集合数据)中对应的新闻热度值按照下面形式存入Redis[0]的cold_start_group中:


cold_start_group:<人群分类ID>:<新闻类别标识>: {<新闻类别名>_<新闻id>:<热度值>}
Copy to clipboardErrorCopied

user_news_info_to_redis()方法:

按照用户、新闻分类提供用户冷启动的推荐模板;遍历所有用户,针对每个用户分类,从Redis[0]的cold_start_group中取出新闻热度值,按照以下形式存入Redis[0]的cold_start_user中:

cold_start_user:<用户ID>:<新闻类别标识>: {<新闻类别名>_<新闻id>:<热度值>}

Copy to clipboardErrorCopied

按照用户提供用户的新闻类别标识;针对每个用户,根据自定义的用户新闻类别(即每个用户分类具有哪些新闻类别),按照以下形式存入Redis[0]的cold_start_user_cate_set中:

cold_start_user_cate_set:<用户ID>: {<新闻类别标识>}

Copy to clipboardErrorCopied


3.Online部分

3.1 热门页列表构建


3.1.1 业务流程

获取用户曝光列表,得到所有的新闻ID

针对新用户,从之前的离线热门页列表中,为该用户生成一份热门页列表,针对老用户,直接获取该用户的热门页列表

对上述热门列表,每次选取10条新闻,进行页面展示

对已选取的10条新闻,更新曝光记录


3.1.2 核心代码逻辑

代码位于recprocess/online.py

_get_user_expose_set()方法:主要获取用户曝光列表,得到所有的新闻ID;该数据存储在Redis[3]中,数据格式如下:

user_exposure:<用户ID>: {<新闻ID>:<曝光时间>}

Copy to clipboardErrorCopied

_judge_and_get_user_reverse_index()方法:用于判断用户是否存在热门页列表,如果用户是新用户,根据Redis[0]的hot_list_news_cate中的数据,复制创建该用户的热门页列表,具体数据格式如下:

user_id_hot_list:<用户ID>:<新闻分类标识>: {<新闻类别名>_<新闻id>:<热度值>}

Copy to clipboardErrorCopied

_get_polling_rec_list()方法:通过轮询方式获取用户的展示列表,每次只取出10条新闻;通过while循环方式,从Redis[0]的user_id_hot_list:<用户ID>:<新闻分类标识>中选取新闻,之后删除已选取的新闻,并把选取的10条新闻内容放到用户新闻(user_news_list)数组中,新闻ID放到曝光列表(exposure_news_list)中

_save_user_exposure()方法:将曝光新闻数据存储到Redis[3]中;设置曝光时间,删除重复的曝光新闻,并按照下列格式存储到Redis[3]的user_exposure中:


user_exposure:<用户ID>: {<新闻ID>:<曝光时间>}

Copy to clipboardErrorCopied


3.2 推荐页列表构建

3.2.1 业务流程

获取用户曝光列表,得到所有的新闻ID

针对新用户,从之前的离线推荐页列表中,为该用户生成一份推荐页列表,针对老用户,直接获取该用户的推荐页列表

对上述热门列表,每次选取10条新闻,进行页面展示

对已选取的10条新闻,更新曝光记录

3.2.1 核心代码逻辑


代码位于recprocess/online.py


_get_user_expose_set()方法:主要获取用户曝光列表,得到所有的新闻ID;该数据存储在Redis[3]中,数据格式如下:


user_exposure:<用户ID>: {<新闻ID>:<曝光时间>}

Copy to clipboardErrorCopied

_judge_and_get_user_reverse_index()方法:用于判断用户是否存在冷启动列表,如果用户是新用户,获取分组ID,根据用户DI和分组ID,从Redis[0]的cold_start_group中的数据,复制创建该用户的推荐列表,具体数据格式如下:


cold_start_user:<用户ID>:<新闻分类标识>: {<新闻类别名>_<新闻id>:<热度值>}

Copy to clipboardErrorCopied

将用户当前的新闻类别标识,存放到cold_start_user_cate_set中,具体格式如下:


cold_start_user_cate_set:<用户ID>: {<新闻ID>}

Copy to clipboardErrorCopied

_get_polling_rec_list()方法:通过轮询方式获取用户的展示列表,每次只取出10条新闻;通过while循环方式,从Redis[0]的cold_start_user:<用户ID>:<新闻分类标识>中选取新闻,之后删除已选取的新闻,并把选取的10条新闻内容放到用户新闻(user_news_list)数组中,新闻ID放到曝光列表(exposure_news_list)中


_save_user_exposure()方法:将曝光新闻数据存储到Redis[3]中;设置曝光时间,删除重复的曝光新闻,并按照下列格式存储到Redis[3]的user_exposure中:


user_exposure:<用户ID>: {<新闻ID>:<曝光时间>}

Copy to clipboardErrorCopied


4 .总结


 本次任务主要介绍了离线/在线的热门页列表和推荐页列表生成,离线部分的列表生成,主要是用于Redis存储,提供给在线服务使用,前端页面通过调用在线服务,利用Redis中的热门页和推荐页列表数据进行展示,其中推荐页列表数据主要是冷启动部分。


推荐系统流程学习资料:


「从零入门推荐系统」01:推荐系统预备知识介绍_大数据与人工智能-CSDN博客


「从零入门推荐系统」02:推荐系统基础介绍_大数据与人工智能-CSDN博客


「从零入门推荐系统」03:推荐系统的数据源与数据预处理_大数据与人工智能-CSDN博客


「从零入门推荐系统」04:推荐系统的产品与运营_大数据与人工智能-CSDN博客


「从零入门推荐系统」05:推荐系统业务流程与架构_大数据与人工智能-CSDN博客


构建企业级推荐系统(05):从零开始入门推荐算法工程师(万文建藏)_大数据与人工

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
1396 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
9月前
|
搜索推荐 测试技术 C语言
NPU适配推荐系统GR模型流程
本示例将开源Generative Recommendations模型迁移至NPU训练,并通过HSTU融合算子优化性能。基于Atlas 800T A2平台,使用PyTorch 2.1.0、Python 3.11.0等环境。文档涵盖容器启动、依赖安装、算子适配、源码修改、数据预处理及配置文件设置等内容。性能测试显示,使用HSTU融合算子可显著降低端到端耗时(如ml_1m数据集单step从346ms降至47.6ms)。
|
机器学习/深度学习 监控 搜索推荐
从零开始构建:使用Hologres打造个性化推荐系统的完整指南
【10月更文挑战第9天】随着互联网技术的发展,个性化推荐系统已经成为许多在线服务不可或缺的一部分。一个好的推荐系统可以显著提高用户体验,增加用户粘性,并最终提升业务的转化率。本指南将详细介绍如何使用阿里云的Hologres数据库来构建一个高效的个性化推荐系统。我们将涵盖从数据准备、模型训练到实时推荐的整个流程。
856 0
|
机器学习/深度学习 数据采集 人工智能
构建一个基于AI的推荐系统的技术探索
【5月更文挑战第23天】本文探讨了构建基于AI的推荐系统的关键技术,包括数据收集、预处理、特征工程、推荐算法(如协同过滤、内容过滤、深度学习)及结果评估。通过理解用户行为和偏好,推荐系统能提供个性化建议。实现步骤涉及确定业务需求、设计数据方案、预处理、算法选择、评估优化及系统部署。随着技术进步,未来推荐系统将更加智能。
1164 2
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
804 1
|
机器学习/深度学习 搜索推荐 数据可视化
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,重点讲解了如何构建招聘与求职双向推荐系统的建模过程和Python代码实现,并对招聘信息和求职者信息进行了详细分析和画像构建。
313 1
|
存储 人工智能 搜索推荐
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
本文介绍了2023年第十一届泰迪杯数据挖掘挑战赛C题的解决方案,详细阐述了如何构建泰迪内推平台的招聘与求职双向推荐系统,包括数据收集、分析、画像构建、岗位匹配度和求职者满意度模型的建立,以及履约率最优化的推荐模型,提供了27页的论文和实现代码。
351 0
【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码
|
机器学习/深度学习 人工智能 搜索推荐
构建基于AI的个性化新闻推荐系统:技术探索与实践
【6月更文挑战第5天】构建基于AI的个性化新闻推荐系统,通过数据预处理、用户画像构建、特征提取、推荐算法设计及结果评估优化,解决信息爆炸时代用户筛选新闻的难题。系统关键点包括:数据清洗、用户兴趣分析、表示学习、内容及协同过滤推荐。实践案例证明,结合深度学习的推荐系统能提升用户体验,未来系统将更智能、个性化。
1023 3
|
存储 搜索推荐 算法
`surprise`是一个用于构建和分析推荐系统的Python库。
`surprise`是一个用于构建和分析推荐系统的Python库。
|
算法 搜索推荐
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流
推荐系统,推荐算法01,是首页频道推荐,一个是文章相似结果推荐,用户物品画像构建就是用户喜欢看什么样的文章,打标签,文章画像就是有那些重要的词,用权重和向量表示,推荐架构和业务流

热门文章

最新文章