一文读懂推荐系统

news2024/9/24 5:23:30

随着互联网的飞速发展,信息过载已经成为了一个普遍的问题。我们每天都要面对大量的内容,却很难找到真正符合自己兴趣和需求的信息。这时,推荐系统应运而生,它能够根据用户的兴趣和行为,智能地推荐相关内容,大大提高了用户获取信息的效率。

一、什么是推荐系统?

推荐系统是一种信息过滤系统,它通过分析用户的行为和兴趣,自动地为用户推荐相关内容。这些内容可以包括新闻、音乐、电影、商品等各类信息。推荐系统的目的是帮助用户快速找到他们感兴趣的内容,提高用户体验。

本质:推荐系统本质是要解决用户,物品(信息)和场景的连接问题。

二、推荐系统的应用场景

电商推荐:电商网站通过推荐系统,为用户推荐他们可能感兴趣的商品,提高转化率和购买率。
新闻推荐:新闻客户端通过分析用户的阅读习惯和兴趣,为用户推荐相关的新闻和资讯。
音乐推荐:音乐平台根据用户的听歌历史和偏好,为用户推荐相似的歌曲和歌手。
个性化推荐:个性化推荐涵盖了众多领域,包括个性化邮件、个性化广告等,都是通过分析用户的行为和兴趣,为其推送个性化的内容。

三、推荐系统的框架

在这里插入图片描述

框架模块

  • 协议调度:请求的发送和结果的回传。在请求中,用户会发送自己的ID,地理位置等信息。结果回传中会返回推荐系统给用户推荐的结果。
  • 推荐算法:算法按照一定的逻辑为用户产生最终的推荐结果,不同的推荐算法基于不同的逻辑与数据运算过程。
  • 消息队列:数据的上报与处理。根据用户的ID,拉取例如用户的性别、之前的点击、收藏等用户信息。而用户在APP中产生的新行为,例如新的点击会储存在存储单元里面。
  • 存储单元:不同的数据类型和用途会储存在不同的存储单元中,例如内容标签与内容的索引存储在mysql里,实时性数据存储在redis里,需要进行数据统计的大量离线数据存储在hivesql里。

核心组件

  • 用户画像:用户画像是对用户特征的全面描述,包括用户的兴趣、行为、偏好等。推荐系统通过分析用户画像,了解用户的喜好和需求,从而为其推荐合适的内容。
  • 物品特征:物品特征是对推荐物品的描述,包括物品的属性、类别、关键词等。这些特征可以帮助推荐系统更好地理解物品的内容和特点。
  • 推荐算法:推荐算法是推荐系统的核心,它通过特定的算法模型对用户画像和物品特征进行匹配,从而为用户推荐合适的物品。常见的推荐算法有基于内容的推荐、协同过滤推荐和混合推荐等。

四、推荐系统链路

在这里插入图片描述
推荐系统的结构化流程可以概括为以下几个步骤:

  1. 召回(Recall)

    • 目标:从庞大的物品数据库中快速筛选出一部分候选物品。
    • 方法:系统调用多条召回通道,每条通道根据特定策略(如内容标签、用户历史行为等)选取一定数量的物品。
    • 输出:从上亿个物品中召回几千个候选物品。
  2. 粗排(Coarse Ranking)

    • 目标:从召回的物品中进一步筛选出用户可能感兴趣的物品。
    • 方法:使用较小规模的机器学习模型对召回的物品进行打分。
    • 输出:根据模型打分,筛选出分数最高的几百个物品。
  3. 精排(Fine Ranking)

    • 目标:精准评估用户对剩余候选物品的兴趣度。
    • 方法:应用大规模的深度神经网络模型,对粗排后的物品进行细致打分。
    • 输出:得到反映用户兴趣的精排分数。
  4. 重排(Re-ranking)

    • 目标:优化最终展示给用户的物品列表,考虑多样性和商业因素。
    • 方法:结合精排分数和多样性分数进行随机抽样,调整物品顺序。
    • 输出:生成最终展示给用户的几十个物品列表,包括打散相似内容和插入广告及运营内容。
  5. 展示(Presentation)

    • 目标:将最终确定的物品列表以合适的方式展示给用户。
    • 方法:根据用户界面设计和用户体验原则,展示物品列表。
    • 输出:用户界面上的物品展示。

