布隆过滤器原理及在推荐业务的应用

2020 年 3 月 23 日 凡人机器学习

提到布隆过滤器总想起上大学时候学习的什么切比雪夫滤波器之类的东西(博主是学通信的),我发现过滤器一般都是以发明人的名字命名,布隆过滤器是一种布尔型判断器,可以非常高效的判断一个物品是否在某个列表里。有人说判断一个item是否在一个item列表里,只要将所有item存在数据库,或者做一层缓存存在redis里,再遍历的查一次不就得了?这么做没问题,但是当item量巨大的时候,会出现缓存击穿等问题。布隆过滤器很好地解决了这个问题,接下来会具体介绍原理。


布隆过滤器会被应用在许多场景下,我接触比较多的就是推荐场景的应用,接下来讲下具体的业务场景和原理。


01

布隆过滤器在推荐场景下的应用


推荐系统中应用布隆过滤器主要体现以下几个场景:


场景1:判断一个用户是否是新用户

场景2:判断一个Item是否是新Item

场景3:判断一个Item是否曾经推荐给过某个User


这些场景的特点是都不需要获取具体信息,只需要知道是否存在这个信息即可。比如判断用户是否是新用户这个场景,用户进来后首先判断是否是新客,如果是新客就走冷启动推荐逻辑,如果是老客就走传统的召回+排序的推荐逻辑:


02

布隆过滤器具体原理

用过Redis都知道,Redis是将数据通过KV形式完整存储到内存里,并且提供了O(1)复杂度的查询速度。但是Redis受限于内存大小,承载不了特别大的数据。比如一个系统包含10亿个账号,每个账号占位100B,那么全写到Redis里得有接近100G的内存才行,比较难达到。


布隆过滤器之所以快并且占用空间小,主要原因是布隆过滤器并不直接存储内容,存储的是哈希后的结果。比如下面这个图,假设是

hash(A)的结果,

则第3个、第6个、第10个这三个等于“1”。在查询的时候只要查询这三个位置是否是1就能确定A是否存在。


但是因为哈希存在哈希冲突这样的问题,有可能第3个、第6个、第10个这三个等于“1”,但是这三个位置不是代表着A,而是B,因为A的哈希和B的哈希结果有冲突,虽然这种概率很低。所以布隆过滤器的返回结果是一个概率值,返回的是某个对下可能存在的概率是多少。


登录查看更多
1

相关内容

Redis 是一个使用 C 语言写成的,开源的 key-value 数据库。
专知会员服务
32+阅读 · 2020年5月20日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
77+阅读 · 2020年4月24日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
36+阅读 · 2020年4月5日
近期必读的6篇AI顶会WWW2020【推荐系统】相关论文
专知会员服务
57+阅读 · 2020年2月25日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
88+阅读 · 2019年10月21日
腾讯推荐引擎组员工:谈谈推荐系统架构
腾讯大讲堂
14+阅读 · 2019年10月23日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
推荐系统产品与算法概述 | 深度
AI100
11+阅读 · 2019年6月13日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
深度解析机器学习系统的八大坑
AI100
4+阅读 · 2019年3月2日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
干货 :详解个性化推荐五大最常用算法
数据分析
6+阅读 · 2017年7月19日
自然语言处理技术(NLP)在推荐系统中的应用
CSDN大数据
4+阅读 · 2017年6月29日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
Arxiv
5+阅读 · 2018年7月19日
VIP会员
相关VIP内容
专知会员服务
32+阅读 · 2020年5月20日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
122+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
77+阅读 · 2020年4月24日
【WWW2020-微软】理解用户行为用于文档推荐
专知会员服务
36+阅读 · 2020年4月5日
近期必读的6篇AI顶会WWW2020【推荐系统】相关论文
专知会员服务
57+阅读 · 2020年2月25日
【推荐系统/计算广告/机器学习/CTR预估资料汇总】
专知会员服务
88+阅读 · 2019年10月21日
相关资讯
腾讯推荐引擎组员工:谈谈推荐系统架构
腾讯大讲堂
14+阅读 · 2019年10月23日
推荐召回算法之深度召回模型串讲
AINLP
22+阅读 · 2019年6月14日
推荐系统产品与算法概述 | 深度
AI100
11+阅读 · 2019年6月13日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
深度解析机器学习系统的八大坑
AI100
4+阅读 · 2019年3月2日
推荐系统中的矩阵分解技术
AINLP
9+阅读 · 2018年12月24日
干货 :详解个性化推荐五大最常用算法
数据分析
6+阅读 · 2017年7月19日
自然语言处理技术(NLP)在推荐系统中的应用
CSDN大数据
4+阅读 · 2017年6月29日
Top
微信扫码咨询专知VIP会员