3个真实案例告诉你:用户分层模型如何提升电商复购率(附Python代码)
从数据到增长:三个实战案例解析用户分层如何驱动电商复购
在电商这片红海中,获取一个新客户的成本正变得越来越高,而维系一个老客户的成本则相对低廉得多。因此,“复购率”早已不是运营报表上一个冰冷的百分比,它直接关系到企业的利润生命线。许多团队都明白要“精细化运营”,但具体如何下手?用户分层模型,正是将“精细化”从口号变为行动的关键桥梁。它不是一套复杂的理论,而是一套可以直接落地、用数据驱动决策的实战工具。对于电商运营和数据分析师而言,掌握用户分层,意味着你能清晰地看到不同价值用户的行为轨迹,并像一位经验丰富的指挥官,为不同部队制定最有效的作战策略。本文将抛开冗长的理论框架,直接切入三个真实的业务场景,手把手展示如何用Python构建分层模型,并基于分层结果设计出能真正提升复购的运营动作。
1. 案例一:唤醒“沉睡巨人”——高价值流失用户的精准召回
我们首先从一个常见的困境开始:平台有一批用户,历史消费金额很高,但最近半年却再未下单。他们像是沉睡的巨人,蕴含着巨大的价值潜力,但常规的“全场通用优惠券”轰炸往往石沉大海。如何精准地唤醒他们?
1.1 定义“高价值流失用户”分层
分层的第一步是明确标准。我们需要从用户行为数据中提取两个核心维度:用户价值(RFM模型简化版)和用户活跃状态。
- R(Recency,最近一次消费):距离当前日期最近一次下单的天数。天数越大,流失风险越高。
- F(Frequency,消费频率):在一定时间周期内的下单总次数。
- M(Monetary,消费金额):在一定时间周期内的累计消费总金额。
- 活跃状态:通常以“最近N天无互动(如登录、浏览、下单)”作为流失判断依据。
对于这个案例,我们聚焦于 “高价值” 和 “已流失” 的交集。一个实用的定义可以是:
- 高价值:历史累计消费金额(M)位于全体用户的前20%。
- 已流失:最近一次消费(R)超过180天,且最近30天无任何登录/浏览行为。
接下来,我们用Python和Pandas来实际操作,从订单数据中筛选出这部分用户。
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
# 假设 df_orders 是订单明细DataFrame,包含字段:user_id, order_date, order_amount
# 假设 df_behavior 是用户行为日志DataFrame,包含字段:user_id, event_date, event_type (如‘login’, ‘view’)
# 计算当前分析日期
analysis_date = pd.to_datetime('2023-10-27')
# 1. 计算每个用户的RFM指标
rfm = df_orders.groupby('user_id').agg(
last_order_date=('order_date', 'max'), # 最近购买日期
frequency=('order_id', 'count'), # 购买次数
monetary=('order_amount', 'sum') # 累计金额
).reset_index()
# 计算R值(最近一次消费距今天数)
rfm['R_days'] = (analysis_date - rfm['last_order_date']).dt.days
# 2. 判断用户近期是否活跃(最近30天有行为)
cutoff_date = analysis_date - timedelta(days=30)
recent_active_users = df_behavior[df_behavior['event_date'] >= cutoff_date]['user_id'].unique()
rfm['is_recently_active'] = rfm['user_id'].isin(recent_active_users)
# 3. 定义分层
# 高价值阈值:累计消费金额的80%分位数
m_threshold = rfm['monetary'].quantile(0.8)
# 流失定义:超过180天未购买 且 近期不活跃
rfm['user_segment'] = '其他用户'
rfm.loc[(rfm['R_days'] > 180) & (~rfm['is_recently_active']) & (rfm['monetary'] >= m_threshold),
'user_segment'] = '高价值流失用户'
# 查看分层结果
high_value_churned = rfm[rfm['user_segment'] == '高价值流失用户']
print(f"识别出高价值流失用户数量:{len(high_value_churned)}")
print(high_value_churned[['user_id', 'monetary', 'R_days']].head())
注意:RFM阈值(如前20%)和流失天数定义(如180天)需要根据你所在行业的用户消费周期进行调整。快消品和耐用品的节奏完全不同。
1.2 制定并执行差异化召回策略
识别出用户后,粗暴地发券是下策。我们需要分析他们“沉睡”的原因。一个可行的分析方向是:研究他们历史订单的商品品类和价格区间。
# 获取高价值流失用户的历史订单明细
high_value_churned_ids = high_value_churned['user_id'].tolist()
churned_orders_detail = df_orders[df_orders['user_id'].isin(high_value_churned_ids)]
# 分析他们最常购买的品类
top_categories = churned_orders_detail.groupby('product_category')['order_id'].count().sort_values(ascending=False).head(5)
print("高价值流失用户最常购买的Top5品类:")
print(top_categories)
假设分析发现,这批用户大量购买过“高端数码配件”和“精品咖啡器具”。那么召回策略可以这样设计:
- 个性化触达内容:推送的短信或App Push不应是“您有一张50元券待领取”,而是“您关注的XX品牌新款耳机保护套已到货”或“您之前购买的咖啡豆同系列新品上市,会员专享尝新价”。
- 专属优惠与特权:提供一张无门槛包邮券,或一个“老客专属新品体验资格”。对于高价值用户,优惠的“稀缺性”和“专属感”比面额更重要。
- 多渠道组合触达:通过短信+App Push+专属客服外呼(针对极高价值用户)进行组合触达,提高信息到达率。
效果评估:对比实验组(接收个性化召回策略)和对照组(不接收或接收通用策略),核心监控指标应包括:召回率(有多少人重新下单)、召回后的首单客单价、以及后续3个月的复购留存情况。你会发现,为这批“沉睡巨人”投入的专属资源,其ROI远高于广撒网式的促销。
2. 案例二:催化“成长引擎”——高潜力新客向忠实用户的转化
第二个案例关注的是用户生命周期的起点:新客。并非所有新客都值得投入同等的资源去培育。我们需要快速识别出那些最有可能成长为忠实用户的高潜力新客,并集中火力进行催化。
2.1 构建新客潜力评分模型
我们可以利用新用户注册后短期内(如7天或14天)的行为数据,构建一个简单的“潜力评分”模型,用于分层。关键行为指标可能包括:
- B1:浏览深度:访问页面数/访问时长。
- B2:互动广度:访问过的不同品类/频道数。
- B3:关键行为完成度:是否完成完善资料、领取新人礼、收藏商品、加入购物车等。
- B4:首单转化:是否在观察期内完成首次购买。
我们可以为每个行为赋予权重,计算一个潜力分。下面是一个示例:
# 假设 df_new_user_behavior 包含了新用户注册后14天内的行为聚合数据
# 字段示例:user_id, pv_count (浏览页面数), category_visited (访问品类数), task_completed (完成任务数), has_first_order (是否首单)
def calculate_potential_score(row):
score = 0
# 浏览深度得分(假设PV>20为高潜力)
if row['pv_count'] > 20:
score += 30
elif row['pv_count'] > 10:
score += 15
# 互动广度得分(访问品类>3为高潜力)
if row['category_visited'] > 3:
score += 25
elif row['category_visited'] > 1:
score += 10
# 关键行为得分(每完成一个关键任务加10分)
score += row['task_completed'] * 10
# 首单转化(直接赋予高权重)
if row['has_first_order']:
score += 50
return score
df_new_user_behavior['potential_score'] = df_new_user_behavior.apply(calculate_potential_score, axis=1)
# 根据分数进行分层
df_new_user_behavior['potential_tier'] = pd.cut(df_new_user_behavior['potential_score'],
bins=[-1, 50, 80, 200],
labels=['低潜力新客', '中潜力新客', '高潜力新客'])
print(df_new_user_behavior['potential_tier'].value_counts())
2.2 实施阶梯式培育策略
分层之后,运营策略的差异立现:
| 用户分层 | 特征 | 核心运营目标 | 策略举例 |
|---|---|---|---|
| 高潜力新客 | 浏览深、互动广、已首单 | 快速建立忠诚度,引导二次复购 | 1. 发放“进阶礼包”(含多张阶梯满减券) 2. 邀请加入新品体验群或VIP种子用户群 3. 推送个性化商品推荐(基于其浏览/购买记录) |
| 中潜力新客 | 有一定互动但未转化,或转化金额低 | 完成首单转化或提升首单价值 | 1. 发放“临门一脚”优惠券(如限时24小时使用的无门槛券) 2. 针对其浏览过的商品进行降价提醒或库存告急提醒 3. 推送“大家都在买”的爆款清单,降低决策成本 |
| 低潜力新客 | 访问浅,互动少 | 重新激发兴趣,建立认知 | 1. 推送平台核心卖点或爆款内容的图文/视频 2. 通过签到、小游戏等低门槛互动任务发放小额激励 3. 进行简单的问卷调查,了解其未深入使用的原因 |
对于高潜力新客,运营动作要快、要准、要有温度。例如,在用户完成首单的24小时内,自动触发一条带有个性化称呼的感谢短信,并附上一张“期待再次光临”的专属复购券,券的生效日期设置在预计商品可能用完的时间点(如购买咖啡豆后的两周)。
策略的关键在于自动化。通过将潜力评分模型与CRM或营销自动化平台对接,可以实现用户的实时分层与策略的自动执行。
3. 案例三:深耕“利润核心”——成熟期用户的交叉销售与向上销售
第三个案例聚焦于电商最宝贵的资产:成熟期用户(即活跃的复购用户)。我们的目标从“防止流失”升级为“最大化用户生命周期总价值(LTV)”,核心手段是交叉销售(Cross-Sell)和向上销售(Up-Sell)。
3.1 基于协同过滤的个性化推荐分层
要实现有效的交叉销售,离不开精准的推荐。我们可以利用用户的历史行为数据,通过简单的协同过滤思想,为用户分组,并为每组用户推荐最可能感兴趣的其他品类或更高价值商品。
这里我们使用一个基于物品相似度的简单方法(Item-Based CF):
# 构建用户-品类交互矩阵(这里用“购买”作为交互行为,也可用“浏览”、“收藏”加权)
user_category_matrix = df_orders.pivot_table(index='user_id',
columns='product_category',
values='order_amount',
aggfunc='count', # 计算购买次数
fill_value=0)
# 计算品类之间的余弦相似度
from sklearn.metrics.pairwise import cosine_similarity
category_similarity = cosine_similarity(user_category_matrix.T) # 转置后计算品类间相似度
category_similarity_df = pd.DataFrame(category_similarity,
index=user_category_matrix.columns,
columns=user_category_matrix.columns)
# 为指定品类(例如“智能手机”)寻找最相似品类
target_category = '智能手机'
similar_categories = category_similarity_df[target_category].sort_values(ascending=False).head(6)
print(f"与'{target_category}'最相似的Top5品类是:")
print(similar_categories.iloc[1:]) # 排除自己
假设我们发现“智能手机”与“蓝牙耳机”、“智能手表”、“手机壳膜”高度相似。那么,对于近期购买过“智能手机”的成熟期用户,我们可以将他们细分为一个“手机配件高意向群”。
3.2 设计场景化的增值服务与组合促销
基于上述分层,我们可以设计极具针对性的运营策略:
- 策略一:场景化捆绑销售。在用户购买手机的订单确认页或收货后的关怀页面,推荐“手机+耳机+保护壳”的优惠套装,价格低于单独购买总和。
- 策略二:增值服务推荐。对于购买高端机型(向上销售)的用户,推送“延保服务”、“碎屏险”或“以旧换新”服务。这需要结合用户购买的商品价格带进行更细的分层。
- 策略三:会员等级激励。告诉用户,再消费X元即可升级至更高级别的会员,享受更多权益(如更高折扣、专属客服、生日礼包)。这直接刺激了客单价的提升。
执行层面,这需要商品、运营、数据团队的紧密配合。数据团队提供分层名单和推荐商品列表,运营团队设计促销页面和话术,商品团队确保库存和供应链支持。
提示:交叉销售的成功率高度依赖于推荐的相关性和时机。滥用推荐或频繁打扰,反而会损害用户体验。A/B测试是优化推荐策略的必备工具。
4. 构建可迭代的用户分层系统:从脚本到平台
前三个案例展示了分层的具体应用,但若想持续发挥价值,我们需要将零散的脚本升级为一个可持续运行、可迭代优化的分层系统。
4.1 系统架构的核心组件
一个最小可用的用户分层系统至少包含以下模块:
- 数据源:整合订单数据、用户行为日志、商品信息、营销触点数据等。
- 数据处理与计算引擎:定期(如每日)运行分层模型,计算用户的最新分层标签。可以使用Airflow、Dagster等工具调度Python脚本,或直接使用SQL在数据仓库中实现。
- 标签/分层结果存储:将计算结果写入一张“用户分层标签表”,字段至少包含
user_id,segment_code,segment_name,calc_date。 - 应用层接口:通过API或直接数据库对接的方式,将分层结果提供给CRM系统、营销自动化平台、推荐系统、数据报表等下游业务方使用。
4.2 关键实施步骤与代码结构
以下是一个简化版的每日分层任务脚本框架:
# main_segmentation.py
import pandas as pd
from datetime import datetime
from utils.data_connector import get_db_connection # 自定义的数据连接模块
from segments.high_value_churned import segment_high_value_churned # 导入案例一的分层函数
from segments.new_user_potential import segment_new_user_potential # 导入案例二的分层函数
from segments.cross_sell_candidate import segment_cross_sell # 导入案例三的分层函数
def main():
"""每日用户分层主任务"""
today = datetime.now().date()
print(f"开始执行日期为 {today} 的用户分层计算...")
# 1. 从数据仓库获取所需源数据
conn = get_db_connection()
df_orders = pd.read_sql("SELECT * FROM dw.fact_orders WHERE order_date >= ...", conn)
df_behavior = pd.read_sql("SELECT * FROM dw.fact_user_behavior WHERE event_date >= ...", conn)
# ... 获取其他必要数据
conn.close()
# 2. 执行各个分层逻辑,得到带分层的用户DataFrame列表
segment_results = []
segment_results.append(segment_high_value_churned(df_orders, df_behavior, today))
segment_results.append(segment_new_user_potential(df_behavior, today))
segment_results.append(segment_cross_sell(df_orders, today))
# ... 可以添加更多分层规则
# 3. 合并所有分层结果(一个用户可能属于多个分层)
all_segments = pd.concat(segment_results, ignore_index=True)
# 4. 将结果写回业务数据库,供下游系统使用
output_conn = get_biz_db_connection()
# 先清空今日旧数据(根据实际需求选择更新策略)
all_segments['calc_date'] = today
all_segments.to_sql('user_segments_daily', output_conn, if_exists='append', index=False)
output_conn.close()
print("用户分层计算完成并已入库。")
if __name__ == '__main__':
main()
4.3 效果监控与模型迭代
分层模型不是一成不变的。必须建立效果监控闭环:
- 定义核心评估指标:对于每个分层策略,明确要提升的北极星指标(如“高价值流失用户召回率”、“高潜力新客次月复购率”、“成熟用户客单价提升幅度”)。
- 建立监控报表:在BI工具中创建仪表盘,每日/每周追踪各分层用户的数量变化、关键行为指标及转化漏斗。
- 定期复盘与调优:
- 阈值调优:RFM中的“高价值”阈值是否合理?流失天数定义是否需要随季节调整?
- 策略调优:针对某一分层用户的运营活动,其ROI是否达标?A/B测试哪种触达方式或优惠力度更有效?
- 模型迭代:是否引入了新的用户行为数据(如视频观看、客服咨询)?是否可以构建更复杂的预测模型(如使用机器学习预测流失概率或购买倾向)来替代或补充规则模型?
用户分层不是一次性的数据项目,而是一个“定义-执行-测量-学习”的持续循环。它要求运营和数据分析师紧密协作,不断从业务反馈中汲取营养,让模型越来越懂你的用户。当你发现,你的每一次促销活动都能像老朋友打招呼一样精准而自然时,用户复购率的提升便是水到渠成的结果。
更多推荐


所有评论(0)