当前位置: 首页 > news >正文

Datawhale AI 夏令营第一期(机器学习方向)Task2 笔记:用户新增预测挑战赛 —— 从业务理解到技术实现

Datawhale AI夏令营第一期(机器学习方向)Task2笔记:用户新增预测挑战赛——从业务理解到技术实现

一、任务核心:业务与技术的“翻译”

本次Task聚焦“用户新增预测挑战赛”的核心逻辑,核心目标是锻炼“将业务问题转化为AI技术问题”的能力,具体包含两大能力:

  • 业务透视眼:从“识别新增用户”的业务需求倒推特征设计逻辑
  • 数据诊断术:通过可视化等手段挖掘特征中的有效信息

二、赛题核心认知:二分类任务的本质

1. 任务定义

“用户新增预测挑战赛”是由科大讯飞主办的二分类任务,需基于用户行为数据预测用户是否为新增用户(目标字段is_new_did,1表示新增,0表示非新增),评价指标为F1分数(分数越高模型性能越好)。

2. 业务与技术价值

类型具体价值
行业价值精准预测用户增长趋势、优化产品迭代方向;降低用户获取成本;为AI落地提供量化依据
技术价值解决实际用户增长预测问题;验证AI在用户行为分析中的有效性;建立可复用方法论

3. 数据基础

  • 输入数据:包含15个原始字段的用户行为事件记录,核心字段包括:
    • did:用户唯一标识(关键)
    • common_ts:事件发生时间戳(时间特征来源)
    • udmap:事件自定义属性(JSON格式,含助手/插件ID)
    • 其他字段:设备品牌、网络类型、地域信息等基础属性
  • 输出要求:CSV文件,仅含is_new_did列(值为0或1)

4. 数据关键特征(探索发现)

  • 测试集中93%的用户(did)出现在训练集中(可直接复用已知标签)
  • 训练集中88%的用户标签为0(正负样本不平衡)
  • 事件级数据需转化为用户级特征(需按did聚合)

三、解题核心:要点、难点与思路

1. 核心要点与难点

类别具体内容
核心要点从事件级数据提取用户级特征;处理高维稀疏特征;平衡正负样本;捕捉时间敏感特征
难点用户行为聚合(事件→用户);高维稀疏特征处理;样本不平衡;时间模式捕捉

2. 基础解题思路

  • 模型选择:优先树模型(如LightGBM),原因是训练速度快、对高维稀疏特征处理友好
  • 特征方向:时间特征(时段、行为间隔等)、用户行为聚合特征(行为次数、首次/末次行为时间等)
  • 样本处理:利用“测试集与训练集用户重叠”特性——已知标签直接复用,未知标签建模预测

四、Baseline方案:从设计到实现

1. 方案设计逻辑

模块具体设计依据/优势
特征设计提取时间特征(时段、停留时长等)符合用户行为分析理论,捕捉行为模式
模型选择LightGBM稳定性高、训练效率快、对预处理需求低
验证方法五折交叉验证避免单次验证的随机性,提升模型评估可靠性
阈值优化基于F1-score动态调整阈值平衡精确率与召回率,适配样本不平衡场景

2. 核心优势与待改进点

类别具体内容
方案优势- 采用五折目标编码,避免数据泄露
- 基于LightGBM的并行训练,速度比XGBoost快3-5倍
待改进点- udmap(JSON字段)未充分解析
- 缺乏特征重要性筛选
- 未处理设备品牌长尾分布

3. 核心代码逻辑

(1)交叉验证建模

通过分层K折(Stratified K-Fold)确保各折中正负样本比例一致,结合早停机制(early stopping)防止过拟合:

n_folds = 5
kf = StratifiedKFold(n_splits=n_folds, shuffle=True, random_state=42)for fold, (train_idx, val_idx) in enumerate(kf.split(X_train, y_train)):X_tr, X_val = X_train.iloc[train_idx], X_train.iloc[val_idx]y_tr, y_val = y_train.iloc[train_idx], y_train.iloc[val_idx]# 创建数据集train_set = lgb.Dataset(X_tr, label=y_tr)val_set = lgb.Dataset(X_val, label=y_val)# 模型训练(早停机制)model = lgb.train(params, train_set,num_boost_round=5000,valid_sets=[train_set, val_set],callbacks=[lgb.early_stopping(stopping_rounds=200), lgb.log_evaluation(200)])
(2)阈值优化(最大化F1)

默认0.5阈值未必最优,针对正样本稀少场景(如本任务),在0.1-0.4范围搜索最优阈值:

def find_optimal_threshold(y_true, y_pred_proba):best_threshold = 0.5best_f1 = 0# 聚焦正样本稀少场景的候选阈值for threshold in [0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4]:y_pred = (y_pred_proba >= threshold).astype(int)f1 = f1_score(y_true, y_pred)if f1 > best_f1:best_f1 = f1best_threshold = thresholdreturn best_threshold, best_f1

