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

news2024/11/15 11:00:58

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

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

个性化推荐系统之所以能迅速占领各大 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 讲我们将深入了解推荐算法中经典的算法——协同过滤算法。

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

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

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

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

相关文章

从业务架构到应用架构技术剖析

从业务架构到应用架构 4A架构理论&#xff0c;一个企业级架构框架&#xff0c;将企业架构&#xff08;EA&#xff09;划分为四大核心领域&#xff0c;每个领域都聚焦于组织的不同维度。该理论提供了一种结构化的设计和理解企业运作方式的方法&#xff0c;确保技术解决方案能…

前端面试题53(在vue中history与hash区别)

在Vue.js应用中&#xff0c;路由&#xff08;routing&#xff09;是管理应用程序中不同页面&#xff08;视图&#xff09;的重要部分。Vue Router提供了两种路由模式来管理URL&#xff1a;hash模式和history模式。下面详细介绍这两种模式的区别&#xff1a; 1. Hash 模式 原理…

如何在idea安装git,使用gitee?

一、什么是git&#xff0c;git与gitee、GitHub的关系&#xff1f; 1.什么是git&#xff1f; Git 是一个开源的分布式版本控制系统&#xff0c;用于企业项目中程序员协同开发。 2.git与gitee、GitHub的关系是什么&#xff1f; git &#xff1a;Git是一种版本控制系统&#x…

Linux:NFS共享存储

目录 一、NFS基本概述 二、NFS共享文件实验 2.1、安装nfs和rpcbind软件 2.2、修改配置文件设置共享 2.3、创建共享目录 ​编辑 2.4、开启服务 2.5、客户端验证共享目录可访问 三、tcpdump命令 3.1、概述 3.2、简单表达 3.3、过滤规则 ​编辑 3.4、tcpdump常见参数…

Redis分布式锁在高并发环境下的超卖问题

先看这样一段代码&#xff0c;购买商品&#xff0c;扣减库存的逻辑代码 当用户下单&#xff0c;并且调用扣减库存的接口时&#xff0c;先判断商品库存是否还有&#xff0c;因为是秒杀场景下&#xff0c;太多请求都打到数据库&#xff0c;可能会导致数据库崩溃&#xff0c;所以…

[leetcode] largest-divisible-subset 最大整除子集

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> largestDivisibleSubset(vector<int>& nums) {int len nums.size();sort(nums.begin(), nums.end());// 第 1 步&#xff1a;动态规划找出最大子集的个数、最大子集中的最大整…

Djngo项目创建的准备工作【5】

【 一 】搭建纯净模式 核心就是 在安装完drf之后记得在app里面注册rest_framework, # django 默认很多app--》很多表auth 6个表session 表content-type表 # django很多中间件 ​ # 以后我们的项目&#xff0c;可能不用这些东西---》由于带了内置app&#xff0c;这些表就会创建…

MaxViT : 多轴Vision Transformer

本文提出了一种高效、可扩展的多轴注意力模型,该模型包括两个方面:局部注意力被阻塞和全局注意力被扩张。这些设计选择允许在任意输入分辨率下的全局-局部空间交互,只有线性复杂度。还通过有效地将注意力模型与卷积混合在一起,提出了一个新的架构元素,并相应地提出了一个简…

IAR全面支持芯驰科技E3系列车规MCU产品E3119/E3118

中国上海&#xff0c;2024年7月11日 — 全球领先的嵌入式系统开发软件解决方案供应商IAR与全场景智能车芯引领者芯驰科技宣布进一步扩大合作&#xff0c;最新版IAR Embedded Workbench for Arm已全面支持芯驰科技的E3119/E3118车规级MCU产品。IAR与芯驰科技有着悠久的合作历史&…

强化学习实战3:Sarsa 与 Q-Learning 算法求解迷宫问题

前置知识 首先实验环境依然是我们之前说的迷宫环境&#xff0c;然后是一些基本术语&#xff0c;应该都是比较熟悉的&#xff1a; 强化学习的算法大概有两类&#xff0c;一类是策略迭代&#xff08;讲究的是策略 Π &#xff09;&#xff0c;还有一类是价值迭代&#xff0c;也就…

电脑 DNS 缓存是什么?如何清除?

DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的重要组成部分&#xff0c;负责将人类易记的域名转换为机器可读的 IP 地址&#xff0c;从而实现网络通信。DNS 缓存是 DNS 系统中的一个关键机制&#xff0c;通过临时存储已解析的域名信息&#xf…

lnmp+DISCUZ+WORDPRESS

lnmpDISCUZWORDPRESS lnmpDISCUZ&#xff08;论坛的一个服务&#xff09; l&#xff1a;linux操作系统 n&#xff1a;nginx前端页面的web服务 php&#xff1a;动态请求转发的中间件 mysql&#xff1a;数据库 保存用户和密码以及论坛的相关内容 mysql8.0.30安装&#xff1a…

微信综合购物商城小程序ui模板源码

微信电商小程序前端页面&#xff0c;综合购物商城ui界面模板。主要功能包含&#xff1a;电商主页、商品分类、购物车、购物车结算、我的个人中心管理、礼券、签到、新人专享、专栏、商品详情页、我的订单、我的余额、我的积分、我的收藏、我的地址、我的礼券等。这是一款非常齐…

单相整流-TI视频课笔记

目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…

【Linux杂货铺】2.进程优先级

1.进程优先级基本概念 进程优先级是操作系统中用于确定进程调度顺序的一个指标。每个进程都会被分配一个优先级&#xff0c;优先级较高的进程会在调度时优先被执行。进程优先级的设定通常根据进程的重要性、紧急程度、资源需求等因素来确定。操作系统会根据进程的优先级来决定进…

出现 failed to remove xxxx: Invalid argument 解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法 前言 这好像是一个Git的一个Bug&#xff0c;对应有个下下策的解决方式 1. 问题所示 Git提交的时候出现如下问题 Git warning:failed to remove debug.log:invalid argumentgit clean -f -1 --F&#xff1a;\xxx failed to rem…

准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

Python(四)---序列

文章目录 前言1.列表1.1.列表简介1.2.列表的创建1.2.1.基本方式[]1.2.2.list()方法1.2.3.range()创建整数列表1.2.4.推导式生成列表 1.3. 列表各种函数的使用1.3.1.增加元素1.3.2.删除元素1.3.3.元素的访问和计数1.3.4.切片1.3.5.列表的排序 1.4.二维列表 2.元组2.1.元组的简介…

mybatis基础语法

Mybatis快速入门 1.需求 使用MyBatis查询所有的用户, 封装到List集合 2.分析 创建maven工程&#xff08;jar&#xff09;&#xff0c;添加坐标创建pojo创建UserDao接口创建UserDao映射文件创建Mybatis核心配置文件SqlMapConfig.xml编写java代码测试 3.实现 准备工作&…

《梦醒蝶飞:释放Excel函数与公式的力量》11.3 ISTEXT函数

第11章&#xff1a;信息函数 第三节 11.3 ISTEXT函数 11.3.1 简介 ISTEXT函数是Excel中的一个信息函数&#xff0c;用于检查指定单元格中的内容是否为文本。如果单元格内容是文本&#xff0c;则返回TRUE&#xff1b;否则返回FALSE。ISTEXT函数在数据验证、条件格式化和逻辑判…