一、时间序列预测特征提取和分析
关键特征提取和分析方式:
日期变量、周期性、趋势性、距离某天的时间差、时间特征组合、特殊日期、异常点、时序相关特征(历史平移、滑窗统计)、强相关特征(识别与目标变量强烈相关的特征,并利用这些特征来构建预测模型)
这张图片提供了一系列关于时间序列预测中构建关键特征的要点,包括强相关性特征、趋势性特征、周期性特征和异常点特征。以下是对这些特征的详细介绍:
-
强相关性特征:
-
强相关性特征是指与目标变量有明显线性或非线性关系的输入特征。在时间序列中,这些特征可能包括:
-
滞后特征:使用过去的值作为当前预测的特征,例如,使用前一天的销售数据来预测后一天的销售。
-
滚动统计特征:计算时间序列的滚动窗口内的统计量,如平均值、最大值、最小值、总和等。
-
-
-
趋势性特征:
-
趋势性特征反映了时间序列随时间推移的长期变化方向或速率。
-
构建趋势性特征的方法包括:
-
时间戳转换:将时间戳转换为数值,如从时间戳中提取年份、月份、星期等。
-
移动平均:使用时间序列的移动平均值来平滑短期波动,突出长期趋势。
-
多项式拟合:拟合一个多项式模型来捕捉趋势。
-
-
-
周期性特征:
-
周期性特征反映了时间序列数据在固定时间间隔内重复出现的模式。
-
构建周期性特征的方法包括:
-
时间戳的周期性转换:将时间戳转换为周期性变量,如一周中的星期几、一月中的日子等。
-
季节性分解:使用季节性分解方法来识别和提取时间序列的季节性成分。
-
周期性函数:使用正弦和余弦函数来模拟周期性变化。
-
-
-
异常点特征:
-
异常点是指与正常数据模式显著不同的数据点,它们可能由错误、突变或特殊事件引起。
-
处理异常点的方法包括:
-
简单标注:在数据集中标记异常点,以便在分析时考虑。
-
剔除:从数据集中删除异常点,特别是在它们可能影响模型训练的情况下。
-
修正:更正异常点,如果它们是由于可识别的错误造成的。
-
-
-
特殊事件特征:
-
特殊事件如“双十一”、“618”、“春节”等,会在时间序列中产生显著的峰值。
-
构建特殊事件特征的方法包括:
-
事件指示器:创建一个二进制特征,当时间序列中的点与特殊事件对应时,该特征值为1,否则为0。
-
事件前后的时间窗口:考虑事件前后的时间窗口,以捕捉事件的影响。
-
-
-
上下时段信息:
-
上下时段信息指的是在时间序列中,特定时间段之前或之后的数据点。
-
这可以通过创建特征来表示数据点与特定时间段的距离来实现。
-
-
存在峰值与峰值距离:
-
识别时间序列中的峰值点,并计算其他数据点与这些峰值点的距离,可以作为特征输入模型。
-
-
时间尺度特征:
-
根据需要预测的时间尺度(如1天、3天、5天等),创建相应的滞后特征和滚动统计特征。
-
通过结合这些特征,可以构建一个强大的时间序列预测模型。在实际应用中,需要根据具体问题和数据特性来选择和调整特征工程的策略。此外,特征的选择和构建应该与模型的选择和调优过程相结合,以实现最佳的预测性能。
二、优化方案详解
在提分实践部分,将在原有Baseline基础上做更多优化,一般优化思路,从特征工程与模型中来思考。
优化方法建议:
-
提取更多特征:在数据挖掘比赛中,特征总是最终制胜法宝,去思考什么信息可以帮助我们提高预测精准度,然后将其转化为特征输入到模型。
-
尝试不同的模型:模型间存在很大的差异,预测结果也会不一样,比赛的过程就是不断的实验和试错的过程,通过不断的实验寻找最佳模型,同时帮助自身加强模型的理解能力。
1、特征优化
特征优化方面,进行构建历史平移特征、差分特征、和窗口统计特征;
2、模型融合
提出一种新的优化方案——模型融合:
第一种方法主要构建了cv_model函数,内部可以选择使用lightgbm、xgboost和catboost模型,可以依次跑完这三个模型,然后将三个模型的结果进行取平均进行融合;对于每个模型均选择经典的K折交叉验证方法进行离线评估。
第二种方法是stacking融合,stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。
第一层:(类比cv_model函数)
-
划分训练数据为K折(5折为例,每次选择其中四份作为训练集,一份作为验证集);
-
针对各个模型RF、ET、GBDT、XGB,分别进行5次训练,每次训练保留一份样本用作训练时的验证,训练完成后分别对Validation set,Test set进行预测,对于Test set一个模型会对应5个预测结果,将这5个结果取平均;对于Validation set一个模型经过5次交叉验证后,所有验证集数据都含有一个标签。此步骤结束后:5个验证集(总数相当于训练集全部)在每个模型下分别有一个预测标签,每行数据共有4个标签(4个算法模型),测试集每行数据也拥有四个标签(4个模型分别预测得到的)
第二层:(类比stack_model函数)
-
将训练集中的四个标签外加真实标签当作五列新的特征作为新的训练集,选取一个训练模型,根据新的训练集进行训练,然后应用测试集的四个标签组成的测试集进行预测作为最终的result。
3、深度学习
使用深度学习方法,训练LSTM模型并对测试集进行预测。
(具体代码与代码解释详见Task3:尝试使用深度学习方案)
总结
时间序列预测是一个不断发展的领域,随着技术的进步,我们可以期待更多的优化方法和模型的出现。深度学习模型,特别是LSTM和其变体,已经在许多时间序列预测任务中显示出了优越的性能。未来的研究可能会集中在以下几个方面:
-
更复杂的模型结构:如引入注意力机制的LSTM模型,以更好地捕捉时间序列中的长期依赖关系。
-
多模态数据融合:结合时间序列数据和其他类型的数据,如文本或图像,以提供更全面的分析。
-
模型解释性:提高模型的可解释性,以便更好地理解预测结果。
-
自动化特征工程:开发自动化的特征工程工具,以减少手动特征提取的工作量。
-
实时预测:提高模型在实时数据流上的预测能力。
-
模型鲁棒性:提高模型对异常值和噪声的鲁棒性。
随着技术的不断发展,我们可以期待时间序列预测在准确性、效率和应用范围上都会有显著的提升。