五、上分思路:快速提升方向

1. 特征工程优化

  • 解析udmap:提取JSON中的botIdpluginId,构建用户使用的助手/插件数量、类型等特征
  • 时间特征深化:用户首次/末次行为时间、行为间隔、活跃时段分布(如是否在工作日活跃)
  • 用户行为聚合:按did聚合事件,计算行为次数、涉及模块/事件类型数量等

2. 数据利用优化

  • 复用已知标签:测试集中与训练集重叠的did,直接使用训练集标签(无需预测)
  • 处理长尾分布:对设备品牌等长尾特征进行分组(如合并低频品牌为“其他”)

3. 模型与验证优化

  • 特征筛选:基于特征重要性剔除无效特征,减少噪声
  • 样本平衡:采用SMOTE等方法处理正负样本不平衡(需注意避免数据泄露)
  • 模型融合:结合LightGBM与XGBoost、CatBoost等模型的预测结果

六、总结与收获

本次Task通过“用户新增预测”案例,系统学习了从业务理解到技术实现的全流程:

  1. 明确二分类任务的核心是“平衡精确率与召回率”(F1指标的意义)
  2. 掌握了基于用户行为数据的特征设计逻辑(时间特征、聚合特征)
  3. 理解了Baseline方案的设计思路(模型选择、交叉验证、阈值优化)
  4. 获得了上分的具体方向(特征深化、数据复用、模型优化)

后续将基于这些思路,进一步实践进阶的特征工程与模型调优方法。


文章转载自:
http://camomile.wjrtg.cn
http://adenoacanthoma.wjrtg.cn
http://algologist.wjrtg.cn
http://altazimuth.wjrtg.cn
http://basically.wjrtg.cn
http://actuarial.wjrtg.cn
http://byrd.wjrtg.cn
http://aetatis.wjrtg.cn
http://affair.wjrtg.cn
http://chalybeate.wjrtg.cn
http://bosie.wjrtg.cn
http://announcement.wjrtg.cn
http://adenovirus.wjrtg.cn
http://angrily.wjrtg.cn
http://blowpipe.wjrtg.cn
http://cattleship.wjrtg.cn
http://anaesthetist.wjrtg.cn
http://christiana.wjrtg.cn
http://ataman.wjrtg.cn
http://batdambang.wjrtg.cn
http://aniseikonic.wjrtg.cn
http://befit.wjrtg.cn
http://bernardine.wjrtg.cn
http://centrosome.wjrtg.cn
http://breughel.wjrtg.cn
http://capsheaf.wjrtg.cn
http://chancery.wjrtg.cn
http://argentate.wjrtg.cn
http://cate.wjrtg.cn
http://aiglet.wjrtg.cn
http://www.dtcms.com/a/281352.html

相关文章:

  • 如何理解flex: 1 1 50%
  • 【Unity基础】Unity中元素的层级排序
  • WPF,Winform,HTML5网页,哪个UI开发速度最快?
  • 线程(一) linux
  • 前端医疗生命体征
  • MIPI DSI(四) video 和 command 模式
  • 比较vue和react框架
  • Windows 下 Visual Studio 开发 C++ 项目的部署流程
  • Spring Boot 启动原理揭秘:从 main 方法到自动装配
  • 判断QMetaObject::invokeMethod()里的函数是否调用成功
  • Process Lasso:提升电脑性能的得力助手
  • C++20 协程参考手册详解 - 源自 cppreference.com
  • Expression 类的静态方法
  • PostgreSQL 大数据量(超过50GB)导出方案
  • 国产化Excel处理组件Spire.XLS教程:在 C# 中生成 Excel文件
  • 关于LM74700-Q1低IQ理想二极管的应用与参数极限
  • saltstack安装部署
  • 对象数组列表转成树形结构--树形结构转成列表(处理菜单)
  • ORA-06413: 连接未打开
  • 设计网站集:经济信息数据 统计数据 + 农业 + 金属 + 药品 + 电子 + 加密货币 + 债券 + 期货 + 其他
  • 构建企业级项目管理全面数字化运营体系︱易趋(蓝云软件)总裁唐智勇
  • 东鹏饮料牵手盈飞无限质量管理系统(QMS)
  • 多方学习与安全多方计算
  • 电动汽车制动系统及其工作原理
  • 梁的振动特征函数分析
  • 算法学习笔记(1):组合数
  • 论文 视黄素与细胞修复
  • 可下载或通过爬虫获取疾病相关数据的网站及平台,涵盖临床数据、基因关联、药品信息等方向,并附注数据特点与获取方式:(不公开)
  • PHP安全漏洞深度解析:文件包含与SSRF攻击的攻防实战
  • keeplived双击热备配置