05 以物品与用户为基础个性化推荐算法的四大策略

《易经》:“九二:见龙在田,利见大人”。九二是指阳爻在卦中处于第二位,见龙指龙出现在地面上,开始崭露头角,但是仍须努力,应处于安于偏下的位置。

本节是模块二第一节,模块二讲解传统机器学习推荐算法,这部分是作为一名推荐算法工程师的基础,我们将一起学习和掌握传统经典推荐算法和传统推荐算法发展脉络。

个性化推荐系统之所以能迅速占领各大 APP 的首要版块,取代很多人工运营的坑位,核心原因在于它可以在短时间内通过很短的路径让用户找到自己想要的商品,拉近了用户与商品之间的距离,即优化了流量分发效率,而这些都与个性化推荐系统中的推荐算法息息相关。因此,接下来的模块我们将紧紧围绕推荐系统中最核心、最关键的内容——推荐算法进行介绍。

这一讲我们将重点聊聊推荐算法的简单推荐策略,先从推荐系统算法的架构开始讲解,再详细说明此架构下极具代表性的推荐策略。

推荐算法架构

推荐系统的算法架构,通常分为离线架构和在线架构这两种。

1.离线架构

离线架构主要用来构建物品画像和用户画像,因为数据是算法的基础,底层数据的丰富程度决定了推荐能力的天花板。

比如系统通常不了解未登录用户的行踪,通过合适的引导,可以让访问推荐系统的用户未登录占比更低,从而大幅提升推荐系统的掌控力。再比如参考更丰富的用户行为(曝光、点击、点赞、停留时长、下载时长等等)和更多的用户特征(用户年龄、性别、地域、商品店铺、价格、类目等),也能大幅增强推荐系统的掌控力,而且这些参考因素越多越好。

从本质上来讲,算法系统是用来预测未来,但是如果过去什么都没有发生,预测出来的结果也就可想而知了。

关于物品体系及用户体系的构建过程,之前我们已经详细介绍过了,这一讲我们就不提了,你可以前往回顾 02 讲和 03 讲的内容。

2.在线架构

在线架构主要用来从海量物品池中选择合适的推荐的对象匹配给对应用户。在这个架构中,我们主要依靠检索技术(如协同过滤、内容过滤、用户偏好等)建立索引,然后根据索引生成第一步的结果。其中涉及的工程技术主要是用来提升系统整体的响应速度、吞吐效率等,使得整个推荐系统能一次性查得更多、更快。

下面我们以 58 同城本地服务推荐流程和算法架构为例,一起来看看推荐算法的具体架构,如下图所示。

从图中可知,在线架构主要分为召回层、粗排层、精排层、融合和重排层这四大部分。

  • 召回层:从物品库中根据多个维度筛选出潜在物品候选集,并将候选集传递给排序环节。在召回供给池中,我们可以看到多个召回集,整个召回环节的输出量往往以万为单位。

  • 粗排层:利用规则或者简单模型对召回的物品进行排序,并根据配额进行截断,截取出 Top N 条数据输出给精排层,配额一般分业务场景,例如对 58 同城本地服务推荐分品类进行配额,整个粗排环节的输出量往往以千为单位。

  • 精排层:利用大量特征的复杂模型,对物品进行更精准的排序,然后输出给重排层(融合层),整个精排环节的输出量往往以百为单位。

  • 融合和重排层:以产品策略为导向进行融合和重排,例如 58 同城本地服务推荐将商品、SKU、帖子、标签等不同展示元素融合在一个列表中,并且经过去除已曝光、去重、打散等策略,并根据点击回退在列表中插入新的信息来提升体验,最后生成用户可见的推荐列表,整个融合和重排环节的输出量往往以几十为单位。

以上我们阐述了数据生成部分的推荐算法架构,接下来我们着重讨论推荐算法在以上各个环节中的应用。

简单推荐策略