推荐系统通过这一系列步骤,旨在为用户提供个性化且高质量的内容推荐,同时满足平台和物品提供商的需求。

五、常用推荐算法

1)基于用户的协同过滤算法:(核心思想是计算用户-用户的相似度)

找到和目标用户兴趣相似的用户集合( 计算用户之间的余弦相似度:交集/并集);
找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
计算用户之间有正反馈物品的相似度(比如A喜欢了的文章和B喜欢了的文章有多少是重合的)

2)基于物品的协同过滤算法:(核心思想是基于物品-物品相似度的推荐)

计算物品之间的相似度;(通过计算喜欢物品 i 的用户中有多少也喜欢物品 j,来计算两个物品的相似度)
根据物品的相似度和用户的历史行为给用户生成推荐列表(热门物品和其他物品之间的相似度处理,需要对热门物品进行权重的特殊处理)。

3)基于内容的推荐:核心思想是打标签

需要分别生成内容画像和用户画像,再基于用户画像和内容之间的相似度来给用户推荐不同的内容。

六、如何构建一个简单的推荐系统?

第一步 数据收集

数据收集:收集用户数据是构建推荐系统的第一步。你需要收集用户的行为数据、兴趣爱好等信息,以便后续分析。

了解你的产品属性和用户需求是最重要的一步。普遍认为用户和资源量大的产品更需要个性化推荐,如淘宝、抖音、新浪新闻等这些信息分发型产品,而微信、WPS这类工具型产品却鲜少需要做推荐。我们将产品属性分为用户属性和资源属性:

  1. 用户属性
    首先我们需要了解产品的用户组成和他们需要什么,比如用户只想用你的软件编辑文档,那你为他推荐再多视频也没用。

  2. 资源属性
    资源属性是指平台的资源组成,就是你的产品服务都有什么,可以是虚拟产品(文章、短视频、课程等),也可以是实体产品(手机、音响等)。

而当这两者组合起来,当不同的用户需要不同的资源时,这时候我们就需要推荐系统了。
在这里插入图片描述
如果你能理解这部分,你也大致能明白为什么大多数工具型产品不需要推荐了。工具型产品为了确保服务深度,大多提供的功能需求都是收敛且聚焦的,多数用户用相同的服务,所以也不存在什么个性化推荐了。

你以为产品属性分析只是让你了解推荐吗?No,其实产品属性分析有着更大的价值,因为它决定了推荐策略的具体目标。比如你是视频网站,那目标也许是提升用户观看时长。那后面的整个算法策略中,都要围绕着观看时长去进行拆分和优化。如果是电商平台,那就要围绕下单量优化推荐策略了,不同的产品属性其应用的推荐策略实际上千差万别。

第二步 特征工程

特征提取:从收集的数据中提取有用的特征,这些特征将用于描述用户和物品的特征。

