暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

UID编码优化 - 用户画像前置规则 (bloom, 固定算法等)

digoal 2019-11-30
1106

作者

digoal

日期

2019-11-30

标签

PostgreSQL , 阿里云 , 用户画像 , 标签


背景

古人说五十知天命,天命是固定的,例如性别,生辰八字,出生地,血型,受精时间等。人的很多行为受到天命的影响,所以也是用户画像系统圈选目标人群的常用条件之一。既然天命固定就可以将天命配合固定算法映射进用户id,在拿到id时就可以反算其天命的值例如性别等,简化画像系统在这些固定稀疏值方面的检索系统,什么算法好呢?例如bloom filter的逆向使用。

pic

pic

pic

《PostgreSQL 11 preview - bloom filter 误报率评估测试及如何降低误报 - 暨bloom filter应用于HEAP与INDEX的一致性检测》

《PostgreSQL 9.6 黑科技 bloom 算法索引,一个索引支撑任意列组合查询》

画像系统:

《PostgreSQL pg_roaringbitmap - 用户画像、标签、高效检索》

《画像系统标准化设计 - PostgreSQL roaringbitmap, varbitx , 正向关系, 反向关系, 圈选, 相似扩选(向量相似扩选)》

在画像系统中,常见的商业变现手段是帮助广告主找到他们的精准目标客户,所以操作通常是tag对应uid bitmap的与、或、非、异或操作。

而当某些tag下bit特别多时,即使roaring bitmap这里压缩bitmap存储空间也比较大,例如值特别稀疏的字段:男、女、省份、城市、国家、收入段等等。

那么有没有什么方法可以把这类标签值前置呢?

通过算法可以前置,例如分配UID时,通过算法将稀疏值映射到UID里面。

例如:

1、类似bloom filter的算法,例如这个客户是男、北京、中国的,包含了这几个tag值,就必须确保UID对应某些个bits为1。

用户填写固定信息 -> 申请账号 -> 稀疏tag字段值 -> 类bloom filter算法 -> 1920203911122

2、使用固定映射的简单算法:

男,尾号1
女,尾号2

圈选用户时,这类稀疏条件可以直接根据UID的规则产生。

广告主条件:x1,x2,x3,x4,其中x4为前置稀疏条件,使用数据库查询x1,x2,x3条件圈选出一批用户,然后应用端或数据库端(当算法内置到了数据库内部时)使用x4的算法过滤出广告主要的uids。

参考

《PostgreSQL pg_roaringbitmap - 用户画像、标签、高效检索》

《画像系统标准化设计 - PostgreSQL roaringbitmap, varbitx , 正向关系, 反向关系, 圈选, 相似扩选(向量相似扩选)》

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论