首页 > 其他分享 >Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time

Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time

时间:2023-10-20 17:35:51浏览次数:45  
标签:Billion 200 currPin Real pin PersonalizedNeighbor Pixie pins

目录

Eksombatchai C., Jindal P., Liu J. Z., Liu Y., Sharma R., Sugnet C., Ulrich M. and Leskovec J. Pixie: A system for recommending 3+ billion items to 200+ million users in real-time. WWW, 2018.

Pinterest 的一个大规模处理图的方案 (偏推理而不是训练).

符号说明

  • \(P\) pins, \(B\) boards;
  • \(E\) edges, pin \(p\) 归类到 board \(b\) 中则二者存在一边;
  • \(G = (P, B, E)\), 图, \(P, B\) 为点集, \(E\) 为边集;
  • \(q\) query, 用户相关的请求;
  • \(Q = [(q_1, w_1), (q_2, w_2), \ldots, (q_{|Q|}, w_{|Q|})]\), 一组 queries.

Pixie

  • 首先, 我们的任务是根据用户相关的一组 queries \(Q\) (其中 \(w_q\) 表示这个 query 的重要性), 然后基于此从图 \(G\) 中推断出最相关的一些 pins.

  • Pixie 的思路很简单:

    1. 对于每个 \(q \in Q\), 进行随机游走得到一串 pins 的 counts (即经过某个 pin 的次数), 记为 \(V_q\);
    2. 通过某种方式 pooling 这些 \(V_q, q=1,\cdots, |Q|\), 得到 \(V\);
    3. 挑选 \(V\) 中最大的一些 pins 作为推荐.
  • 不同于一般的随机游走, Pixie 采取的随机游走的是和用户的特征 \(U\) 相关的, 故而有个性化:

    1. currBoard = E(currPin)[PersonalizedNeighbor(E,U)];
    2. currPin = E(currBoard)[PersonalizedNeighbor(E,U)];
    3. V[currPin]++
    4. 重复直到达到最大的次数.
  • 其中 PersonalizedNeighbor(E,U) 根据用户 \(U\) 计算边的权重.

  • 最后的 pooling 的操作为:

    \[V[p] = (\sum_{q \in Q} \sqrt{V_q[p]})^2. \]

    这反映的直觉是, 假设两个 pin \(p_1, p_2\) 的总的经历次数是相同的, 但是 \(p_1\) 在不同的 \(q\) 的链上出现的出现次数差不多, \(p_2\) 则是频繁出现在同一条链上, 则推荐 \(p_1\) 是一个更好的选择.

  • 下面是一些加速的 trick:

    1. 不同的起始点 \(q\) 设置不同的最大链长度 (依据 degree 大小), 此外采取早停策略 (如果top-K counts 的 pins 几乎不变, 则早停);
    2. graph pruning: 移除掉那些很杂的 boards (计算熵判断); 针对那些 high-degree 的点, 删除掉其中不那么重要的边. 这部分操作即带来了效率上的提升, 精度也有所提升 (主要是因为删除了一些噪声).

标签:Billion,200,currPin,Real,pin,PersonalizedNeighbor,Pixie,pins
From: https://www.cnblogs.com/MTandHJ/p/17777593.html

相关文章

  • mysql三种方案优化 2000w 数据大表
    摘录自当我们业务数据库表中的数据越来越多,如果你也和我遇到了以下类似场景,那让我们一起来解决这个问题数据的插入,查询时长较长后续业务需求的扩展在表中新增字段影响较大表中的数据并不是所有的都为有效数据需求只查询时间区间内的评估表数据体量我们可以从表容量/磁......
  • P2024 [NOI2001] 食物链
    P2024[NOI2001]食物链法一:种类并查集A->B->C->A[1,n]:表示同类,[n+1,2n]:表示猎物,[2n+1,3*3]:表示天敌点击查看代码#include<bits/stdc++.h>usingnamespacestd;constintN=5e4+10;intfa[3*N];intfind(intx){ returnx==fa[x]?x:fa[x]=find(fa[x......
  • 虚幻(UnrealEngine)全局事件插件
    https://github.com/bodong1987/UnrealEngine.GlobalEvents学习Unreal的练手代码,主要用途是提供一个全局级别的消息广播与消息监听,目的是解决直接引用对象带来的强依赖的问题。详情可见github首页。 ......
  • MBR40200PT-ASEMI肖特基MBR40200PT参数、规格、尺寸
    编辑:llMBR40200PT-ASEMI肖特基MBR40200PT参数、规格、尺寸型号:MBR40200PT品牌:ASEMI芯片个数:2封装:TO-247恢复时间:>50ns工作温度:-65°C~175°C浪涌电流:350A正向电流:40A反向耐压:200V正向压降:0.8V引脚数量:3MBR40200PT特性:ASEMI品牌MBR40200PT是采用工艺芯片,该芯片具有良......
  • MBR20200CT-ASEMI肖特基MBR20200CT参数、规格、尺寸
    编辑:llMBR20200CT-ASEMI肖特基MBR20200CT参数、规格、尺寸型号:MBR20200CT品牌:ASEMI封装:TO-220恢复时间:>50ns正向电流:20A反向耐压:200V芯片个数:2引脚数量:3类型:肖特基、插件肖特基二极管特性:低耐压、高效率浪涌电流:200A正向压降:1.05V封装尺寸:如图工作温度:-65°C~175°C......
  • 【dp】【进制】P3464 [POI2007] WAG-Quaternary Balance 题解
    P3464显然的,先将原数变为四进制的数。由于算的是进位/不进位的代价最小值和方案数,容易想到dp。这里假定该四进制数是从高位到低位的,顺序显然是由低位到高位。令\(f_{i,0/1}\)表示第\(i\)位进/不进位的最小代价,\(g_{i,0/1}\)表示的是最小代价下的方案数。转移是简单的......
  • C2000 系列DSP使用Syscfg配置CLB模块记录
    1.1、SysConfig配置1、在工程下新建一个syscfg文件。注意文件的后缀名是.syscfg,命名任意。这时候会弹出一个弹窗,点击yes将SysConfig添加到该工程的toolchain。2、可以看到工程下多了一个GeneratedSource,并且打开工程属性,Build下也新加了SysConfig......
  • leetcode200 岛屿数量
    链接https://leetcode.cn/problems/number-of-islands/description/思路跟岛屿周长差不多...但我觉得这个比岛屿周长还简单。不知道为什么这个算中等题目,岛屿周长算简单题目代码classSolution:defnumIslands(self,grid)->int:ifnotgridornotgrid[0]......
  • MBR10200CT-ASEMI肖特基MBR10200CT参数、规格、尺寸
    编辑:llMBR10200CT-ASEMI肖特基MBR10200CT参数、规格、尺寸型号:MBR10200CT品牌:ASEMI封装:TO-220恢复时间:>50ns正向电流:10A反向耐压:200V芯片个数:2引脚数量:3类型:肖特基、插件肖特基二极管特性:低耐压、高效率浪涌电流:200A正向压降:1.05V封装尺寸:如图工作温度:-65°C~175°C......
  • Siemens 西门子1200PLC支持的通信协议
    西门子系列PLC产品,功能比较强大。而在通信这块也是独树一帜,那么对于初学者来说,面对西门子1200PLC如此强大的通信功能,那在实际项目中该如何选择通信协议呢?本文我们将来了解1200PLC的通信功能。S7-1200CPU本体上集成了一个PROFINET通信口(CPU1211C-CPU1214C)或者两......