A386-基于xgboost的欠采样和Bagging集成实现电信用户流失预测
导出时间:2025/12/18 15:03:47
主要学习机器学习特征工程和模型涨点技巧:
项目概览
- 业务目标:识别未来一段时间内可能流失(Churn=“Yes”)的移动通信客户,用于驱动挽留、定价与关怀策略(如差异化优惠、专席外呼、账单优化建议)。
- 学习任务:二分类(流失/未流失)。
- 总体方法:基于梯度提升树(XGBoost)为基模,并结合欠采样+装袋(Bagging)集成提升鲁棒性;以F1 为核心目标,在交叉验证中同时选择阈值与模型配置,兼顾查全率与查准率的平衡。
2. 数据集与字段规范
2.1 数据结构
- 训练集:包含监督信号
Churn(Yes/No)。 - 泛化/提交集(Holdout):结构与训练集一致,但通常不含
Churn。 - 主键:
CustomerID,用于关联客户与最终导出结果。
2.2 字段示例与类型建议
以下为用户提供的 CSV 样例字段(节选),括号内为建议的数据类型/角色:
- 标识类
CustomerID(字符串,记录标识;训练时不参与建模)
- 目标变量
Churn(二分类标签:Yes/No)
- 连续/数值特征
MonthlyRevenue、MonthlyMinutes、TotalRecurringCharge、OverageMinutes、PercChangeMinutes、PercChangeRevenues、DroppedCalls、BlockedCalls、UnansweredCalls、CustomerCareCalls、ThreewayCalls、ReceivedCalls、OutboundCalls、InboundCalls、PeakCallsInOut、OffPeakCallsInOut、DroppedBlockedCalls、CallForwardingCalls、CallWaitingCalls、MonthsInService、UniqueSubs、ActiveSubs、Handsets、HandsetModels、CurrentEquipmentDays、AgeHH1、AgeHH2、ChildrenInHH、RetentionCalls、RetentionOffersAccepted、ReferralsMadeBySubscriber、AdjustmentsToCreditRating、HandsetPrice
- 二元(Yes/No)特征
HandsetRefurbished、HandsetWebCapable、TruckOwner、RVOwner、Homeownership、BuysViaMailOrder、RespondsToMailOffers、OptOutMailings、NonUSTravel、OwnsComputer、HasCreditCard、NewCellphoneUser、NotNewCellphoneUser、OwnsMotorcycle、MadeCallToRetentionTeam等
- 枚举/分类型特征
ServiceArea、IncomeGroup、CreditRating(有序)、PrizmCode、Occupation、MaritalStatus
- 注意:
CreditRating为有序类别,HandsetPrice虽以字符串呈现,但本项目中按数值处理。
3. 数据预处理
3.1 标识与目标拆分
- 训练时从特征集中移除
CustomerID与Churn(后者单独映射为二值目标),推理时仅移除CustomerID。
3.2 二元变量规范化
- 将所有取值严格为 “Yes/No” 的对象型字段统一映射为 1/0,确保后续算法直接消费。
3.3 有序/数值转换
- 有序特征:
CreditRating由等级标签映射为单调的整数刻度(1 表示“最高”,7 表示“最低”)。 - 价格字段:
HandsetPrice转换为数值(无法解析的取缺失)。
3.4 类别频率编码(基于目标)
- 对剩余的对象型离散特征,执行频率/目标统计编码:以训练集各类别对应的流失率(Yes 比例)替换原始类别;在验证与推理集上使用训练集统计并以全局流失率回填未知类别。该做法在树模型中常见,能以低维方式注入目标相关性并稳定泛化。
3.5 特征派生(衍生变量)
在原始计费与通话行为基础上构造以下业务比率与聚合特征(训练与推理一致):
AvgAgeHH:住户年龄的均值(基于AgeHH1、AgeHH2)TotalAgeHH:住户年龄的和RevenuePerMinute:单位通话分钟对应的月收入RecurringChargeRatio:月固定费用相对月收入的比值OverageFraction:超套餐分钟占月总分钟的比例
上述派生在缺失时使用中位数回填所需分量。
3.6 缺失值处理
- 对所有数值特征使用中位数填补,降低极端值敏感度并与树模型相容。
4. 模型结构与训练策略
4.1 基模型与动机
- **XGBoost(二元对数损失)**作为基模型,已在非线性、混合型特征(数值+编码后的类别)情境下成熟可靠;模型参数包含树深、学习率、子样本与列采样比例、正则项与最大步长等通用超参。
4.2 类不平衡处理与装袋集成
- 以欠采样平衡正负样本比:按网格选择负样本与正样本的比例(例如 1:1、2:1、3:1 等)。
- 每个子样本上训练一个基模型,组合形成装袋(Bagging)集成,通过对预测概率取平均以降低方差与过拟合风险。
- 集成大小(模型个数)同样纳入网格(如 5 或 7)。
4.3 超参数与决策阈值的联合选择(核心创新点)
- 采用分层 5 折交叉验证,对以下网格进行搜索:
- 欠采样比(负:正)、集成模型数、树深、学习率、列采样比例等;
- 在每组配置上,对验证折的概率输出进行聚合,并在候选阈值集合(覆盖概率分布的若干分位点)上计算逐折 F1 的均值,从而同时选出最优模型配置与分类阈值;
- 最终记录在最佳阈值处的F1、Precision、Recall、Accuracy 均值作为验证报告。
4.4 随机性与可复现
- 全流程固定随机种子(例如 42),包括折分与采样,确保结果可重复;集成训练与验证时共享同一随机源以保证公平比较。
5. 训练到推理的流水线
- 加载数据(训练/泛化)
- 准备数据(移除标识与目标、二元映射、有序/数值转换、目标频率编码、派生特征、缺失值填补)
- 交叉验证与选择:锁定最佳欠采样比、集成规模、XGBoost 参数与阈值(以 F1 最大化为准)
- 全量重训:在全训练集上,以最佳配置与阈值训练装袋集成
- 生成预测:对泛化集输出二元标签(基于最佳阈值),并导出
CustomerID+Churn的结果文件prediction_bagging.csv。
6. 评估指标与阅读方式
- 主指标:F1(优先兼顾查全与查准,适用于不平衡与业务代价近似对称时)
- 次指标:Precision、Recall、Accuracy(在最佳阈值处的折均值)
- 报告输出:控制台打印所选配置、阈值及对应交叉验证均值指标,便于复核与留档。