Method · ①
设计与准备 —— 把业务问题变成可计算的问题
「该优先给谁」不是一句话能算的,要先把它拆成两个机器学习任务,再定下 4 个关键设计决策。这 4 个决策是本项目严谨性的地基。
1时间切分(不用随机)
按 register_time 的 0.8 分位切分 —— 早 80%(183.0 万)训练 → 晚 20%(45.8 万)测试
真实部署是「用过去预测未来」,必须按注册时间先后切;随机切分会把同一批用户的未来信息漏进训练集、高估效果。时间切分后 test 是模型「从未见过」的未来用户,评估才可信。
2PR-AUC 而非准确率
付费率仅 2%,看 PR-AUC
全判「不付费」就有 98% 准确率却毫无价值;PR-AUC 对正类极稀敏感(基线 = 正类率 2.3%)。
3两阶段建模
① 分类 RandomForestClassifier(n_estimators=150, class_weight='balanced') ② 回归 GradientBoostingRegressor(log1p 尺度,只在付费用户内)
「会不会付」与「付多少」是两个分布:付费率 2% 极端不平衡 + 金额幂律长尾。混在一个模型里会被鲸鱼极端值带偏;两阶段各自优化,分类专注「识别」、回归专注「估值」,更稳、可解释。
4log1p 变换
对付费金额取 log(1+x)
金额服从幂律长尾(偏度 22.6),log 后偏度降到 1.27,回归不再被少数鲸鱼主导(见下方对比图)。