# Datawhale AI夏令营-科大讯飞-用户新增预测挑战赛 赛季3

# 一、理解
[「用户新增预测挑战赛」](https://challenge.xfyun.cn/h5/detail?type=subscriber-addition-2025&ch=dwsfyc25-1)是由科大讯飞主办的一项数据科学竞赛，旨在通过机器学习方法预测用户是否为新增用户。
赛题提供了讯飞开放平台的海量应用数据作为训练样本，
参赛者需构建模型对测试数据中的用户进行分类，判断其是否为新增用户。
比赛属于二分类任务，评价指标采用F1分数，分数越高表示模型性能越好。

知识点提要 ：
解决实际业务问题：预测用户新增情况，优化产品迭代策略
掌握结构化数据处理全流程：特征工程、编码技巧、模型构建与调优
学习关键评估指标F1-score在二分类不平衡场景的应用
实践高级特征工程技巧：时间特征提取
掌握LightGBM模型和交叉验证的最佳实践

{{< admonition type=note title=相关知识点简介 open=false >}}
数据处理与特征工程： 如处理缺失值、异常值，解析JSON字段，从时间戳中提取特征（年、月、日、小时等），以及构造新的特征以提升模型表现。
分类模型与集成学习： 了解常用的分类算法（如逻辑回归、决策树、随机森林等），特别是梯度提升树（如LightGBM）的原理和使用。LightGBM是微软开发的高效梯度提升框架，具有训练速度快、内存占用低和精度高等优点。
模型评估与指标： 掌握二分类问题的评估指标，如精确率（Precision）、召回率（Recall）和F1分数的定义及计算方法。F1分数是精确率和召回率的调和均值，在正负样本不均衡时比准确率更有参考意义。
交叉验证： 理解交叉验证的作用，能够使用分层K折交叉验证来评估模型性能，避免因随机划分导致的偏差。
超参数调优： 熟悉如何调整模型的超参数（如学习率、树的深度等）以提高模型效果，常用方法包括网格搜索、随机搜索和贝叶斯优化等。
结果提交与分析： 了解竞赛提交的格式要求，能够将模型预测结果生成符合要求的CSV文件提交，并通过排行榜成绩分析模型改进方向。
{{< /admonition >}}
## 在开始建立AI模型之前，我们需要全面理解赛题的背景和要求，
对问题进行清晰的定义，并分析数据的特征，理解解题的要点和难点。这将有助于我们选择合适的模型和方法来解决问题。

**要解这道题，需要解决以下要点和难点：**
用户行为事件数据 → 用户级别预测
高维稀疏特征（设备/地域/行为ID）
正负样本不均衡（新增用户占比较少）
用户行为聚合：如何将事件级数据转化为用户特征
时间敏感特征：用户行为模式随时间变化

**要解这道题，需要解决以下要点和难点：**
用户行为事件数据 → 用户级别预测
高维稀疏特征（设备/地域/行为ID）
正负样本不均衡（新增用户占比较少）
用户行为聚合：如何将事件级数据转化为用户特征
时间敏感特征：用户行为模式随时间变化

## Baseline设计思路
| 模块       | 具体设计                                   | 参考依据/方法论                           |
|------------|--------------------------------------------|-------------------------------------------|
| 特征设计   | 提取时间特征（如时段、停留时长等）         | 用户行为分析理论（行为模式捕捉）          |
| 模型选择   | 采用LightGBM                               | - 模型稳定性高<br>- 训练效率快<br>- 数据预处理需求低 |
|            | 五折交叉验证                               | Scikit-learn最佳实践                      |
| 阈值优化   | 基于F1-score动态调整分类阈值               | 精确率-召回率平衡策略                     |

| 方案优点         | 技术实现                                 | 实际效益                         |
|------------------|------------------------------------------|----------------------------------|
| 避免数据泄露     | 采用五折目标编码（5-fold Target Encoding）| 防止验证集信息污染训练集         |
| 计算高效         | 基于LightGBM的直方图算法法与并行训练      | 训练速度比XGBoost快3-5倍         |

方案优点：
- 数据预处理完整
- 时间特征提取：将毫秒时间戳转换为 day 、 dayofweek 、 hour 等可解释的时序特征，捕捉用户行为的周期性规律。
- 类别特征编码：对 device_brand 、 operator 等高基数类别特征使用 LabelEncoder 进行编码，避免了独热编码导致的维度爆炸问题。
- 交叉验证策略：采用 StratifiedKFold 分层交叉验证，确保训练集和验证集的类别分布一致性，减少模型偏差。
- 模型选择合理
- 使用LightGBM作为基模型，适合高维稀疏数据，且对类别特征处理友好（如 udmap 中的JSON字段）。
- 阈值优化：通过动态调整分类阈值（ find_optimal_threshold ）最大化F1分数，适应类别不平衡问题（新增用户比例较低）。
- 特征重要性分析
- 输出特征重要性（ gain ），帮助识别关键特征（如 udmap 中的插件ID或助手ID），为后续特征优化提供方向。

方案不足：
- 特征工程深度不足
- 未充分挖掘 udmap 字段中的JSON信息（如 botId 、 pluginId ），仅将其作为类别特征处理，未提取组合特征（如 botId+pluginId 的交互）。
- 忽略用户行为序列模式（如用户访问频次、事件路径），未能构建基于时间窗口的统计特征（如24小时内访问次数、连续登录天数）。
- 模型调参空间有限
- 参数固定（如 max_depth=12 、 num_leaves=63 ），未通过网格搜索或贝叶斯优化探索更优参数组合。
- 未尝试集成模型（如CatBoost、XGBoost）或模型融合策略（如Stacking）提升泛化能力。

# 进阶方案
进阶要点1：如何挖掘用户行为信息
**时间序列特征**：
滑动窗口统计：计算用户在最近7天、30天内的行为频次（如 eid 事件发生次数）、活跃时长（连续登录天数）。
**RFM特征**：
Recency（最近一次行为时间）：计算用户最近一次行为距离当前时间的天数。
Frequency（行为频率）：用户总行为次数。
Monetary（行为价值）：假设某些事件（如 eid ）有经济价值，可定义虚拟价值字段。
**组合特征与高阶交互**
目标：通过特征交叉和非线性组合，捕捉复杂模式。
方法：
类别特征交叉：
将 device_brand 与 os_type 组合（如 Android_Samsung ），反映设备-系统的用户偏好。
**数值特征分桶与交叉**：
将将 common_ts 分桶为时间段（如早高峰、晚高峰），与 hour 特征交叉，分析用户在特定时段的行为差异。

新的进阶方案探索中。。。。
