有关时间序列预测的打包好的框架
时间序列有关的库:PyFlux库
前期处理数据的方法总结
特征工程
包括随机森林、相关系数(pearson、Spearman等级相关系数、灰色关联度、最大信息系数、信息熵等)、递归建立模型等进行特征提取。(特征提取的越好,模型一般来说更简单,并且效果更好。)
预测的输入和输出的形式
机器学习和统计的方法一般来说,只能多输入对单输出。
而深度学习的方法可以做到多输入对多输出。
- 单维单步(前2步预测一步)
以取5个样本(用LSTM预测)为例:训练集样本(5,2,1)[samples,timesteps(步数),features(维度)],训练集标签(5,1)。 - 单维多步(前两步预测后两步)
以取5个样本(用LSTM预测)为例:训练集样本(5,2,1)[samples,timesteps(步数),features(维度)],训练集标签(5,2)。 - 多维单步(前三步预测一步)
以取5个样本(用LSTM预测)为例:训练集样本(5,3,2)[samples,timesteps(步数),features(维度)],训练集标签(5,2)。 - 多维多步(前三步预测两步)
以取5个样本(用LSTM预测)为例:训练集样本(5,3,2)[samples,timesteps(步数),features(维度)],训练集标签(5,2,2)。(由于最后的输出是一个全连接层,所以最多只能是一个二维的矩阵,所以在预测之前三维转化成二维,在预测之后把二维转化为三维)
缺失值
线性插值、拉格朗日插值等
异常值
孤立森林、自编码器等识别异常值的方法
统计方法
SARIMA、VAR等。
机器学习
随机森林、树模型(XGBOOST、lightGBM、RF等)、SVR回归。
深度学习
样例:CNN+BiLSTM+Attention的多维(多变量)时间序列预测
还有一些比较前沿的方法
LSTF、Autoformer、FEDformer、NBEATS等模型。
模型的调参
1、网格搜索
2、自动化的调参框架(感觉optuna和flaml比较好):
3、经验等
参考文献:LSTM进阶:使用LSTM进行多维多步的时间序列预测
还有一些已经大家已经造好的轮子(可以在github上直接搜到,很方便,里面集成了很多模型):
比如pytorch-forcasting、Darts等都非常好用,可以快速上手。