1、赛题提分策略
提升模型预测精准度的一个关键步骤是构建特征工程,识别哪些信息能够揭示数据的规律与趋势。另外尝试多样化的模型,从经典的统计方法到机器学习、深度学习算法,以及它们的组合与集成。通过不断的实验、试错与反思,在实践中增强模型构建与调优能力。
2、特征工程
2.1 时间序列平稳性检验
时间序列的平稳性验证方法包括观察曲线波动的图像分析法、统计均值和方差等的简单统计法、通过统计检验判断平稳性的假设检验法,假设检验法有KPSS检验、Phillips-Perron检验及ADF检验等。ADF检验通过比较统计量与临界值来判断时间序列是否存在单位根,从而判断其是否平稳,p值小于显著性水平(如0.05),则拒绝原假设,认为是平稳的;否则,认为是非平稳的。ADF检验代码如下所示:
id为‘00037f39cf’的target的ADF检验:
id为‘00039a1517’的target的ADF检验:
以上图例表示以id分组的target是平稳序列,平稳性序列在均值、方差等统计性质上不随时间变化,相对简单,但在进行统计建模时,仍需进行特征工程提取有用的信息来改善模型的性能。根据具体的任务、目标和数据集的特性进行相应的历史平移、窗口统计、差分以及基于专业领域知识的特征构造等。
2.2 历史平移
历史平移是时间序列中的一种常见的特征工程方法,主要在于捕捉时间序列数据中的历史信息,通过历史平移获取上个阶段的信息,这些信息对于预测未来的值可能具有关键作用。它将序列数据集中某个变量的值沿时间轴向后移动一定的步数,如平移一个单位的特征构建,可以将d-1时间的信息给到d时间,d时间信息给到d+1时间,生成新的特征,帮助模型捕捉到数据中的时间依赖关系,从而提高预测的准确性。即使序列平稳,这种滞后处理对于预测任务也特别有用。
以上代码基于'id'
列对
'target'
列进行了分组,将每个组内的'target'
值按照指定的平移量(从10到35)进行了平移。
2.3 历史平移+差分特征
时间序列中的数据往往包含趋势、季节性和随机噪声等成分,差分操作可以大致消除线性趋势,使得处理后的数据更加平稳。差分还可揭示出具有明显周期性的数据的变化规律,在时间序列中是一个不可或缺的工具,其构造出的新特征输入到模型中可提高模型的预测性能。
以上代码对平移后的列target_shift10进行了差分操作,生成了一阶、二阶和三阶差分。对于差分特征,应根据数据的特性和分析目标来合理选择差分操作的阶数。过高的阶数可能会导致数据失去太多的信息,而过低的阶数则可能无法充分去除数据中的趋势或周期性。
2.4 窗口统计
窗口统计可以在序列上构建不同的窗口大小,计算窗口范围内数据的统计量,如均值、最大值、最小值、中位数、标准差等,来生成新特征的过程。这些统计量可以反映最近阶段数据的变化情况。窗口统计可捕捉平稳性序列中更细微的变化或波动。
2.5 历史平移+窗口统计
历史平移加窗口统计的方法可以捕捉到更多的复杂动态的信息,被广泛应用于时间序列预测任务中。
以上代码计算了每个id
对应的target_shift10
值在不同窗口大小(win
)下的平均值、最大值、最小值、总和以及标准差。通过计算不同窗口大小下的统计量,可以捕捉到数据的不同动态特性,进而帮助构建更准确的预测模型。
3、模型融合
3.1 加权平均融合
模型融合是指结合多个模型的预测结果来提高整体预测性能,当单独模型的性能达到瓶颈时,通过模型融合可以有效地提升模型的泛化能力和稳定性。在这部分代码中构建了模型融合函数cv_model函数,内部选择使用lightgbm、xgboost和catboost模型,将三个模型的结果进行取平均进行融合。此加权平均融合提交结果评分为236.5871。函数设计如下:
(1)定义cv_model函数及所需参数(数据集、模型参数及交叉验证的折数等)
(2)模型定义(LightGBM、XGBoost和CatBoost模型)
LightGBM:
XGBoost:
CatBoost:
(3)返回模型训练预测的结果。
(4)设置三个模型参数,调用cv_model函数
(5)将三个模型的预测结果进行加权平均
(6)保存结果文件
3.2 stacking融合
分层模型集成框架Stacking,也称为堆叠泛化,它通过组合多个模型的预测,利用各个基学习器的优势,来提高模型的泛化能力。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层模型以第一层基学习器的输出作为特征加入训练集进行再训练。以下为lightgbm和xgboost两个模型融合的代码示例:
4、深度学习方案尝试
深度学习是机器学习的一个分支,通过构建深层神经网络实现对复杂数据的自动学习和表示,通常包含多个隐藏层,这些隐藏层通过非线性变换将输入数据转换为更高层次的抽象表示,能够自动从原始数据中捕捉其复杂模式和特征。目前深度学习广泛应用于自然语言处理、图像处理、推荐系统等各个领域,其流行框架有Torch、TensorFlow、Keras等。深度学习的建模步骤如下所示:
(1)定义数据预处理函数:
(2)定义模型 :
在模型定义中选择合适的模型架构(如LSTM用于时间序列预测)很重要,其次,定义模型输入层、隐藏层(可以包括LSTM层、Dense层等)、输出层,配置模型优化器、损失函数和评估指标。
(3)设置构建和训练模型参数:
在构建和训练模型时可能需要调整模型参数(如学习率、隐藏层单元数等)以优化性能。
(4)预处理函数调用:
(5)构建模型:
(6)训练模型:
(7)模型预测:
5、优化方案尝试
Task3的特征工程提取及模型融合在一定程度上提升了模型预测的精确度和稳定性,此赛题中的模型方式还有待进一步尝试,如单步和多步预测等。