在复杂的推荐系统中,推荐算法作为其最核心、最关键的部分,很大程度上决定了推荐系统性能的好坏,且重点体现在数据决策层。

所谓推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西。而个性化推荐算法实在是太多了,道德经中说”天下难事必作于易,天下大事必作于细”,所以这一讲我们先从简单推荐策略聊起。

在个性化推荐系统中,简单推荐策略主要分为:基于热门推荐推荐、基于基本信息推荐、基于内容推荐、基于关联规则推荐这几种,下面我们分别来看下。

1.基于热门推荐

热门推荐,顾名思义就是使用统计的方法将最热门的物品进行推荐,越热门的物品被点击的可能性越大。这个比较容易理解,因此我们就不过多赘述了。

2.基于基本信息推荐

基于基本信息推荐是根据用户的基本信息如:领域、职位、工作年龄、性别和所在地等给用户推荐感兴趣或者相关的内容,比如年龄-关联电影表、收入-关联商品类型表,性别-文章关联表等等。

因为基于热门推荐与基于基本信息推荐使用比较简单,所以这两个推荐策略应用比较广泛。

3.基于内容推荐

基于内容推荐是指(Content Based Recommandation)利用用户和物品的相关信息,例如前述用户和物品画像信息及用户对物品的行为构建的模型,例如浏览、点击、打电话、收藏、评论、下单等。内容推荐算法根据用户行为推断用户偏好,并为用户推荐相同偏好的物品。

基于内容推荐的计算过程一般分为四个步骤:

  • 找到用户历史感兴趣的物品集合;

  • 找到物品集合的具化属性;

  • 抽象具化属性的共性属性;

  • 由这些共性属性查找其他物品,并实施推荐。

下面我们以 58 本地服务推荐中的保姆 SKU 服务推荐详细描述这一过程。

假设用户访问过 3 个帖子的保姆 SKU 分别是保姆 A、保姆 B、保姆 C,我们可以直接从用户历史日志中得到访问集合(如地点、月薪、从业经验、学历等信息)。

再通过访问集合,我们可以得到保姆的相关具化信息,如下表所示:

由职位具化内容抽象出职位共性信息:例如,在上述表格中,我们可以抽象出保姆 A、保姆 B、保姆 C 共性职位信息为:保姆 SKU、地点为北京、月薪>5000。

通过共性信息检索其他职位并实现推荐:比如我们在 SKU 库中以“保姆 SKU 、地点为北京、月薪>5000”为检索条件,并按照一定规则进行排序(例如发布时间等)和截断,以此完成推荐。如果召回结果集过小,我们可以通过放宽条件召回,例如放宽检索条件为“保姆 SKU、地点为北京、月薪>2000”。

请注意:基于内容推荐的特征是推荐结果只与用户当前的行为有关,与用户的其他行为无关。

4.基于关联规则推荐

基于关联规则推荐(Association Rules)是通过数据挖掘的方法找到物品之间的相关关系,再进行标签推荐,比如大家所熟知的“啤酒”和“尿布”,就是某超市工作人员通过对顾客的购物清单进行分析后,才发现了啤酒和尿布之间的共现关系。

而衡量物品之间的关联性时,我们主要看支持度、置信度和提升度这三大指标。下面我们以 58 同城本地服务中的标签筛选为例,一起看下如何使用基于关联规则推荐策略推荐标签。

首先,我们在本地服务“保姆月嫂”品类下搜索“健康证”,这时推荐系统会提供精准的筛选结果,如下图所示。

当用户点击了其中一个标签“保姆”,就会生成新的“健康证”“保姆”的搜索结果,从而进一步对用户需求进行细化。

在APP 本地服务“保姆月嫂”品类下,我们通过分析常用用户搜索词,发现分词后的元素有“保姆”、“月嫂”、“育儿嫂”、“健康证”等,这些分词结果就是我们输入一个搜索词后需要推荐出来的标签的原料。

