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

推荐系统学习笔记(九)曝光过滤 Bloom Filter

曝光过滤

如果用户看过某个物品,则系统不再把该物品曝光给该用户,这个思想称之为曝光过滤

基本流程如下:

  1. 对于每个用户,记录已经曝光给他的物品。(小红书只召回1个月以内的笔记,因此只需要记录每个用户最近1个月的曝光历史)
  2. 对于每个召回的物品,判断它是否已经给该用户曝光过,排除掉曾经曝光过的物品。
  3. ⼀位⽤户看过 𝑛 个物品,本次召回 𝑟 个物品,如果暴⼒对⽐,需要 𝑂 (𝑛𝑟) 的时间

 Bloom Filter

判断一个物品🆔是否在已曝光的物品集合中

  1. 如果判断为no,那么该物品一定不在集合中;
  2. 如果判断为yes,那么该物品很可能在集合中(可能误伤,错误判断未曝光物品为已曝光,将其过滤掉)。

 参考文献:Burton H. Bloom. Space/time trade-offs in hash coding with allowable errors. Communications of the ACM , 1970.

具体流程如下:

  1. Bloom Filter 把物品集合表征为一个 m 维的二进制向量;
  2. 每个用户有一个曝光物品的集合,表征为一个向量,需要 m  bit的存储空间
  3.  Bloom filter 有 k 个哈希函数,每个哈希函数把物品ID映射成介于 0 和 m-1 之间的整数;
  4. 已曝光物品ID通过哈希函数映射进了二进制向量中对应的位置,如果该位置为0则调整为1,若为1无需调整;
  5. 对于召回的物品ID,通过哈希函数映射,若对应位置全为1,则说明该物品已曝光,否则未曝光。

若曝光物品集合⼤⼩为 𝑛,⼆进制向量维度为 𝑚,使⽤ 𝑘 个哈希函数

那么 Bloom filter 误伤的概率为:

\delta \approx \left( 1 - \exp\left(-\frac{kn}{m}\right) \right)^k

设定可容忍的误伤概率为 𝛿,那么最优参数为:

k = 1.44 \cdot \ln\left(\frac{1}{\delta}\right), m = 2n \cdot \ln\left(\frac{1}{\delta}\right).

侵删

💡注意:Bloom filter 只⽀持添加物品,不⽀持删除物品。从集合中移除物品,无法消除它对向量的影响。每天都需要从物品集合中移除年龄⼤于 1 个⽉的物品。

http://www.dtcms.com/a/313001.html

相关文章:

  • 【DL学习笔记】感受野(Receptive Field)
  • 映射网络驱动器后,重启映射就没了
  • 王之凝视 免安中文 离线运行版
  • 【Bluetooth】【Transport层篇】第四章 基于基础UART的蓝牙硬件发送协议 UART H4 Transport详解
  • wordpress登陆前登陆后显示不同的顶部菜单
  • 前后端交流
  • Go语言声明变量
  • mybatis实现固定三层树形结构的嵌套查询
  • 怎么修改论文格式呢?提供一份论文格式模板
  • 【ProtoBuf】初识ProtoBuf
  • 【UE5医学影像可视化】读取本地Dicom生成VolumeTexture,实现2D显示和自动翻页
  • 关于记录一下“bug”,在做图片上传的时候出现的小问题
  • B3953 [GESP202403 一级] 找因数
  • 大模型智能体(Agent)技术全景:架构演进、协作范式与应用前沿
  • Python Dash 全面讲解
  • 使用 Vuepress + GitHub Pages 搭建项目文档
  • io_getevents系统调用及示例
  • Android 之 图片加载(Fresco/Picasso/Glide)
  • 第四章:OSPF 协议
  • Docker环境离线安卓安装指南
  • Android 之 存储(Assets目录,SharedPreferences,数据库,内部存储等)
  • 音视频学习(五十):音频无损压缩
  • 使用 Docker 部署 Golang 程序
  • 计数组合学7.12( RSK算法的一些推论)
  • 考研复习-计算机组成原理-第二章-数据的表示和运算
  • PHP面向对象编程与数据库操作完全指南-下
  • 深入解析C++函数重载:从原理到实践
  • 2025年测绘程序设计比赛--基于统计滤波的点云去噪(已获国特)
  • MySQL梳理三:查询与优化
  • python新功能match case|:=|typing