资讯动态

天猫用户复购行为深度解析——从数据预处理到特征工程

发布时间:2026/8/12 0:04:20 来源:尧图企业网站定制
1. 复购预测的数据价值与业务场景当你在天猫上买了一件满意的商品商家最想知道的是这个客户下次还会再来吗这就是复购预测的核心价值。我在电商数据团队工作时每天要处理上千万条用户行为记录发现精准预测复购能帮商家节省30%以上的营销成本。复购率计算其实很有意思。假设100个用户中有20人产生复购行为其中10人复购1次另10人复购2次。用行为次数计算时复购率(10×110×2)/10030%比单纯计算复购人数20%更能反映真实价值。这也是为什么大促后运营部门总会追着我们要复购预测报告。数据预处理就像炒菜前的备料阶段。有次我们直接拿原始数据跑模型AUC只有0.65经过系统性的数据清洗和特征工程后同样的算法提升到0.82。这提醒我垃圾数据进垃圾结果出尤其在用户行为预测领域。2. 数据清洗的实战技巧2.1 缺失值处理的决策树面对用户表的年龄缺失我们开发了一套动态处理策略# 动态缺失值处理函数示例 def handle_missing(df): # 连续变量用中位数填充抗异常值 num_cols [age_range,purchase_freq] for col in num_cols: df[col].fillna(df[col].median(), inplaceTrue) # 分类变量用特殊值标记 cat_cols [gender,city_level] df[cat_cols] df[cat_cols].fillna(-999) # 超过70%缺失的直接剔除 thresh len(df) * 0.3 df.dropna(threshthresh, axis1, inplaceTrue) return df特别要注意品牌ID的缺失。我们发现约21.5%的品牌ID为空值进一步分析发现这些多是白牌商品。于是没有简单填充而是新建了is_white_brand特征反而让模型捕捉到了用户对品牌商品的偏好差异。2.2 异常值检测的三重验证用户行为数据中藏着各种妖孽数据。有次发现某个用户单日点击商品2000次排查发现是爬虫行为。现在我们用组合策略过滤异常值统计过滤删除3个标准差外的数据业务规则单日操作超过500次标记为异常行为序列检测用孤立森林识别异常模式from sklearn.ensemble import IsolationForest clf IsolationForest(n_estimators100) outliers clf.fit_predict(user_behavior[[clicks,cart_adds]]) user_clean user_behavior[outliers 1]3. 特征工程的黄金法则3.1 时间特征的魔法用户行为的时间模式往往藏着复购密码。我们开发的时间特征包括购买周期特征上次购买距今的天数行为密度最近7天内的操作频次时段偏好凌晨购物者往往更冲动# 时间窗口特征计算示例 def create_time_features(df): df[days_since_last_purchase] (df[current_date] - df[last_purchase_date]).dt.days df[week_activity] df.groupby(user_id)[action_type].rolling(7D).count().values df[is_night_owl] (df[purchase_hour].between(0,4)).astype(int) return df3.2 交叉特征的化学反应单纯的用户特征效果有限我们通过特征交叉发现了这些惊喜性别×商品类目女性用户在美妆类目的复购率是男性的2.3倍年龄×价格带25-30岁群体对300-500元商品的忠诚度最高行为序列组合收藏→加购→购买的转化路径用户复购概率提升47%用pandas快速生成交叉特征# 生成交叉特征 df[gender_x_category] df[gender].astype(str) _ df[category_id].astype(str) # 使用get_dummies进行编码 cross_features pd.get_dummies(df[gender_x_category], prefixcross)4. 样本不均衡的解决之道4.1 过采样实战技巧当正样本复购用户只有5%时我们测试了多种方案SMOTE变种在特征空间生成合成样本ADASYN根据样本密度自适应生成边界线SMOTE只对边界样本过采样from imblearn.over_sampling import BorderlineSMOTE bsmote BorderlineSMOTE(kindborderline-1) X_res, y_res bsmote.fit_resample(X_train, y_train)4.2 损失函数的秘密武器在XGBoost中调整scale_pos_weight参数效果显著# 计算正负样本比例 neg_pos_ratio float(len(y_train[y_train0]))/len(y_train[y_train1]) xgb_params { scale_pos_weight: neg_pos_ratio, objective: binary:logistic, eval_metric: auc }我们还发现focal loss对难样本的学习特别有效它自动降低易分类样本的权重def focal_loss(y_true, y_pred, alpha0.25, gamma2): pt tf.where(tf.equal(y_true, 1), y_pred, 1 - y_pred) return -tf.reduce_sum(alpha * tf.pow(1. - pt, gamma) * tf.math.log(pt))5. 模型可解释性实践5.1 SHAP值分析案例用SHAP分析发现有趣现象收藏行为对复购的贡献度比直接购买高18%跨店浏览用户的复购可能性是纯单品浏览用户的2.1倍优惠券使用间隔在7-14天时效果最佳import shap explainer shap.TreeExplainer(model) shap_values explainer.shap_values(X_test) # 可视化单个预测 shap.force_plot(explainer.expected_value, shap_values[0,:], X_test.iloc[0,:])5.2 特征重要性监控我们建立了特征健康度看板监控重要性漂移上周TOP特征本周下降超过20%触发告警相关性变化用户年龄与复购的相关性从0.15降到0.08填充率波动关键特征的缺失率突然增加# 特征重要性监控代码示例 def monitor_feature_importance(current, baseline, threshold0.2): change (baseline - current) / baseline alert_features change[abs(change) threshold].index.tolist() return alert_features在电商场景做复购预测最大的教训是没有放之四海而皆准的规则。去年双十一我们发现服装类目的复购信号在预售期就出现而家电类目要到售后阶段才显现。这要求我们针对不同类目建立差异化的特征工程方案。建议每季度做一次特征有效性审计剔除失效特征补充新的行为特征。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价