当前位置: 首页 > news >正文

一文读懂推荐系统

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

一、什么是推荐系统?

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

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

二、推荐系统的应用场景

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

三、推荐系统的框架

在这里插入图片描述

框架模块

  • 协议调度:请求的发送和结果的回传。在请求中,用户会发送自己的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详解推荐系统的基础知识与整体框架

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3使用elementui-plus时使用深度选择器穿透影响原样式
  • keepalived详解
  • Spring Mybatis拦截器配合logback打印完整sql语句
  • 嵌入式AI快速入门课程-K510篇 (第七篇 系统BSP开发)
  • GO语言如何抗住火影忍者手游的高并发
  • 入门网络安全工程师要学习哪些内容
  • 国自然放榜在即!用这种方法或可抢先查询...
  • 全新分支版本!微软推出Windows 11 Canary Build 27686版
  • ThreeJs学习笔记--坐标系,光源,相机控件
  • C/C++实现蓝屏2.0
  • Linux进程间通信——软件实现临界区互斥的基本方法
  • 高性能web服务器3——Nginx编译安装
  • Spring MVC Controller返回json日期格式配置失效的解决办法
  • CUDA编程07 - 卷积的优化
  • TikTok达人营销与品牌建设:长期视角下的策略布局
  • [笔记] php常见简单功能及函数
  • [数据结构]链表的实现在PHP中
  • 08.Android之View事件问题
  • Java,console输出实时的转向GUI textbox
  • Meteor的表单提交:Form
  • PHP的类修饰符与访问修饰符
  • Python实现BT种子转化为磁力链接【实战】
  • windows-nginx-https-本地配置
  • XML已死 ?
  • 盘点那些不知名却常用的 Git 操作
  • 前端工程化(Gulp、Webpack)-webpack
  • 找一份好的前端工作,起点很重要
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • # Apache SeaTunnel 究竟是什么?
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #include到底该写在哪
  • #pragma data_seg 共享数据区(转)
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (007)XHTML文档之标题——h1~h6
  • (1)Nginx简介和安装教程
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转) ns2/nam与nam实现相关的文件
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core跨平台微服务学习资源
  • .Net Redis的秒杀Dome和异步执行
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...