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

Twitter推荐算法总架构和算法说明

Twitter推荐算法总架构:

这个推荐架构的作用是生成在用户首页上显示的推文列表

在这里插入图片描述



步骤:

1、从不同的推荐来源中获取最好的推文,这个过程被称为候选来源。
2、使用机器学习模型对每条推文进行排名。
3、应用启发式方法和过滤器,例如过滤掉你已经屏蔽的用户的推文、NSFW内容以及你已经看过的推文。



候选源:

来源分成两部分,网络内和网络外。这里的网络指的是Twitter的社交网络。



1、网络内来源
网络内来源是最大的候选来源,旨在提供所关注的用户的最相关、最近的推文。它使用逻辑回归模型,根据相关性对你所关注的用户的推文进行有效排名。排名靠前的推文会被送到下一个阶段。

对网络内推文进行排名的最重要组成部分是Real Graph。真实图谱是一个预测两个用户之间接触的可能性的模型。你和推文作者之间的Real Graph得分越高,将包括更多他们的推文。

网络内来源一直是Twitter最近工作的主题。最近停止了使用Fanout服务,这是一项有12年历史的服务,以前是用来从每个用户的推文缓存中提供网络内推文的。也正在重新设计逻辑回归排名模型,该模型最后一次更新和训练是在几年前!



2、网络外的来源
寻找用户网络之外的相关推文是一个比较棘手的问题:如果你不关注作者,怎么能知道某条推文是否与你有关?Twitter采取了两种方法来解决这个问题。



2.1社会图谱

第一个方法是通过分析你所关注的人或有类似兴趣的人的参与情况来估计你会发现什么是相关的。

遍历参与度和关注度的图表,以回答以下问题:

1、我关注的人最近参与了哪些推文?
2、谁喜欢与我相似的推文,他们最近还喜欢什么?
**根据这些问题的答案生成候选推文,并使用逻辑回归模型对生成的推文进行排名。**这种类型的图形遍历对网络外推荐至关重要;

**开发了GraphJet,一个图形处理引擎,维护用户和推文之间的实时互动图,以执行这些遍历。**虽然这种搜索Twitter参与和关注网络的启发式方法已被证明是有用的(目前这些方法服务于大约15%的主页时间线推文),但嵌入空间方法已成为网络外推文的更大来源。



2.2嵌入空间

嵌入空间方法旨在回答一个关于内容相似性的更普遍的问题:哪些推文和用户与我的兴趣相似?

嵌入的工作方式是生成用户兴趣和推文内容的数字表示。然后,可以计算出这个嵌入空间中任何两个用户、推文或用户-推文对之间的相似性。只要产生准确的嵌入,就可以用这种相似性作为相关性的代表。

Twitter最有用的嵌入空间之一是SimClusters。SimClusters使用一种自定义的矩阵分解算法,去发现由有影响力的用户群体关注的社区进行嵌入。这里有145k个社区,每三周更新一次。用户和推文在社区的空间中被表示,并且可以属于多个社区。社区的规模从个人朋友圈的几千个用户,到新闻或流行文化的几亿个用户。这些是一些最大的社区:

在这里插入图片描述

可以通过查看Tweet在每个社区的当前受欢迎程度,将Tweet嵌入到这些社区。一个社区的用户越喜欢一条推文,该推文就越能与该社区联系起来。



排序

为你服务 "时间轴的目标是为你提供相关的推文。在管道的这一点上,有大约1500个可能是相关的候选推文。分数直接预测每个候选推文的相关性。在这个阶段,所有的候选推文都被平等对待,不考虑它来自哪个候选推文的来源。

排名是通过一个约4800万个参数的神经网络实现的,该网络在推特互动上不断训练,以优化积极的参与(例如,赞、转发和回复)。这个排名机制**考虑到了数千种特征,并输出十个标签,给每条推文打分,其中每个标签代表参与的概率。**根据这些分数对推文进行排名。



启发式方法、过滤器和产品特性

在排名阶段之后,应用启发式方法和过滤器来实现各种产品功能。这些功能共同作用,创造一个平衡和多样化的推荐。一些例子包括:

