当前位置: 首页 > 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 在后端突然上线了某个需…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

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

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

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...