介绍了用户画像的应用场景:
(1)个性化推荐
通过用户标签给用户推荐合适的商品或者内容
(2)营销圈选
参考:用户画像系列——Lookalike在营销圈选扩量中的应用
(3)策略引擎
根据用户标签命中不同的策略,比如说:高消费人员有奢侈品入口通道
(4)算法模型
(5)画像报告
背景:
这篇文章分享的是用户画像在策略引擎中的应用。首先来了解下策略引擎是干什么的?
比如:当某个用户第一次进入某个平台,会给你弹窗有什么优惠,新用户优惠券等等;或者某个用户消费金额极高,达到一个阈值,认为该用户有极大的消费能力,可以开放奢侈品入口,即:淘宝上的奢侈品频道是根据之前有消费过奢侈品、且高价值的用户才开放的。
上述是一个简单的策略引擎,通过进行判断当前进入的用户是否满足某个或者多个条件然后进行相应的营销策略
问题和思路:
当引擎策略(或者称之为规则)过于复杂,同时还会经常对规则进行变更,那么是否有一个更加简单的方法来处理呢?即是这篇文章要要分享的通过人群圈选功能,圈出目标用户,定义为人群包,然后当前用户进行平台判断该用户是否在这个人群包里面,因为是线上服务,要求进行用户去查询人群包匹配是否存在的过程需要在毫秒内返回结果
通过上述方案,只需要修改圈选条件,就能够非常简单的解决,策略条件过于复杂以及经常调整的问题。
线上实际应用以及遇到的问题:
因为要求线上用户访问去人群包进行匹配的过程,需要在毫秒级进行返回,因此需要对于人群包数据进行存储,考虑采用redis 进行存储。
redis数据结构如下:
key:人群包id key_1,value:圈选出来的用户列表[userId_1,userId_2,userId_3等等]
SADD key_1 userId_1 userId_2 userId_3 //添加用户id到人群包key_1中 SISMEMBER key_id userId_3 //判断userId_3在不在人群包key_1中
但是随着人群包越来越多,需要的存储也越来越多,通常一个人群包里面的用户少则几万多则上千万甚至亿级。
优化方案:
通过使用redis 的布隆过滤器
bf.madd key_1 userId_1 userId_2 userId_3 //添加用户到人群包中 bf.exists key_1 userId_3 //判断用户是否在人群包中
由于布隆过滤器存储空间小,并且节省空间,不存储数据本身,仅存储hash结果取模运算后的位标记,整理存储优化极大相对于散列表
布隆过滤器详细原理参考: