从数据到增长:三个实战案例解析用户分层如何驱动电商复购

在电商这片红海中,获取一个新客户的成本正变得越来越高,而维系一个老客户的成本则相对低廉得多。因此,“复购率”早已不是运营报表上一个冰冷的百分比,它直接关系到企业的利润生命线。许多团队都明白要“精细化运营”,但具体如何下手?用户分层模型,正是将“精细化”从口号变为行动的关键桥梁。它不是一套复杂的理论,而是一套可以直接落地、用数据驱动决策的实战工具。对于电商运营和数据分析师而言,掌握用户分层,意味着你能清晰地看到不同价值用户的行为轨迹,并像一位经验丰富的指挥官,为不同部队制定最有效的作战策略。本文将抛开冗长的理论框架,直接切入三个真实的业务场景,手把手展示如何用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)

假设分析发现,这批用户大量购买过“高端数码配件”和“精品咖啡器具”。那么召回策略可以这样设计:

  1. 个性化触达内容:推送的短信或App Push不应是“您有一张50元券待领取”,而是“您关注的XX品牌新款耳机保护套已到货”或“您之前购买的咖啡豆同系列新品上市,会员专享尝新价”。
  2. 专属优惠与特权:提供一张无门槛包邮券,或一个“老客专属新品体验资格”。对于高价值用户,优惠的“稀缺性”和“专属感”比面额更重要。
  3. 多渠道组合触达:通过短信+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 系统架构的核心组件

一个最小可用的用户分层系统至少包含以下模块:

  1. 数据源:整合订单数据、用户行为日志、商品信息、营销触点数据等。
  2. 数据处理与计算引擎:定期(如每日)运行分层模型,计算用户的最新分层标签。可以使用Airflow、Dagster等工具调度Python脚本,或直接使用SQL在数据仓库中实现。
  3. 标签/分层结果存储:将计算结果写入一张“用户分层标签表”,字段至少包含user_id, segment_code, segment_name, calc_date
  4. 应用层接口:通过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 效果监控与模型迭代

分层模型不是一成不变的。必须建立效果监控闭环:

  1. 定义核心评估指标:对于每个分层策略,明确要提升的北极星指标(如“高价值流失用户召回率”、“高潜力新客次月复购率”、“成熟用户客单价提升幅度”)。
  2. 建立监控报表:在BI工具中创建仪表盘,每日/每周追踪各分层用户的数量变化、关键行为指标及转化漏斗。
  3. 定期复盘与调优
    • 阈值调优:RFM中的“高价值”阈值是否合理?流失天数定义是否需要随季节调整?
    • 策略调优:针对某一分层用户的运营活动,其ROI是否达标?A/B测试哪种触达方式或优惠力度更有效?
    • 模型迭代:是否引入了新的用户行为数据(如视频观看、客服咨询)?是否可以构建更复杂的预测模型(如使用机器学习预测流失概率或购买倾向)来替代或补充规则模型?

用户分层不是一次性的数据项目,而是一个“定义-执行-测量-学习”的持续循环。它要求运营和数据分析师紧密协作,不断从业务反馈中汲取营养,让模型越来越懂你的用户。当你发现,你的每一次促销活动都能像老朋友打招呼一样精准而自然时,用户复购率的提升便是水到渠成的结果。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