推荐召回-Swing

news2024/11/26 2:52:25

概述

swing 是阿里原创的 i2i 召回算法,在阿里内部的多个业务场景被验证是一种非常有效的召回方法。据笔者了解,swing 在工业界已得到比较广泛的使用,抖音,小红书,B 站等推荐系统均使用了swing i2i。

1.传统 icf 算法

在介绍 swing 之前,我们先简单回顾下传统的 item-cf 是如何计算物品之间的相似度。最经典的 item-cf 算法基于 cosine 来计算相似度,下面是传统 item-cf 对于 item i i i j j j 的相似度定义。

s ( i , j ) = ∣ U i ⋂ U j ∣ ∣ U i ∣ ⋅ ∣ U j ∣ s(i,j) = \frac{|U_i \bigcap U_j|}{\sqrt{|U_i|} \cdot \sqrt{|U_j|}} s(i,j)=Ui Uj UiUj

传统 icf 相似度定义公式 U i U_i Ui 表示喜欢物品i的用户集合, U j U_j Uj 表示喜欢物品j的用户集合。分子是 U i U_i Ui U j U_j Uj 的交集大小,也就是喜欢 i i i 又喜欢 j j j 的用户数量。分母是 U i U_i Ui U j U_j Uj 模的平方根,可以避免热门 item 与多数 item 都有很高的相似度。(注:由于热门 item 通常质量表现较好,在工业界实际使用时分母可能不会使用,特别是基于增量方式实现的 icf)传统 item-cf 背后的直觉是,如果大量用户同时喜欢两个物品,那么这两个物品之间应该有比较高的关联(相似度)。

2.Swing召回算法

下图红边为一个 swing 结构,共同评分过两个物品的用户集合中,每两个用户和这个两个物品形成了一个四边形,统计有多少个这样的结构,每一个结构的权重是不同的,这个结构里两个用户共同评分过的物品的数量越多权重就越小。
在这里插入图片描述
为了衡量物品 i i i j j j 的相似性,考察都购买了物品 i i i j j j 的用户 u u u v v v , 如果这两个用户共同购买的物品越少,则物品 i i i j j j 的相似性越高。极端情况下,两个用户都购买了某个物品,且两个用户所有购买的物品中,共同购买的物品只有这两个,说明这两个用户兴趣差异非常大,然而却同时购买了这两个物品,则说明这两个物品相似性非常大!相似度计算公式为:
在这里插入图片描述
在这里插入图片描述

3.其他角度理解

  • 基于图结构的实时推荐算法 Swing,能够计算 item-item 之间的相似性。这种方法的一个直觉来源于,如果多个 user 在点击了 i i i 的同时,都只共同点了某一个其他的 j j j ,那么 i i i j j j 一定是强关联的,这种未知的强关联关系相当于是通过用户来传递的。
  • 比较传统icf和swing的相似度定义公式,可以看到,两者的共同点是都通过同时喜欢物品i和j的用户规模来表达相似度,共同喜欢两个物品的用户量越大,物品间的相似度越高。区别是,swing还考虑了用户之间的重合度,不仅希望用户交集的规模大,且要多样性好。
  • 传统icf:如果同时喜欢两个物品的用户越多,那么这两个物品间的相似度越高。swing:如果同时喜欢两个物品的用户越多,且这些用户之间的重合度越低,那么这两个物品间的相似度越高。

  [1].推荐召回-Swing
  [2].推荐算法三视角:矩阵,图,时间线
  [3].swing:一种工业界广泛使用的召回算法

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

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

相关文章

MySql常见问题(长期更新)

基于mysql 8.0.3版本 一、忘记root密码1.1 、linux 系统下忘记密码1.2、Windows 系统下忘记密码1.3 Unix 和类 Unix 系统 二、账号问题2.1 远程访问账号设置 一、忘记root密码 1.1 、linux 系统下忘记密码 啥?你问我为什么会忘记密码?别问,…

Flutter状态管理新的实践 | 京东云技术团队

1 背景介绍 1.1 声明式ui 声明式UI其实并不是近几年的新技术,但是近几年声明式UI框架非常的火热。单说移动端,跨平台方案有:RN、Flutter。iOS原生有:SwiftUI。android原生有:compose。可以看到声明式UI是以后的前端发…

大数据从0到1的完美落地之sqoop优化

Sqoop的Job与优化 Job操作 job的好处: 1、一次创建,后面不需要创建,可重复执行job即可 2、它可以帮我们记录增量导入数据的最后记录值 3、job的元数据默认存储目录:$HOME/.sqoop/ 4、job的元数据也可以存储于mysql中。 复制代码…

C# 特性总结