为了说明方便,我们只取 5 次搜索的搜索词(实际应用中以万为量级)为例,并把搜索词和分词结果单独列出来,如下表所示:

1)计算支持度

支持度表示 AB 共现情况占所有情况的比例,则有表达式 Support(A->B)=P(A&B),它往往用来评估搜索词当中该词出现的概率。

我们先来看一下单独词的支持度,比如“保姆”在 5 次搜索中出现 3 次,则单独“保姆”的支持度是 Support(保姆)=3/5,如下表所示。

下面再来看一下组合词的支持度,例如“保姆”和“月嫂”在 5 次搜索中共现 2 次,则组合词“保姆”->“月嫂”的支持度为 Support(保姆->月嫂)=2/5,如下表所示。

因此,在推荐系统中,我们会优先推荐支持度高的词,因为如果推荐支持度低的词,会使得转化率指标提升效果有限。

2)计算置信度

置信度表示 AB 共现情况占 A 情况的比例,其表达式为 Confidence(A->B)=P(A&B)/P(A)。通俗点说就是在搜索了“保姆”的情况下,有多大概率会继续点击“月嫂”,即“保姆”->“月嫂”的置信度是多少。

比如在下表中,我们可以看到“保姆”总共搜索了 3 次, “月嫂”出现了 2 次,则保姆”->“月嫂”的置信度为 Confidence(保姆->月嫂)=2/3。

需要注意的是,Confidence(A->B) 与 Confidence(B->A) 不一定相等,例如 Confidence(月嫂->健康证)=1,意味着只要搜索“月嫂”就会继续搜索“健康证”,因为“健康证”100% 出现(如下表所示);而 Confidence(健康证->月嫂)=3/5,意味着在搜索“健康证”的情况下只有 3/5 会继续搜索“月嫂”。

3)计算提升度

提升度表示以 A 为前提下 B 出现的情况与 B 情况的比例,表达式为 Lift(A->B)=P(B|A)/P(B) ,它往往用来评估推荐效果。

在计算 Lift(A->B) 时,主要出现以下三种情况:

  • Lift(A->B)>1 时,说明搜索 A 时推荐 B 比直接推荐 B 的效果更好;

  • Lift(A->B)=1 时,说明搜索 A 和搜素 B 属于独立事件,二者没什么关系;

  • Lift(A->B)<1 时,说明搜索 A 和搜索 B 负相关,搜索 A 还不如不去推荐 B。

这里我们也通过一个例子来说明下,比如在搜索“保姆”时推荐了“月嫂”,“保姆”总共搜索了 3 次,而“月嫂”出现了 2 次,则保姆”->“月嫂”的置信度为 Confidence(保姆->月嫂)=2/3;如果直接推荐“月嫂”,5 次搜索中出现了 3 次“月嫂”,则“月嫂”的支持度为 Support(月嫂)=3/5,即用户有 3/5 的概率点击“月嫂”,此时说明,使用关联规则算法后推荐效果变好了。

如果我们在搜索“月嫂”时推荐了“育儿嫂”,比如 含有“保姆”的总共搜索了 3 次,而这 3 次中只有 1 次含有“育儿嫂”,那么置信度 Confidence(保姆->育儿嫂)=1/3;如果直接推荐“育儿嫂”,5 次搜索中有 2 次出现“育儿嫂”,则“育儿嫂”的支持度为 Support(育儿嫂)=2/5,即用户有 2/5 的概率点击“育儿嫂”,此时说明,使用了关联规则推荐算法后,推荐效果反而更差了。

综上所述,我们可知使用 A->B 的关联规则推荐是为了取得更好的提升度,使得搜素 A 时推荐 B 比直接推荐 B 的效果要更好。

小结与预告

