Datawhale AI夏令营(机器学习方向)

模型训练与优化笔记总结

一、项目背景与目标

  • 核心任务:基于用户设备数据(包含时间戳、设备信息、地域信息等特征),预测测试集中的设备是否为新设备(is_new_did),属于二分类问题。
  • 评估指标:使用F1分数作为主要评估指标,需通过阈值优化提升模型表现。

二、数据处理流程

  1. 数据加载

    • 加载训练集(train.csv)、测试集(testA_data.csv),合并为full_df用于特征工程。
    • 提取提交文件所需的did(设备唯一标识)。
  2. 时间特征工程

    • 将时间戳(common_ts)转换为datetime格式,提取day(日期)、dayofweek(星期几)、hour(小时)等时间特征。
    • 优化补充:增加分钟/秒、是否周末、时间周期性编码(正弦/余弦变换)、时间间隔(ts_diff)等特征,增强时间维度信息。
  3. 特征预处理

    • 类别特征处理:对device_brandoperator等类别特征使用LabelEncoder编码,将字符串转为数值。
    • 特殊特征处理:将udmap(JSON格式)解析为多个键值对特征(key0-key8),丰富特征维度。

三、关键分析与优化点

  1. 设备ID(did)重叠分析

    • 训练集与测试集的did存在重叠,可利用重叠部分的已知标签辅助预测,未重叠部分需模型推断。
  2. 特征工程增强

    • 目标编码(Target Encoding):对类别特征,基于训练集标签均值进行编码,避免过拟合。
    • 聚合特征:按diddevice_brand等分组,计算common_tshour的均值/标准差/最值,捕捉设备行为模式。
    • 统计特征:计算类别特征的出现频次(如device_brand_cnt),反映特征重要性。
  3. 模型选择与训练

    • 使用LightGBM作为基础模型(高效处理类别特征和大规模数据)。
    • 交叉验证策略:采用GroupKFolddid分组,避免同一设备数据同时出现在训练集和验证集,减少数据泄露。
  4. 阈值优化

    • 由于二分类问题中正负样本可能不平衡,通过PR曲线寻找最优阈值(最大化F1分数),而非固定使用0.5阈值。

四、常见问题与解决方案

  1. LightGBM模块未找到

    • 原因:环境未安装LightGBM库。
    • 解决:使用pip install lightgbmconda install -c conda-forge lightgbm安装,验证安装时需确保环境激活。
  2. 模型过拟合

    • 缓解措施:增加正则化参数(lambda_l1lambda_l2)、控制树深度(max_depth)、使用早停机制(early_stopping_rounds)。
  3. 特征重要性分析

    • 通过model.feature_importance(importance_type='gain')提取特征重要性,优先保留高贡献特征,简化模型。

五、优化方向总结

  1. 特征层面:增加更多设备行为序列特征(如连续操作间隔、高频操作时段)、地域细粒度特征(城市等级)。
  2. 模型层面:尝试集成学习(如LightGBM+XGBoost)、调参优化(学习率、叶子节点数)。
  3. 策略层面:对已知did直接复用标签,仅对未知did用模型预测,减少误差。

六、关键代码模块

  • 数据加载与合并、时间特征提取、类别特征编码、模型训练与交叉验证、阈值优化、结果提交。
  • 核心目标:通过特征工程和模型调优提升F1分数,确保预测结果的准确性和泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值