这是一个天池项目的训练赛,主要背景如下:
商家有时会在特定日期,例如黑色星期五或是双十一开展大型促销活动或者发放优惠券以吸引消费者,然而很多被吸引来的买家都是一次性消费者,这些促销活动可能对销售业绩的增长并没有长远帮助。因此为解决这个问题,商家需要识别出哪类消费者可以转化为重复购买者。通过对这些潜在的忠诚客户进行定位,商家可以大大降低促销成本,提高投资回报率(Return on Investment, ROI)。众所周知的是,在线投放广告时精准定位客户是件比较难的事情,尤其是针对新消费者的定位。本项目主要的内容是使用提供的一些商家信息和新消费者信息,预测新消费者六个月内再次消费的概率
一、项目整体架构
1. 业务理解层
目标:识别在“双十一”期间首次购买的新用户中,哪些会在未来6个月内成为重复购买者。
价值:帮助商家精准营销,降低促销成本,提升ROI。
2. 数据层
数据源:
用户行为日志(点击、加购、购买、收藏)
用户画像(年龄、性别)
训练集与测试集(用户-店铺标签)
数据特点:匿名化、存在采样偏差、时间跨度明确(“双十一”前后)。
3. 数据处理层
数据集成:合并训练集、测试集、用户画像表。
类型转换与缺失值处理:统一数据类型,填充缺失值。
内存管理:及时释放大内存对象,使用 gc.collect()。
4. 特征工程层
用户维度特征(如 u1~u10):用户行为统计、交互商品/类目/品牌数、时间跨度、行为类型分布。
商家维度特征(如 m1~m9):商家被交互统计、交互用户/商品/品牌数、行为分布。
用户-商家联合特征(如 um1~um9):用户在特定商家的交互统计、行为分布、时间跨度。
交互比例特征(如 r1~r3):购买点击比。
类别特征编码:年龄、性别进行独热编码。
5. 建模预测层
模型选择:LightGBM 与 XGBoost(均为梯度提升树模型)。
训练方式:
单模型训练(train_test_split)
交叉验证训练(StratifiedKFold,10折)
评估指标:AUC(二分类概率预测)
结果输出:预测概率文件(submission_*.csv)
6. 验证与优化层
早停法:防止过拟合。
交叉验证:提升模型稳定性与泛化能力。
多模型融合(隐式):LGB 与 XGB 分别训练,可后续集成。
二、设计思路
1. 问题建模思路
将复购预测定义为二分类问题(label=1 表示复购)。
基于用户历史行为和商家特征构建预测模型。
2. 特征设计思路
行为频次与多样性:反映用户活跃度与兴趣广度。
时间跨度:反映用户持续参与度。
行为类型分布:反映用户购买意向强度。
交互比例特征:反映转化效率。
类别特征编码:将离散属性转化为模型可理解形式。
3. 建模策略思路
选择树模型:适合处理结构化特征,无需过多归一化。
交叉验证:应对数据分布不均衡,提升模型鲁棒性。
早停法:自动控制迭代次数,避免过拟合。
4. 工程实现思路
模块化处理:分步骤进行数据集成、特征提取、模型训练。
内存友好:及时删除中间变量,释放内存。
可复现性:代码结构清晰,便于调试与扩展。