目录 特性是什么? 如何使用特性? (1).Net 框架预定义特性 (2)自定义特性 为什么要使用特性? 特性的应用 特性实现枚举展示描述信息 特性是什么? 特性(Attribute&…

拉新、转化、留存,一个做不好,就可能会噶?

用户周期 对于我们各个平台来说(CSDN也是),我们用户都会有一个生命周期:引入期–成长期–成熟期–休眠期–流失期。 而一般获客就在引入期,在这个时候我们会通过推广的手段进行拉新;升值期则发生在成长期…

智能制造工厂的SCADA解决方案应用

智能制造工厂是当今工业领域的一个重要趋势,它将传统的生产模式与现代信息技术相结合,实现了生产过程的智能化和自动化。 SCADA是一种监控与数据采集系统,广泛应用于工业自动化领域,它通过传感器、控制器和网络等设备&#xff0c…

基于Python机器学习算法小分子药性预测(岭回归+随机森林回归+极端森林回归+加权平均融合模型)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境配置工具包 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练 系统测试工程源代码下载其它资料下载 前言 《麻省理工科技评论》于2020年发布了“十大突破性技术”预测,其中包括“AI药物分子发现”…

一文说透!华熙生物如何步步为营炼就品牌势能?

据华熙生物2022年财报,华熙生物2022年营收同比增长28.53%,净利润同比增长24%,成为全球最大的。同时,近年来也在C端也大展身手。华熙生物此前与故宫博物院合作,推出6 款故宫国宝色口红和2款“故宫美人面膜”。凭借精美的…

中小型企业需要官网和帮助中心吗?为何这样说?

随着互联网技术的不断发展,越来越多的中小型企业开始重视拥有自己的官网和帮助中心。但是,对于许多刚刚起步的中小型企业来说,官网和帮助中心的建设可能需要一定的成本和时间投入。那么,中小型企业是否需要官网和帮助中心呢&#…

python(11):python读取excel、csv文件

1.python读取excel文件 要读取Excel表格的指定行和列范围,可以使用Python中的第三方库pandas。pandas库提供了强大的数据分析和处理工具,包括读取和处理Excel文件的功能。以下是一个示例代码,演示了如何使用pandas库读取Excel表格中的指定行…

[Go]-Go语言第一课

1-1 Go语言特点 特点: 1. 静态类型,编译开源语言2. 脚本化的语法,支持多种编程范式(函数式,面向对象)3. 原生,给力的并发支持并发编程1-2 Go语言优势与劣势 Go语言的优势: 1.脚本化…

软考A计划-系统集成项目管理工程师-信息化知识(三)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

加密市场与上一轮周期有何异同?五大因素探讨加密市场未来之路

数字资产市场在一季度表现不俗,但二季度的表现却出现了相反的情况。数据显示,BTC 在一季度累计上涨了 71.69%,而二季度截至目前下跌了 7.31%。这样的变化主要是由金融监管机构针对整个数字资产行业采取的监管行动造成的。虽然 BTC 今年以来仍…

uniapp中uni-popup的用法——实例讲解

uni-pop弹出层组件,在应用中弹出一个消息提示窗口、提示框等,可以设置弹出层的位置,是中间、底部、还是顶部。 如下图效果所示:白色区域则为弹出的pop层。 一、 创建一个自定义组件: 1.项目中安装下载uni-pop插件。 2.把pop内容…

2023.6.19项目部署(一)前端项目部署

文章目录 项目部署(一)前端项目一、安装宝塔面板1、安装宝塔面板2、放行端口3、安装相关软件4、添加站点 二、项目打包1、Springboot打包2、vue项目打包 三、前端项目部署1、安装nginx2、修改配置文件 项目部署(一)前端项目 将开…

SQL优化的几种方法

目录 避免使用select *用union all代替union小表驱动大表批量操作多用limitSQL查找是否"存在",别再count了!in中值太多增量查询高效的分页用连接查询代替子查询join的表不宜过多join时要注意控制索引的数量选择合理的字段类型提升group by的效…

HTTPHTTPS协议详解

目录 一、HTTP是什么? 理解 "应用层协议" 理解 HTTP 协议的工作过程 二、HTTP 协议格式 抓包工具的使用 抓包工具的原理 抓包结果 协议格式总结 三、HTTP 请求 (Request) 认识 URL URL 基本格式 认识 "方法" (method) 认识请求 &quo…

使用Java设计实现一个高效可伸缩的计算结果缓存

目录 概述1.缓存实现1.1 使用HashMapSynchronized实现缓存1.2 使用ConcurrentHashMap代替HashMap改进缓存的并发1.3 完成可伸缩性高效缓存的最终方案1.4 测试代码 2.并发技巧总结 概述 现在的软件开发中几乎所有的应用都会用到某种形式的缓存,重用之前的计算结果能…

回收站数据恢复方法有哪些?五招走起,趁早上手

回收站数据恢复方法是我们在日常操作电脑时不可避免需要面对的问题。本文将对几种常用的回收站数据恢复方法进行介绍,为大家解决恢复回收站数据的常见问题。 一、使用快捷键恢复回收站文件 在我们的电脑中,有很多实用的快捷键,其中有效地恢…

分享干货,多编程语言代码生成神器 CodeGeeX,编码效率提升十倍

CodeGeeX 是一个具有 130 亿参数的多编程语言代码生成预训练模型,采用华为 MindSpore 框架实现,在鹏城实验室“鹏城云脑 II”上使用 1536 个国产昇腾 910 AI 处理器训练而成。 CodeGeexX 支持十多种主流编程语言的高精度代码生成、跨语言代码翻译等功能&…