广告用户分层与再营销深度实战
精准投放的本质是把合适的广告推给合适的人。本文从DMP标签体系设计,到RFM用户分层模型,再到再营销人群包的构建与投放,系统讲解用户分层的完整链路。
一、DMP标签体系设计
DMP(Data Management Platform)是广告系统的用户数据大脑,核心是多维度标签体系。
| 标签维度 | 标签示例 | 数据来源 | 更新频率 |
|---|---|---|---|
| 人口属性 | 年龄/性别/城市级别 | 注册信息/运营商 | 低频 |
| 设备信息 | iOS/Android/机型/价格段 | SDK上报 | 低频 |
| 行为偏好 | 游戏玩家/购物达人/旅行爱好者 | App内行为 | 每日 |
| 消费能力 | 高/中/低消费人群 | 订单数据/设备价格 | 每周 |
| 活跃度 | 日活/周活/月活/沉默用户 | 登录行为 | 实时 |
| 广告行为 | 曾点击XX类广告/转化用户 | 广告事件 | 实时 |
二、RFM模型:找出高价值用户
import pandas as pd
import numpy as np
def rfm_segmentation(orders_df, analysis_date=None):
"""
RFM用户分层
R(Recency): 最近购买距今天数(越小越好)
F(Frequency): 购买频次(越大越好)
M(Monetary): 购买金额(越大越好)
"""
if analysis_date is None:
analysis_date = pd.Timestamp.now()
rfm = orders_df.groupby('user_id').agg(
recency=('order_date', lambda x: (analysis_date - x.max()).days),
frequency=('order_id', 'count'),
monetary=('amount', 'sum')
).reset_index()
# 打分: 1-5分
rfm['R_score'] = pd.qcut(rfm['recency'], 5, labels=[5,4,3,2,1])
rfm['F_score'] = pd.qcut(rfm['frequency'].rank(method='first'), 5, labels=[1,2,3,4,5])
rfm['M_score'] = pd.qcut(rfm['monetary'].rank(method='first'), 5, labels=[1,2,3,4,5])
rfm['RFM_score'] = rfm['R_score'].astype(int) + rfm['F_score'].astype(int) + rfm['M_score'].astype(int)
# 分层
def segment(row):
if row['RFM_score'] >= 12:
return '重要价值客户'
elif row['R_score'] >= 4:
return '潜力新客'
elif row['F_score'] >= 4 and row['R_score'] < 3:
return '忠诚但流失风险'
elif row['RFM_score'] <= 6:
return '流失用户'
else:
return '一般维系客户'
rfm['segment'] = rfm.apply(segment, axis=1)
return rfm
三、再营销人群包构建与投放
# 人群包API - 上传自定义用户群
import hashlib, json, requests
def create_audience(name, user_ids, id_type='device_id'):
"""
创建再营销人群包
id_type: 'device_id'/'phone'/'email'
"""
# 隐私保护: 手机号/邮箱需要先SHA256
if id_type in ('phone', 'email'):
hashed_ids = [hashlib.sha256(uid.lower().encode()).hexdigest()
for uid in user_ids]
else:
hashed_ids = user_ids
payload = {
'name': name,
'type': 'custom_audience',
'id_type': id_type,
'ids': hashed_ids,
'description': f'RFM模型生成,{len(user_ids)}用户'
}
resp = requests.post(
'https://your-openclaw.com/api/v1/audiences',
json=payload,
headers={'Authorization': 'Bearer YOUR_TOKEN'}
)
audience_id = resp.json()['audience_id']
print(f'人群包创建成功: {audience_id}, 估算覆盖: {resp.json()["estimated_size"]}人')
return audience_id
# 使用RFM分层结果创建人群包
high_value_users = rfm[rfm['segment'] == '重要价值客户']['user_id'].tolist()
audience_id = create_audience('高价值用户再营销', high_value_users)
四、LAL相似扩量:从种子用户找相似用户
# Lookalike Audience(LAL)扩量原理
#
# 种子用户 (Seed Audience)
# ↓ 提取特征分布
# 特征向量 {年龄段: 25-35占60%, 兴趣: 购物+游戏, 设备: iPhone高端机}
# ↓ 在全量用户中召回相似用户
# 相似用户池 (2%~10%相似度)
# API配置
POST /api/v1/audiences/lookalike
{
'seed_audience_id': audience_id,
'similarity_ratio': 0.05, # 5%相似度,约覆盖总用户5%
'country': 'CN',
'optimization_goal': 'purchase' # 按转化优化
}
总结:精准投放的核心链路是:数据采集 → 标签计算 → 用户分层 → 人群包创建 → 定向投放 → 效果归因。RFM模型简单实用,是入门用户分层的最佳选择。