我们需要了解用户更具体的需求,也需要了解平台都有哪些资源。这样才有可能实现用户和资源的匹配,这个过程我们称之为打标签,实际工作中也称为“特征工程”。
标签类型多种多样,从概念上我们主要分为“用户标签”和“资源标签”两种。

  1. 用户标签
    一般用户标签包含基本属性、活跃属性和兴趣标签三种:
    在这里插入图片描述
  • 基本属性:常指“性别”、“年龄”、“常驻地”、“手机设备型号”、“职业层次”等用户自然属性,是用户未使用产品时便客观拥有的基本属性。
  • 活跃属性:指用户在使用产品时留下的行为数据,根据计算方式,又分为统计类和规则类两种。统计类是指可以直接进行统计计算的数据,如用户活跃天数、累计付费金额、活动参与数等;而规则类标签则指某些相对复杂的标签,需要先针对制定规则模型,再进行计算的数据。比如用户活跃等级(高、中、低),用户参与意愿等都需要提前明确计算规则。用户的活跃数据也常被用来评估用户粘性和周期价值。
  • 兴趣标签:属于挖掘类标签,一般依赖于资源标签。指用户在浏览具体的内容资源时,将资源本身的标签贴给用户,用户使用行为越多,兴趣标签就越多越精准。并且根据不同行为各标签的分值也不同(比如搜索作为用户主动提出需求,其所占分值会较高),抖音越看越想看就是同理。其根据应用场景又分为短期标签(在线计算,一般为2天内标签)和长期标签(离线计算,指历史累计标签)。
  1. 资源标签
    指产品内各类资源的标签,分“类别”和“关键词”两种维度。
  • 类别标签:以某种指定规则将资源归类,一般根据资源的复杂度分为2~5级不等,也有平台分级更多。下图是某瓣的类别标签。
    在这里插入图片描述
  • 关键词标签:在类别的基础上更细一层,指具体的标签词。比如用户对政治人物感兴趣时,我们发现其主要体现在“特朗普”这个人名上,那关于特朗普的一些商业信息也可以做适当推荐。

通过特征工程我们会为每个用户和资源都打上大量的标签,然后再引入推荐策略。这两类资源标签一般是通过人工标注和机器学习两种方式来添加。但机器学习需要大量的标注量才能达到一定准确度,所以在产品初期会更依赖于人工标注和词库拓展。到一定数据规模后,再训练机器学习。最后通过持续的机器学习+人工修正,整个特征工程就能达到一定的识别准确度。

第三步 推荐策略

  • 模型训练:选择适合的推荐算法,并使用提取的特征进行模型训练。常见的推荐算法包括协同过滤、基于内容的推荐等。
  • 评估与优化:对训练好的模型进行评估,分析其性能和效果。根据评估结果对模型进行优化,提高推荐的准确性和效果。

当我们将用户标签和资源标签采集到后,接下来就是推荐策略的部分,推荐策略一般分为召回和排序两大模块。

推荐系统组成

用户访问产品时,我们优先从资源库中召回符合用户标签的资源,这里通常是千/万的数据量级,然后根据这些资源的标签匹配度、时间等进行排序展示,成熟的产品还会涉及到精排和重排,根据用户对每条资源的使用行为,实时改变后续资源的排序。实际工作中会由工程师将召回和排序封装成一个推荐引擎,然后内部各项环节都有相应的算法人员跟进优化,也就是所谓的模型调参。

在这里插入图片描述

召回/排序具体策略
召回和排序是推荐算法中两个相当庞大的工程,涉及方法众多,这里仅和大家简单分享下其中主要的策略组成。

1)召回

资源库中的资源千千万,但最终给用户展示的只有几十甚至十几条,如果直接对所有物料计算排序不仅成本极高且响应较差。所以我们需要对物料进行初筛,针对性召回用户可能感兴趣的一批候选集。传统的标准召回结构一般是多路召回,主要分为“个性化召回”和“非个性化召回”两大类,个性化召回指针对用户特征进行召回,主要有“兴趣标签召回”、“协同过滤召回”等;非个性化主要指“热门召回”、“冷启动召回”这类统一特征的召回。

实际应用中会根据不同场景,选择上述一种或多种召回策略进行。比如搜索场景下的召回排序,你在淘宝搜索某件商品后,再次访问列表时便会发现该类商品排在首位。而召回的多样性是很重要的,有时候多一路召回策略产生的效果也许会是惊人的,而召回质量也很大程度上决定着推荐系统的上下限。
在这里插入图片描述
图为“协同过滤召回”的示意图:

2)排序

