A386-基于xgboost的欠采样和Bagging集成实现电信用户流失预测

A386-基于xgboost的欠采样和Bagging集成实现电信用户流失预测

导出时间:2025/12/18 15:03:47
主要学习机器学习特征工程和模型涨点技巧:

项目概览

  • 业务目标:识别未来一段时间内可能流失(Churn=“Yes”)的移动通信客户,用于驱动挽留、定价与关怀策略(如差异化优惠、专席外呼、账单优化建议)。
  • 学习任务:二分类(流失/未流失)。
  • 总体方法:基于梯度提升树(XGBoost)为基模,并结合欠采样+装袋(Bagging)集成提升鲁棒性;以F1 为核心目标,在交叉验证中同时选择阈值与模型配置,兼顾查全率与查准率的平衡。

2. 数据集与字段规范

image.png

2.1 数据结构

  • 训练集:包含监督信号 Churn(Yes/No)。
  • 泛化/提交集(Holdout):结构与训练集一致,但通常不含 Churn
  • 主键CustomerID,用于关联客户与最终导出结果。

2.2 字段示例与类型建议

以下为用户提供的 CSV 样例字段(节选),括号内为建议的数据类型/角色:
  • 标识类
    • CustomerID(字符串,记录标识;训练时不参与建模)
  • 目标变量
    • Churn(二分类标签:Yes/No)
  • 连续/数值特征
    • MonthlyRevenueMonthlyMinutesTotalRecurringChargeOverageMinutesPercChangeMinutesPercChangeRevenuesDroppedCallsBlockedCallsUnansweredCallsCustomerCareCallsThreewayCallsReceivedCallsOutboundCallsInboundCallsPeakCallsInOutOffPeakCallsInOutDroppedBlockedCallsCallForwardingCallsCallWaitingCallsMonthsInServiceUniqueSubsActiveSubsHandsetsHandsetModelsCurrentEquipmentDaysAgeHH1AgeHH2ChildrenInHHRetentionCallsRetentionOffersAcceptedReferralsMadeBySubscriberAdjustmentsToCreditRatingHandsetPrice
  • 二元(Yes/No)特征
    • HandsetRefurbishedHandsetWebCapableTruckOwnerRVOwnerHomeownershipBuysViaMailOrderRespondsToMailOffersOptOutMailingsNonUSTravelOwnsComputerHasCreditCardNewCellphoneUserNotNewCellphoneUserOwnsMotorcycleMadeCallToRetentionTeam
  • 枚举/分类型特征
    • ServiceAreaIncomeGroupCreditRating(有序)、PrizmCodeOccupationMaritalStatus
  • 注意CreditRating有序类别HandsetPrice 虽以字符串呈现,但本项目中按数值处理。

3. 数据预处理

3.1 标识与目标拆分

  • 训练时从特征集中移除 CustomerIDChurn(后者单独映射为二值目标),推理时仅移除 CustomerID

3.2 二元变量规范化

  • 将所有取值严格为 “Yes/No” 的对象型字段统一映射为 1/0,确保后续算法直接消费。

3.3 有序/数值转换

  • 有序特征CreditRating 由等级标签映射为单调的整数刻度(1 表示“最高”,7 表示“最低”)。
  • 价格字段HandsetPrice 转换为数值(无法解析的取缺失)。

3.4 类别频率编码(基于目标)

  • 对剩余的对象型离散特征,执行频率/目标统计编码:以训练集各类别对应的流失率(Yes 比例)替换原始类别;在验证与推理集上使用训练集统计并以全局流失率回填未知类别。该做法在树模型中常见,能以低维方式注入目标相关性并稳定泛化。

3.5 特征派生(衍生变量)

在原始计费与通话行为基础上构造以下业务比率与聚合特征(训练与推理一致):
  • AvgAgeHH:住户年龄的均值(基于 AgeHH1AgeHH2
  • 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. 训练到推理的流水线

  1. 加载数据(训练/泛化)
  2. 准备数据(移除标识与目标、二元映射、有序/数值转换、目标频率编码、派生特征、缺失值填补)
  3. 交叉验证与选择:锁定最佳欠采样比、集成规模、XGBoost 参数阈值(以 F1 最大化为准)
  4. 全量重训:在全训练集上,以最佳配置与阈值训练装袋集成
  5. 生成预测:对泛化集输出二元标签(基于最佳阈值),并导出 CustomerID + Churn 的结果文件 prediction_bagging.csv

6. 评估指标与阅读方式

  • 主指标:F1(优先兼顾查全与查准,适用于不平衡与业务代价近似对称时)
  • 次指标:Precision、Recall、Accuracy(在最佳阈值处的折均值)
  • 报告输出:控制台打印所选配置、阈值及对应交叉验证均值指标,便于复核与留档。

电信用户流失预测项目_01.png