K-Means 聚类实战:电商用户分群 2 大核心步骤与 7 个特征工程要点 K-Means 聚类实战电商用户分群 2 大核心步骤与 7 个特征工程要点当电商平台积累了大量用户行为数据后如何从这些数据中挖掘出有价值的用户分群信息K-Means 聚类算法提供了一种有效的解决方案。本文将深入探讨如何通过数据预处理和特征工程两大核心步骤构建高质量的电商用户分群模型。1. 数据预处理构建高质量分析基础数据预处理是K-Means聚类成功的关键前提。电商数据通常包含大量噪声和异常值直接使用原始数据会导致聚类效果大打折扣。以下是数据预处理的四个关键环节1.1 数据清洗与转换电商数据清洗需要特别注意三类问题缺失值处理订单金额、用户ID等关键字段缺失会严重影响分析数据类型转换日期时间字段需要转换为datetime格式分类变量需要编码重复记录处理同一订单被多次记录会导致数据失真# 示例电商数据基础清洗 df[order_date] pd.to_datetime(df[order_date]) # 日期转换 df[user_id] df[user_id].astype(str) # 用户ID转为字符串 df df.drop_duplicates(subset[order_id]) # 去除重复订单1.2 异常值检测与处理电商数据中常见的异常值类型及处理方法异常类型检测方法处理方式超高额订单IQR方法/Z-score截断或删除异常购买频率时间序列分析单独分析退货欺诈订单业务规则过滤标记排除# 使用IQR方法检测异常订单金额 Q1 df[order_amount].quantile(0.25) Q3 df[order_amount].quantile(0.75) IQR Q3 - Q1 df df[~((df[order_amount] (Q1 - 1.5*IQR)) | (df[order_amount] (Q3 1.5*IQR)))]1.3 特征衍生与扩展从原始数据中提取更有价值的特征时间特征购买时段、星期几、是否节假日行为特征浏览-购买转化率、加购未买商品数RFM特征最近购买时间(Recency)、购买频率(Frequency)、消费金额(Monetary)提示时间特征的周期性处理对电商聚类特别重要考虑使用sin/cos转换处理星期、月份等周期性特征1.4 数据标准化K-Means基于距离计算不同量纲的特征需要标准化from sklearn.preprocessing import StandardScaler scaler StandardScaler() scaled_features scaler.fit_transform(df[[recency,frequency,monetary]])2. 特征工程7个关键特征构建策略特征工程决定了聚类结果的可解释性和业务价值。以下是电商用户分群中最关键的7类特征2.1 消费行为特征矩阵构建用户消费行为的完整画像购买频次单位时间内的订单数量客单价分布平均订单金额及波动情况品类偏好各商品类别的购买占比促销敏感度参与促销活动的订单比例# 计算用户消费行为特征 user_features df.groupby(user_id).agg({ order_id: count, # 购买频次 order_amount: [mean,std], # 客单价均值与波动 is_promotion: mean # 促销参与率 })2.2 时间模式特征用户的时间行为模式往往能反映其消费习惯购买时间偏好早晨/午后/晚间/深夜购物间隔两次购买的平均间隔天数活跃周期用户活跃的高峰时间段2.3 渠道偏好特征不同渠道的用户可能具有显著差异渠道类型特征构建方法移动端移动订单占比PC端PC订单占比小程序小程序使用频率社交媒体社交引流转化率2.4 商品交互特征用户与商品的交互深度反映了其兴趣强度浏览深度平均每次访问浏览的商品数量收藏行为收藏商品与购买商品的比例评价参与度留下评价的订单比例2.5 支付与物流特征支付和物流选择也能反映用户特征# 支付方式特征编码 payment_mapping { 信用卡:0, 支付宝:1, 微信支付:2, 货到付款:3, 分期付款:4 } df[payment_encoded] df[payment_method].map(payment_mapping)2.6 用户价值分层特征基于RFM模型构建用户价值指标# RFM评分计算 df[R_score] pd.qcut(df[recency], q5, labels[5,4,3,2,1]) df[F_score] pd.qcut(df[frequency], q5, labels[1,2,3,4,5]) df[M_score] pd.qcut(df[monetary], q5, labels[1,2,3,4,5]) df[RFM_score] df[R_score].astype(int) df[F_score].astype(int) df[M_score].astype(int)2.7 行为序列特征用户行为序列可以揭示更深层的模式购买路径浏览→加购→购买的转化路径跨品类关联先后购买不同品类的关联性行为变化趋势最近期的行为模式变化3. 模型训练与优化完成特征工程后进入模型训练阶段3.1 确定最佳K值使用肘部法则和轮廓系数结合确定最佳聚类数from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score sse [] silhouette [] K_range range(2,10) for k in K_range: kmeans KMeans(n_clustersk, random_state42) kmeans.fit(scaled_features) sse.append(kmeans.inertia_) silhouette.append(silhouette_score(scaled_features, kmeans.labels_))3.2 模型训练与评估# 最终模型训练 best_k 4 # 根据肘部法则确定 final_model KMeans(n_clustersbest_k, random_state42) clusters final_model.fit_predict(scaled_features) # 评估轮廓系数 silhouette_avg silhouette_score(scaled_features, clusters) print(f轮廓系数: {silhouette_avg:.3f})3.3 聚类结果分析分析各簇特征为业务提供洞察高价值活跃用户高频次、高金额、多渠道潜在价值用户中等频次但金额增长快价格敏感用户主要购买促销商品流失风险用户近期活跃度下降4. 业务应用与策略制定将聚类结果转化为业务行动4.1 精准营销策略针对不同分群制定差异化策略用户分群营销策略预期效果高价值用户专属VIP服务提升忠诚度潜在用户交叉销售推荐提高客单价价格敏感用户限时促销刺激复购流失风险用户唤醒优惠防止流失4.2 产品与体验优化根据分群反馈优化产品为高频用户优化快速购买流程为价格敏感用户提供更多折扣信息为高价值用户提供专属客服通道4.3 动态分群更新机制建立持续更新的分群体系每周更新用户特征数据每月重新训练聚类模型季度性评估分群业务效果注意避免过度依赖静态分群用户行为会随时间变化需要建立动态更新机制