一般当候选集达到“千”这个数量级,我们就开始需要排序策略了,一般通过粗排和精排将候选集缩减在“百”级并进行打分,按分值top排序,再根据用户的实时反馈进行重排序,将数据量缩至“十”这个级别进行排序展示。

排序的目标是根据业务目标来不断变化的,最早期由于业务目标简单,需要聚焦的时候,往往会选取⼀个指标来重点优化排序。但随着多路召回策略的增多,到中期就会发现单⼀指标对整体的提升已经非常有限了。这时候我们就需要引入多目标排序来解决这些问题,比如结合时间、兴趣、热点、位置等众多维度的数据进行综合排序,这里应需要注意不同的用户场景其排序侧重点不同,所以需要不同的排序策略来提高精度。比如兴趣流中更注重兴趣标签,热点信息流中更重视互动数据等。
在这里插入图片描述

常用的排序算法框架有pointwise、pairwise、listwise三类,下图中x1,x2,… 代表的是训练样本1,2,… 的特征,y1,y2,s1,… 等是训练集的label(目标函数值)。感兴趣的同学可以自行深入了解下,这里不多赘述。

第四步 模型调整与优化

  • 部署与监控:将训练好的模型部署到生产环境中,并持续监控模型的性能表现,以便及时调整和优化。

多数产品首次上推荐时便需要面对较复杂的策略规则,但因缺少实际数据依托,往往是算法人员凭个人经验和竞品来作参考给出初始模型(比如某feed中初始策略设置热点权重4,时间权重2、兴趣权重2等),所以导致效果也参差不齐。一般需要灰度上线后,拿到实际的用户反馈数据(比如ctr、完播率、下单率等),才能针对模型持续进行调优和完善。

模型的数据验证主要分为两步:

  1. 离线评估:在离线准备好的新数据集和之前模型数据做对比,比如准确率、覆盖率、多样性等多方面,如该模型的综合指标优于线上模型,则可以进入线上实验,这里一般由产品经理把关。
  2. 线上实验:当评估模型效果较优后,我们需要在线上进行A/B分桶实验。一般实验周期在2周左右,对比实验组和对照组,如实验数据为正向,则推到更多用户量继续监测。如在某个阶段为反向,则返回优化模型策略,反复实验直到逐步推向全量用户。
    算法推荐不像其他功能型需求,它也没有绝对完成的那天。如头条和抖音的算法体系已如此健全,其每年还是花费大量成本来招聘算法岗。因为随着社会发展,用户习惯和兴趣爱好时刻产生着不同程度的变化。所以让推荐系统保持敏捷,长期持续的监测和策略优化才是整个推荐系统中的常态。

验证指标通常包括以下五个:

  • 准确率:表示给用户推荐的物品(信息)中,有多少是用户真正感兴趣的。
  • 召回率:表示的是用户感兴趣的物品(信息)中,有多少个是系统推荐的。
  • 覆盖率:推荐系统能够推荐出来的物品,占总物品集合的比例。
  • 多样性:表示被推荐的物品,两两之间的差异性。
  • 实时性:能够实时更新推荐列表,来满足用户行为的变化,能够将新加入系统的物品推荐给用户。

七、面临的挑战

  • 需求识别:并非所有产品都需要推荐系统,只有当用户无法浏览所有选项时,推荐才显得必要。
  • 资源投入:推荐系统是一个系统工程,需要大量资源和领导的支持。
  • 技术挑战:
    • 推荐精准度:需要高质量算法和大量用户数据。
    • 冷启动问题:新用户或新物品缺乏行为数据。
    • 高并发处理:应对大量用户访问,提供稳定快速的服务。
    • 数据缺失和非结构化信息:处理不完整或非结构化数据。
    • 垃圾数据和恶意攻击:保证数据质量。
    • 大规模计算与存储:采用分布式技术处理大数据。
    • 实时推荐:收集用户反馈,提供个性化服务。
  • 用户体验:良好的UI和交互体验对推荐系统至关重要。
  • 评估价值:衡量推荐系统对业务的贡献和价值。