学到这里,首先恭喜你已经初步了解了推荐系统架构和简单推荐策略。这一讲讲解的简单推荐策略看起来比较简单,但是非常靠谱、实用,根据二八原则,使用简单推荐策略可以助力我们以 20% 的精力拿到 80% 的分数,并以此为基线向更高的分数冲击。06 讲我们将深入了解推荐算法中经典的算法——协同过滤算法。

道德经中说“图难于其易,为大于其细“,对于简单推荐策略,你是否有不同的见解?欢迎在留言区与我互动哦。

另外,如果你觉得此专栏有价值,欢迎分享给更多好友哦~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

开源浏览器引擎对比与适用场景:WebKit、Chrome、Gecko

WebKit与Chrome的Blink引擎对比 起源与关系&#xff1a; WebKit最初由苹果公司开发&#xff0c;用于Safari浏览器。后来&#xff0c;WebKit逐渐成为一个独立的开源项目&#xff0c;被多个浏览器厂商采用。Blink是Google基于WebKit项目分支出来的一个浏览器引擎&#xff0c;用于…

自主升级,平稳过渡!麒麟信安保障长沙市智慧交通发展中心CentOS迁移无忧

长沙市智慧交通发展中心围绕综合交通运输协调体系的构建&#xff0c;实施交通运行的监测、预测和预警&#xff0c;面向公众提供交通信息服务&#xff0c;开展多种运输方式的调度协调&#xff0c;提供交通行政管理和应急处置的信息保障。 该中心目前数据日交换量超2亿条&#x…

替换:show-overflow-tooltip=“true“ ,使用插槽tooltip,达到内容可复制

原生的show-overflow-tooltip“true” 不能满足条件&#xff0c;使用插槽自定义编辑&#xff1b; 旧code <el-table-column prop"reason" label"原因" align"center" :show-overflow-tooltip"true" /> <el-table-column pro…

Adminer-CVE-2021-21311

在其4.0.0到4.7.9版本之间&#xff0c;连接 ElasticSearch 和 ClickHouse 数据库时存在一处服务端请求伪造漏洞&#xff08;SSRF&#xff09;。 VPS开启HTTP服务 VPS 开启HTTP 再同时跑POC 确保能访问poc里的链接文件 第一是目标地址 第二个是跳转地址 第三个是监听地址 如果…

【C++】 List 基本使用

C List 基本使用 基本概念 list 是一个序列容器&#xff0c;它内部维护了一个双向链表结构。与 vector 或 deque 等基于数组的容器不同&#xff0c;list 在插入和删除元素时不需要移动大量数据&#xff0c;因此在这些操作上具有较高的效率。然而&#xff0c;访问列表中的特定…

无人机航电系统技术详解

一、系统概述 无人机航电系统&#xff08;Avionics System&#xff09;是无人机飞行与任务执行的核心部分&#xff0c;它集成了飞控系统、传感器、导航设备、通信设备等&#xff0c;为无人机提供了必要的飞行控制和任务执行能力。航电系统的设计和性能直接影响到无人机的安全性…

AIGC产品经理学习路径

基础篇&#xff08;课时 2 &#xff09; AIGC 行业视角 AIGC 的行业发展演进&#xff1a;传统模型/深度学习/大模型 AIGC 的产品设计演进&#xff1a;AI Embedded / AI Copilot / AI Agen AIGC 的行业产业全景图 AIGC 的产品应用全景图 AIGC 职业视角 AI 产品经理/ AIGC…

Linux:信号的概念与产生

信号概念 信号是进程之间事件异步通知的一种方式 在Linux命令行中&#xff0c;我们可以通过ctrl c来终止一个前台运行的进程&#xff0c;其实这就是一个发送信号的行为。我们按下ctrl c是在shell进程中&#xff0c;而被终止的进程&#xff0c;是在前台运行的另外一个进程。因…

Android Viewpager2 remove fragmen不生效解决方案

