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

一、前置知识

GBDT:GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。

LightGBM:LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。LightGBM 框架中还包括随机森林和逻辑回归等模型。通常应用于二分类、多分类和排序等场景。

二、操作流程

1.导入模块

2.探索性数据分析

其中里面有不同的type类型对应的柱状图和id为00037f9cf的按dt为序列的折线图,其结果如下

3.特征工程

主要构建历史平移特征和窗口统计特征如下

合并训练数据和测试数据,并进行排序

  1. 合并:使用pd.concat()函数将测试集(test)和训练集(train)沿着行方向(axis=0)合并成一个新的DataFrame(data),同时忽略原有的索引(ignore_index=True)以生成一个新的连续索引。

  2. 排序:对合并后的数据(data)按照iddt两列进行降序排序(ascending=False)。这里假设id是唯一的标识符,而dt可能是时间戳或某种可以表示顺序的列。排序后,使用reset_index(drop=True)重置索引,使索引再次成为连续的整数。

    历史平移

  3. 接下来,通过一个循环,对每个id组内的target列进行历史平移操作。具体来说,对于每个id,创建一个新的列last{i}_target(其中{i}是循环变量,从10到29),该列的值是原target列值向前移动i个单位的结果。这是通过groupby(['id'])['target'].shift(i)实现的,其中shift(i)函数将值向前移动i个位置。

    窗口统计

  4. 然后,计算最近三个历史target值的平均值,并将这个平均值存储在新的列win3_mean_target中。这是通过将last10_targetlast11_targetlast12_target列的值相加后除以3来实现的。
  5. 进行数据切分

  6. 将合并并处理过的数据(data)根据target列的值是否非空切分为训练集(train)和测试集(test)。train包含所有target列非空(即已知目标值)的行,而test包含所有target列为空(即未知目标值,需要预测)的行。切分后,使用reset_index(drop=True)重置索引。
  7. 确定输入特征

  8. 最后,通过列表推导式确定训练集(train)的输入特征列名。这些列名是所有不在['id', 'target']列表中的列名,因为id通常用作标识符而不是输入特征,而target是我们要预测的目标值。这些列名将用于后续的模型训练过程中,作为模型的输入特征。

4.模型训练和测试集预测

本次是采用Lightgbm的模型

  • 这里选择原始给出训练数据集中dt为30之后的数据作为训练数据,之前的数据作为验证数据

  • 这样保证了数据不存在穿越问题

  • 数据切分
    • 函数首先根据 dt 列的值将训练集 train_df 切分为训练集 (trn_xtrn_y) 和验证集 (val_xval_y)。这里假设 dt 列的值可以表示时间顺序,并且使用 dt>=31 的数据作为训练集,dt<=30 的数据作为验证集。
  • 构建模型输入数据
    • 使用 LightGBM 的 Dataset 方法将训练集和验证集转换为 LightGBM 可以接受的格式。
  • 设置 LightGBM 参数
    • 定义了一组 LightGBM 的训练参数,包括 boosting_typeobjectivemetric 等,用于控制模型的行为和性能。
    • 训练模型
      • 使用 lgb.train 方法训练模型,其中 train_matrix 和 valid_matrix 作为训练集和验证集,50000 是训练轮次(可能需要根据实际情况调整以避免过拟合),valid_sets 用于在训练过程中监控验证集的性能,early_stopping_rounds 设置了早停轮次以避免过拟合。
    • 预测和评估
      • 在验证集和测试集上进行预测,并计算验证集的均方误差(MSE)作为离线分数评估。
    • 返回预测结果
      • 返回验证集和测试集的预测结果。                                                                                                                                                                                                                       个人感悟1.LightGBM 的参数需要根据具体任务和数据进行调整以达到最佳性能                       2.通过设置 early_stopping_rounds 和调整其他参数来防止过拟合                       

                                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值