八、存在的价值

推荐系统的价值主要体现在:

  1. 用户:节省时间,提升体验,发现感兴趣的内容。
  2. 平台:增加用户粘性,通过销售和广告获利。
  3. 物品提供商:提升销量,赚取收益。
  4. 社会资源:减少库存积压,有效利用资源。

九、学习课程

  • 推荐系统公开课:https://space.bilibili.com/1369507485/channel/collectiondetail?sid=615109
  • 推荐系统学习笔记:《小红书的推荐系统》
  • 从0到1详解推荐系统的基础知识与整体框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

​与辉同行2日破亿,打工就是在浪费生命,真让罗永浩说对了!​

去年东方甄选的小作文事件发生之后 罗永浩就鼓励董宇辉出来单干还发表了惊天言论,“打工就是在浪费生命” 董宇辉接手“与辉同行”公司后,两天直播总销售额就已经超过了1亿元 难道真让罗永浩说对了,打工就是在浪费生命吗? 打工…

20240819解决飞凌的OK3588-C的核心板的适配以太网卡RTL8211F-CG在百兆模式下通过交换机上外网

20240819解决飞凌的OK3588-C的核心板的适配以太网卡RTL8211F-CG在百兆模式下通过交换机上外网 2024/8/19 18:00 缘由:由于自制的飞凌的OK3588-C的核心板的底板对空间要求高/敏感,并且对网速要求不高,百兆即可满足要求。 也就直接使用千兆网卡…

质量体系 | 这些医疗器械质量管理标准/法规有什么区别?