一、介绍 在如今的开发过程只&#xff0c;内容变化已多单一的fragment&#xff0c;变成连续的&#xff0c;特别是以短视频或者直播为主的场景很多。从早起的Viewpage只能横向滑动&#xff0c;到如今的viewpage2可以支持横向或者竖向滑动。由于viewpage2的adapter在设计时支持缓…

预告 | 博睿数据将亮相第四届中国新能源汽车产业数智峰会

随着数字化、智能化浪潮的汹涌而至&#xff0c;全球汽车产业正站在一个崭新的历史起点上。新能源汽车&#xff0c;作为这场科技革命和产业变革的领跑者&#xff0c;其数智化发展正呈现出前所未有的蓬勃态势。正是在这样的背景下&#xff0c;第四届中国新能源汽车产业数智峰会将…

Windows 虚拟机服务器项目部署

目录 一、部署JDK下载JDK安装JDK1.双击 jdk.exe 安装程序2.点击【下一步】3.默认安装位置&#xff0c;点击【下一步】4.等待提取安装程序5.默认安装位置&#xff0c;点击【下一步】6.等待安装7.安装成功&#xff0c;点击【关闭】 二、部署TomcatTomcat主要特点包括&#xff1a;…

【线程安全】关于死锁问题

文章目录 死锁的基本概念死锁的四个必要条件避免死锁避免死锁的算法死锁检测算法 死锁的基本概念 死锁是指在一组进程中的各个进程均占有不会释放的资源&#xff0c;但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。当然&#xff0c;线程之间同样也有死…

【产品经理】WMS多仓调拨转移说明

对于仓储管理来说&#xff0c;越来越多企业开始应用WMS进行系统化的管理&#xff0c;以提升仓库的作业效率。本文作者从业务流程和基础功能两个方面展开介绍&#xff0c;希望对你有帮助。 一、业务流程 。在线下业务流程拓展&#xff0c;仓库不断增多的过程中&#xff0c;由于…

docker私有仓库harbor安装

Harbor默认安装 下载harbor https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz 目前要求docker版本&#xff0c;docker 20.10.10-ce &#xff0c;和docker-compose 1.18.0 查看 docker-compose版本 docker-compose --ver…

【Python】Python模块及常用模块介绍

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言Python 模块(Module)模块的作用模块的创建模块的引入import 语句from…import 语句from…import* 语句 搜索路径常用模块[Python 标准库](https://docs.python.org/zh-cn/3/li…

Android中RecyclerView使用详解(一)

目录 概述优点列表布局RecyclerView一、创建RecyclerView并且在布局中绑定二、实现RecyclerView单个item的布局三、给RecyclerView写一个对应的适配器Adapter1.创建自定义的ViewHolder2.继承Adapter&#xff0c;泛型使用我们自定义的ViewHolder3.重写Adapter的三个方法onCreate…

STM32基础篇:EXTI × 事件 × EXTI标准库

EXTI EXTI简介 EXTI&#xff1a;译作外部中断/事件控制器&#xff0c;STM32的众多片上外设之一&#xff0c;能够检测外部输入信号的边沿变化并由此产生中断。 例如&#xff0c;在检测按键时&#xff0c;按键按下时会使电平产生翻转&#xff0c;因此可以使用EXTI来读取按下时…

Kotlin Misk Web框架

Kotlin Misk Web框架 1 Misk 框架介绍2 Misk/SpringBoot 框架对比3 Misk 添加依赖/配置3.1 build.gradle.kts3.2 settings.gradle.kts3.3 gradle.properties 4 Misk 请求接口5 Misk 程序模块6 Misk 主服务类7 Misk 测试结果 1 Misk 框架介绍 Misk 是由 Square 公司开发的一个开…

Python:while循环

while循环体 while 条件: 符合条件执行语句 .... 执行完后需执行的语句 # while循环 i1 while i<5:print(i)ii1 print("Done") test. 做一颗圣诞树吧 答案&#xff1a; # while循环 i 1 j5 while i < 5:print( * j* * i)i i 2jj-1 print("Done"…