1、可见度过滤:根据推文的内容和你的偏好,过滤掉推文。例如,删除你屏蔽或静音的账户的推文。
2、作者多样性:避免单一作者的连续推文太多。
3、内容平衡:确保在网络内和网络外的推文中提供公平的平衡。
4、基于反馈的疲劳度:如果观众对某些推文提供了负面的反馈,则降低该推文的得分。
5、社会证明:排除没有第二层关系的网络外推文,作为一种质量保障。换句话说,确保你关注的人参与了该推文或关注该推文的作者。
6、对话:通过将回复与原始推文串联起来,为回复提供更多背景。
7、编辑过的推文:判断当前设备上的推文是否过时,并发送指示,用编辑过的版本替换它们。



混合和服务

在这一点上,Home Mixer有一组推文,准备发送到你的设备上。作为这个过程的最后一步,系统将推文与其他非推文内容混合在一起,如广告、关注建议和入职提示,这些内容将返回到你的设备上显示。

上述管道每天运行约50亿次,平均在1.5秒内完成。一个管道的执行需要220秒的CPU时间,几乎是你在应用程序上感知到的延迟的150倍。



参考:

1、Twitter’s Recommendation Algorithm

er.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm)

2、examples/lite/examples/image_classification/android at master · tensorflow/examples (github.com)

相关文章:

Twitter推荐算法总架构和算法说明

Twitter推荐算法总架构: 这个推荐架构的作用是生成在用户首页上显示的推文列表 步骤: 1、从不同的推荐来源中获取最好的推文,这个过程被称为候选来源。 2、使用机器学习模型对每条推文进行排名。 3、应用启发式方法和过滤器,例如…...

1.C语言题目---指针类(基础)

1. 小端,低地址存低字节,高地址存高字节 大端,低地址存高字节,高地址存低字节 人类读写数据习惯是大端字节序 比如说数字12345678在寄存器大端存储顺序如下: 在寄存器小端存储顺序如下: 假设,a变量的地址为0x64,则a变量在内存中的模型为: 0…...

【算法与数据结构】关于排序的问题思考

文章目录引言不断的插入值,并保证序列是递增的。Python中sort()和sorted()的区别是啥?sorted 函数如何使用?问题: 如何返回排序之后的索引问题:排序的稳定性问题,寻找第K大的元素的算法。引出一个算法题&am…...

行为型模式-命令模式

行为型模式-命令模式命令模式(Command)解决命令执行问题描述适用环境优点:缺点:违反原则:代码实现命令模式(Command) 解决命令执行问题 描述 将一个请求封装为一个对象,并定义该对…...

SHELL综合练习1

文章目录1、编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED2、 编写函数,实现判断是否无位置参数,如无参数,提示错误3、编写函数实现两个数字做为参数,返回最大值…...

ROS开发之如何使用发布者、订阅者和话题消息?