在医疗器械行业中,确保产品质量和安全至关重要,而ISO 9001、ISO 13485、GMP、中国《医疗器械生产质量管理规范》和QS820等标准/法规为行业提供了明确的指导。 ISO9001 ISO9001:2015 Quality management systems-Requirements(质量管理体系要…

通过ros2服务来控制程序的启动和关闭

运行handle.py程序,启动服务节点,调用服务节点控制程序的启动和关闭,本例为启动和关闭一个python程序(每隔一秒打印hello,world),运行截图如下: 一、创建服务节点 handle.py import rclpy from rclpy.no…

无人机之航拍挑选注意事项

航拍无人机的挑选,主要从安全稳定、航拍画质、云台防抖、图传距离、续航时间等因素来考虑。 一、安全稳定 安全稳定性,是我们选择航拍无人机的首要参考标准。毕竟再好的镜头、再好的外形设计、再好的航拍功能,如果没有安全稳定的飞行&#x…

【若依 - 前后端不分离版】SysCaptchaController 详解:生成与处理验证码

文章目录 一、SysCaptchaController 类概述1. 类的功能2. 主要功能 二、验证码生成流程1. 接口定义2. 代码流程解析2.1. 设置响应头2.2. 生成验证码2.3. 存储验证码2.4. 返回验证码图片 三、处理异常和流关闭1. 异常处理2. 流关闭 四、实际应用中的验证码处理1. 验证码生成和展…

【数模修炼之旅】05 拟合模型 深度解析(教程+代码)

【数模修炼之旅】05 拟合模型 深度解析(教程代码) 接下来 C君将会用至少30个小节来为大家深度解析数模领域常用的算法,大家可以关注这个专栏,持续学习哦,对于大家的能力提高会有极大的帮助。 1 拟合模型介绍及应用 …

无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案

无缝融入,即刻智能[三]:Dify-LLM平台知识库构建(多路召回、精排重排),43K+星标见证专属智能方案 大语言模型的训练数据一般基于公开的数据,且每一次训练需要消耗大量算力,这意味着模型的知识一般不会包含私有领域的知识,同时在公开知识领域存在一定的滞后性。为了解决这一…

SSM学生社团管理系统—计算机毕业设计源码20360

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生社团管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系…

python3爬虫(未完结)

一个简单的例子:爬取自己的csdn博客,统计每篇博客的访问量,制作一个柱状图,以访问量从大到小的方式显示。 1. 首先从“个人主页”爬取所有所有文章的链接 1.1 打开个人主页,右键->检查:可以看到每篇文章…

如何使用Java SpringBoot+Vue搭建二手闲置交易系统?

✍✍计算机毕业编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、…

四步解决国标设备接入问题

用国标协议完成多品牌设备统一接入,是智能设备在多场景应用中都会碰到的安装步骤。国标接入常常过程复杂,这边介绍一种相对简便的方法,用萤石开放平台的“国标设备添加工具”接入 Step1:私信我获取安装包 私信我获取国标设备添加…

Nginx服务器申请及配置免费SSL证书

免费SSL证书申请 背景: 我的情况是这样,域名解析是华为云的,然后免费证书在腾讯云申请。但是大致的配置流程都是一样的 在腾讯云平台申请免费的SSL证明(目前有效期是9天),申请步骤如下 主要步骤说明 申请免费SSL证书配置证书到域…

自定义变量添加到分机呼叫信息(mod_cti基于FreeSWITCH)

文章目录 前言联系我们添加流程1. 修改cti.json配置2. 配置自动外呼进入排队转坐席3. 变量同步到坐席通道 4. 导入号码添加自定义变量 前言 在默认配置中,分机的呼叫信息会被推送到redis的hash表中,hash表名:calls。我们可以通过修改配置&am…

【大模型LLMs】RAG实战:基于LlamaIndex快速构建RAG链路(Qwen2-7B-Instruct+BGE Embedding)

【大模型LLMs】RAG实战:基于LlamaIndex快速构建RAG链路(Qwen2-7B-InstructBGE Embedding) 1. 环境准备2. 数据准备3. RAG框架构建3.1 数据读取 数据切块3.2 构建向量索引3.3 检索增强3.4 main函数 参考 基于LlamaIndex框架,以Qwe…

【GitLab】使用 Docker 安装 GitLab 1:配置 SSH 端口

使用 Docker 安装 GitLab 要求修改ssh端口 GitLab 使用 SSH 通过 SSH 与 Git 交互。默认情况下,GitLab 使用端口22。 要在使用 GitLab Docker 映像时使用其他端口,您可以执行以下操作之一: 更改服务器的 SSH 端口(推荐)。 更改 GitLab Shell SSH 端口。 更改服务器的 SSH …

电测量数据交换DLMS∕COSEM组件第62部分:COSEM接口类(4)

1.7COSEM服务器模型 COSEM服务器被构建为3层体系结构如图3所示。 图4示例说明如何用COSEM服务器模型构建一台组合式计量设备。 1.8COSEM逻辑设备 1.8.1概述 COSEM逻辑设备包含一组COSEM对象,每个物理设备均应包含一个“Management logical device”。对COSEM逻辑设备…

MPLS相关实验

一、实验拓扑图以及实验要求 1、实验拓扑图 2、实验要求 合理利用IP地址进行分配R3、R4、R5、R6运行ospf在R2、R3、R4、R5、R6上运行MPLSR1上使用静态,R7上运行rip协议,R8上运行ospf协议全网可达 二、实验分析 合理利用IP地址进行分配R3、R4、R5、R6…

将自己的网站改造成可安装的PWA

概述 本文是一篇水文,感兴趣的读者可以看看。分享一下怎么讲自己的网站改造成可安装的PWA。 PWA简介 渐进式 Web 应用(Progressive Web App,PWA)是一个使用 web 平台技术构建的应用程序,但它提供的用户体验就像一个…

死锁问题分析和解决——资源回收时

1.描述问题 在完成线程池核心功能功能时,没有遇到太大的问题(Any,Result,Semfore的设计),在做线程池资源回收时,遇到了死锁的问题 1、在ThreadPool的资源回收,等待线程池所有线程退出时&#xff…