AI 客户分群进化论:从规则分群到 AI 聚类再到动态标签 AI 客户分群进化论从规则分群到 AI 聚类再到动态标签一、客户分群这件事你做对了吗把用户分成新用户、活跃用户、沉睡用户——这大概是每个数据分析师都做过的事情。基于几行 SQL 的 IF-ELSE 规则简单粗暴地把用户打上标签。问题在哪呢用户的行为从来不是非黑即白的。一个沉睡用户昨天刚浏览了 5 个商品页面一个活跃用户可能三个月没下单只是天天签到领积分。规则分群太僵硬了它只能描述你已知的模式发现不了你未知的规律。今天这篇文章我想沿着客户分群的进化路线走一遍从规则的起点到 AI 聚类的升级再到动态标签体系。客户分群三阶段的进化路径二、V1规则分群——SQL 一把梭规则分群是最入门的玩法核心就是 SQL CASE WHEN-- 传统规则分群基于 RFM 模型的简单实现 -- R: 最近消费时间Recency -- F: 消费频次Frequency -- M: 消费金额Monetary SELECT user_id, DATEDIFF(CURRENT_DATE, last_order_date) AS recency_days, total_orders AS frequency, total_amount AS monetary, CASE -- 高价值用户最近消费 高频 高金额 WHEN DATEDIFF(CURRENT_DATE, last_order_date) 30 AND total_orders 5 AND total_amount 1000 THEN 高价值用户 -- 重要发展用户最近消费 高频但金额偏低 WHEN DATEDIFF(CURRENT_DATE, last_order_date) 30 AND total_orders 3 THEN 重要发展用户 -- 重要挽留用户曾经是高价值但已流失 WHEN DATEDIFF(CURRENT_DATE, last_order_date) 60 AND total_orders 5 AND total_amount 1000 THEN 重要挽留用户 -- 一般用户 WHEN DATEDIFF(CURRENT_DATE, last_order_date) 90 THEN 一般活跃用户 -- 流失用户 ELSE 流失用户 END AS user_segment FROM user_rfm_summary;这套逻辑的优点是快速、可解释、运营能看懂。但它的问题也很致命阈值是拍脑袋的为什么是 30 天而不是 28 天维度太少了只看交易行为忽略了浏览、收藏、加购等行为无法发现隐藏模式一些用户可能在浏览维度上高度相似但 RFM 完全看不到三、V2AI 聚类分群——让数据自己说话聚类的核心思想是让数据自己分组。我们选的是K-Means PCA 降维可视化的组合import numpy as np import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans from sklearn.decomposition import PCA from sklearn.metrics import silhouette_score def ai_user_segmentation(df, feature_cols, k_rangerange(3, 10)): 使用 K-Means 聚类进行 AI 驱动的用户分群 参数: df: 包含用户行为特征的 DataFrame feature_cols: 用于聚类的特征列 k_range: 尝试的聚类数量范围 返回: 最佳模型、聚类结果、每个簇的特征画像 # Step 1: 特征标准化聚类对尺度敏感必须标准化 scaler StandardScaler() X_scaled scaler.fit_transform(df[feature_cols]) # Step 2: 通过轮廓系数选择最佳 K 值 best_k 3 best_score -1 for k in k_range: kmeans KMeans(n_clustersk, random_state42, n_init10) labels kmeans.fit_predict(X_scaled) score silhouette_score(X_scaled, labels) if score best_score: best_score score best_k k print(fK{k}, 轮廓系数{score:.4f}) print(f\n最优 K 值: {best_k}, 轮廓系数: {best_score:.4f}) # Step 3: 用最优 K 值训练最终模型 final_model KMeans(n_clustersbest_k, random_state42, n_init10) df[cluster] final_model.fit_predict(X_scaled) # Step 4: 生成每个簇的特征画像 cluster_profiles df.groupby(cluster)[feature_cols].mean() # 用 PCA 降到 2 维用于可视化 pca PCA(n_components2) X_pca pca.fit_transform(X_scaled) df[pca_x] X_pca[:, 0] df[pca_y] X_pca[:, 1] print(f\n 各簇用户占比 ) print(df[cluster].value_counts(normalizeTrue).sort_index()) print(f\n 各簇特征均值 ) print(cluster_profiles.round(2)) return final_model, df, cluster_profiles # 聚类特征示例比 RFM 维度更丰富 # feature_cols [ # recency_days, # 距上次活跃天数 # order_count_30d, # 近30天下单数 # order_amount_90d, # 近90天消费金额 # browse_count_30d, # 近30天浏览商品数 # cart_add_count_30d, # 近30天加购次数 # coupon_use_count_30d, # 近30天用券次数 # avg_session_duration, # 平均会话时长秒 # review_count, # 累计评价数 # ]在一次实际分析中K-Means 帮我们发现了一个 RFM 规则完全没有捕捉到的群体——浏览狂魔型用户几乎不下单但每天浏览 50 个商品、加购 10 次但迟迟不下单。这群用户其实是最适合发券转化的目标但按 RFM 规则他们被分成了流失用户直接放弃了。聚类不是终点AI 聚类虽然比规则分群更科学但它有个致命局限分群结果是一次性的静态快照。一个用户今天是A 类用户明天行为变了他不会自动变成B 类——除非你重新跑一遍聚类。这就引出了第三阶段的问题如何让分群动态起来。四、V3动态标签体系——让分群活起来动态标签的核心思路是不把用户关在一个固定的群里而是给用户打上一系列实时更新的标签。这样运营同学可以根据活动目标灵活组合标签来圈定目标人群而不需要通过数据团队反复跑 SQL 取数。标签体系设计原则标签要分层级一级分类人口属性/行为偏好/消费能力/风险特征→ 二级标签性别/价格敏感度/流失风险→ 标签值标签要有生命周期不是所有标签都永久有效要定义 TTL标签要可组合运营应该能灵活组合标签而不是被固定的分群框住-- 动态标签的实时更新逻辑以 Kafka Flink 为例 -- 监听用户行为事件流实时更新标签值 -- 示例用户价格敏感度标签的计算逻辑 -- 触发条件用户使用优惠券 → 价格敏感度 1 -- 用户原价购买 → 价格敏感度 -1 -- 标签值范围: 0~100 UPDATE user_tags SET tag_value CASE WHEN tag_value 1 100 THEN 100 -- 上限 100 ELSE tag_value 1 END, updated_at NOW() WHERE user_id 12345 AND tag_name price_sensitivity AND event_type coupon_used; -- 使用了优惠券五、总结客户分群的进化不只是技术升级更是思维方式的变化V1 规则分群适合快速启动运营友好但边界僵硬、维度有限V2 AI 聚类能发现隐藏模式K-Means 轮廓系数选 K 是标准操作但结果是一次性快照V3 动态标签标签可组合、可过期、可实时更新是真正的千人千面进阶不是V3 替代 V1而是三者共存规则分群做日常运营聚类做深度分析动态标签做精细化触达标签体系最容易被忽视的是标签质量治理——无效标签要及时清理否则运营会被标签噪音淹没你们现在用的是哪个阶段的方法还在 RFM 吗还是已经有自己的标签平台了评论区说说现状一起交流~最后提醒一点这个方案在上生产之前建议先用灰度流量验证一周确认资源消耗在预期范围内再全量推送。我们在实际项目中因为跳过了这步有一次把缓存集群打挂了教训深刻。

本月热点