文章目录0、引言1、创建发布者(velocity发布者 →geometry话题消息→turtlesim订阅者)2、创建订阅者(turtlesim发布者→turtlesim话题消息→pose订阅者)3、自定义话题消息4、使用自定义话题消息(person发布者→自定义话…...

基于Java+Springboot+vue高校资源共享交流平台设计和实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

收藏! 38个Python数据科研库

通用的数据科学库,即那些可能被数据科学领域的从业人员用于广义的,非神经网络的,非研究性工作的库: 数据-用于数据管理,处理和其他处理的库 数学-虽然许多库都执行数学任务,但这个小型库却专门这样做 机…...

SpringBoot过滤器获取Bean-请求重复可读-获取请求体数据-用户IP归属地获取

文章目录一.获取Bean二. Request重复可读三. 过滤器获取Body请求体数据四.用户ip获取一.获取Bean 网上一些论调说Filter无法注入Bean的原因是加载顺序: listener—>filter—>servlet导致的.我不赞同. 原因:默认机制下,在SpringBoot应用启动时,IOC…...

有哪些特别小众而有趣的编程语言呢?

相对较小众的编程语言,还要有趣?发表一些个人看法,如果不对大家口味,大家轻喷,留情留情。 Rust:Rust是一种系统编程语言,致力于提供高性能、可靠性和安全性。Rust具有内存安全和线程安全的特性&…...

vue中使用高德

首先我们要申请高德地图的key,当前升级过后高德地图使用也需要加上安全秘钥 注册账号 访问高德地图开发平台根据实际情况填写就可以🍜(实名认证的时候选择个人就可以,如果是企业级的项目,可能会涉及人员变动&#xf…...

React class组件和hooks setState异步更新数据详解

一、 class组件setState详解 1.class组件setState异步更新数据详解 class Father extends React.Component{state {num:0}addHandler () > { this.setState({num: 100})console.log(state中的值,this.state.num)}render() { return (<div><button onClick{this…...

ToBeWritten之嵌入式操作系统

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…...

git 实际开发中使用-解决问题

前言 git代码版本管理工具&#xff0c;打破常规的物理传输&#xff0c;更新&#xff0c;合并&#xff0c;回滚提高了开发效率和可追溯性。 网上的资料会把所有的命令都很全也很多&#xff0c;导致对刚刚了解的同学不友好&#xff0c;很难实际使用。 每个人都有自己使用git的习…...

新星计划·2023-第1期 - Python赛道报名入口 -〖你就是下一个新星〗

↓↓↓报名方式&#xff1a;&#xff08;下滑到本页面底部&#xff09;重要提醒&#xff1a;这里是 新星计划2023-第1期 - Python赛道报名入口&#xff0c;一经报名&#xff0c;不可更换。报名入口点击此处跳转 一、新星计划 新星计划是一个以发掘潜力新人、培养优质博主为目…...

Android LowMemoryKiller概述

Agenda Low memory killer 概述 内核空间LMK ULMK‐vmpressure ULMK‐PSI Low memory killer 概述 lowmemorykiller的作用就是当内存比较紧张的时候去及时杀掉一些对用户来说不那么重要的进程&#xff0c;回收内存&#xff0c;保证手机的正常运行。安卓平台lowmemorykiller机…...

特殊操作流——案例:游戏次数

需求&#xff1a;请求程序实现猜数字小游戏只能试玩三次&#xff0c;如果还想玩&#xff0c;提示&#xff1a;游戏已经结束&#xff0c;想玩请充值&#xff08;www.itcast.cn&#xff09; 思路&#xff1a; 写一个游戏类&#xff0c;里面有一个猜数字的小游戏 写一个测试类&am…...

git clone connect to gitlab sign in token弹窗让我输入用户名和密码

系列文章目录 文章目录系列文章目录前言前言 当我使用git bash输入命令&#xff1a;git clone https://gitlab.freedesktop.org/raqm/raqm.git libraqm 弹窗 ASUSLAPTOP-0R30I78P MINGW64 /e/krita-dev $ git clone https://gitlab.freedesktop.org/raqm/raqm.git libraqm C…...

【Blender】如何在Blender中添加HDRI环境贴图

​ 什么是HDRI环境贴图 环境贴图或HDRI贴图是在Blender中照亮3D场景并实现逼真效果的最有效和最快捷的方法之一。 HDRIs本质上是现实世界照明的快照&#xff0c;其中包含高动态范围成像&#xff08;HDRI&#xff09;的准确照明细节。HDRI是一个包含亮度信息&#xff08;从暗…...

前端监控指的是什么?

前端监控分为三个方面&#xff1a; 异常监控&#xff08;监控前端页面的报错&#xff09;性能监控&#xff08;监控页面的性能&#xff09;用户行为监控&#xff08;监控用户的行为&#xff0c;计算PV、UV、在线时间等、数据监控即我们常说的埋点 例子1 在后端突然上线了某个需…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

PH热榜 | 2025-06-08

1. Thiings 标语&#xff1a;一套超过1900个免费AI生成的3D图标集合 介绍&#xff1a;Thiings是一个不断扩展的免费AI生成3D图标库&#xff0c;目前已有超过1900个图标。你可以按照主题浏览&#xff0c;生成自己的图标&#xff0c;或者下载整个图标集。所有图标都可以在个人或…...