1. 用户画像基本流程与方法
用户画像在互联网场景里是非常重要的环节,比如通过不同的终端访问了相同的页面,平台方如何识别是否是同一个人在浏览访问呢?
• 首先,需要进行归一化(数据中台里称作OneID),全渠道多端采集,可信归一沉淀。
• 然后构建标签体系预置标签库。
• 然后进入用户画像流程,包括人群圈选、人群洞察,通过预置人群包、自定义人群包,私域+公域标签、多维度洞察研究。
• 将洞察结果配合营销策略进行多通道触达,实时效果跟踪。
• 数据回流形成回环。
2. 实时人群画像解决方案与收益
人群画像对实时化的要求越来越高,如图所示:
• 首先CRM的数据通过DTS/Dataworks等数据集成类产品同步到AnalyticDB中,将实时运行的数据如事件数据、行为数据投递到Kafka,然后再投递到ADB里。
• 而在ADB里会存在会员的基础信息,这些信息可以来自关系型数据库、CRM数据库、ERP数据库等;会员的行为数据可以是通过Kafka、日志服务投递进来;支付数据可以是来自关系型数据库。
• 这些数据在ADB中进行归一化操作、建立标签体系,基于这些进行用户的画像和人群的洞察,然后经过第三方工具进行触达。
1) 核心PaaS产品
AnalyticDB MySQL、MySQL、AnalyticDB Spark。
2) 人货场可视化标签,多维度人群筛选
• 基于AnalyticDB MySQL周期性定时打标。
• 基于AnalyticDB Spark流计算近实时打标。
• 手动人群圈选打标。
• 基于事件触发自动化打标。
3) 事件营销引擎
• 短延迟事件:等待时间小于1天。
• 长延迟事件:等待事件大于1天。
• 系统类事件: CRM、POS等系统产生事件浏览类事件:WEB埋点事件等。
• APP类事件:第三方系统事件交互。
4) 一些数据
• 会员基础信息:1+亿
• 会员行为数据:1000+亿
• 会员消费数据:100+亿
• 10W+TPS事件
• 效率提升:5分钟->500ms;100X性能提升
3. 用户画像常见算法举例-RFM
• R(Recency):最近一次消费时间
• F(Frequency):消费频率
• M(Monetary):消费金额
打分体系
• R、F、M作min-max归一化
• 值=(值-min) /(max-min)
• RFM总值=R值* (-100)+F值*100+M值*100+100
4. 实时人群用户画像-RFM
如下是一条人群圈选和人群洞察SQL语句,已脱敏。
人群圈选
WITH tbase AS (SELECT vipid, rval, fval, maval, max(rval)over()rval_max, min(rval)over()rval_min, max(fval)over()fval_max, min(fval)over()fval_min, max(mval)over()mval_max, min(mval)over()mval_min, FROM( SELECT vipid, max(col mum_012)rval, count(1) fval, sum(col_mum_005)mval FROM vip_behavior256 a WHERE a.col_num_001> 995 GROUP BY vipid) a)
人群洞察
SELECT vipid, CASE WHEN rvol > rval_vg AND fval > fval_avg AND mval > mval_avg THEN '重要价值客户' WHEN rval < rval_avg AND fval>fval_avg AND mval > mval_avg THEN ‘重要换回客户' WHEN rval > rval_avg AND fval < fval_avg AND mval > mval_avg THEN '重要深耕客户' WHEN rval < rval_avg AND fval>fwal_avg AND mval > mval_avg THEN'重要留客户’ WHEN rval > rval_avg AND fval>fval_avg AND mval < mval_avg THEN ‘潜力客户’ WHEN rval < rvall avg AND fual< fval_avg AND mval <mval_avg THEN‘新客户' WHEN rval < rval_avg AND fval > fval_avg AND mval < mval_avg THEN ‘一般维持客户' WHEN rval <rval_avg AND fval < fval_avg AND mval< mval_avg THEN '流失客户' end rfm_desc FROM( SELECT vipid, rval*-100 + fval*100 + mval* 100+100 total_val, rwal,tvall,mval, avg(rval)over()rval_avg,avg(fval)over()fval_avg,avg(mval)over() mval_avg FROM( SELECT vipid, ((rval- rval min)/(rval mix-rvall min))rval, ((Fvll- Twill min)/(fval max-fvill min)fval, ((mval mval min)/(mvall max-mwal minl)mval FROM tbase) a) a