使用机器学习/深度学习进行时间序列预测:第 2 部分 - ML&DL 的时间序列特征提取

在时间序列预测领域,近年来出现了机器学习算法,如梯度提升树框架(XGBoost、LightGBM)、深度学习(LSTM、GRU、TCN)算法。 在进行时间序列建模时,机器学习算法与深度学习的区别在于是否预处理特征。 例如,在我们获得包含“日期时间”时间戳的原始数据后,机器学习算法通常会对时间戳进行细粒度的时间特征提取,以帮助模型更好地理解时间模式和趋势。 一般的深度学习模型不会对原始数据的时间特征进行预处理,而是依靠模型自身对时间特征的理解来进行特征提取和变换。

数据处理

  1. 检查数据
    预测分为首先,我们必须观察提供/收集的时间序列数据。 检查它是否是按时间顺序排列的连续观察序列。 因为时间序列模型的假设即是连续时间数据,所以如果所得到的时间序列数据过于离散,需要对时间单位进行细粒度化,以提高数据的连续性。

2、数据清洗

  • 重复数据:去除重复信息,删除不相关的数据,删除例如 order_id 或 row_id,等只代表序列含义的列,无法对预测做出贡献。
  • 处理缺失值:数据缺失在一定阈值内需要删除或估算。 一般来讲,从技术人员角度,缺失数据超过40-50%即可界定为缺失大部分有效信息。但如果项目有业务人员参与,缺失百分比也取决于先验知识。如果数据缺失比例少于既定阈值,需要考虑填充,一般可以通过0、均值、众数、中位数等填充缺失值。在必要时也可以考虑少样本分类、回归模型预测出改缺失特征的缺失值,进而完成填充。
  • 纠正格式错误:确保输入数据格式正确。比如数据集中的“日期”数据可能是“object”格式,而对于建模来说,日期数据应该是应为“datetime”格式。
  • 检测和处理异常值数据:通常模型对于异常值的敏感度会显著影响模型性能。例如决策树对异常值较为敏感,因为在构建树的过程中,异常值可能导致节点的划分发生变化,进而导致建模失败。但适当的构建模型结构可以提高鲁棒性。诸如决策树的集成模型(随机森林、梯度提升树)则相对不容易受到异常值的干扰。因此请识别异常值并确定适当的操作来处理它们。
  • 标准化:不同的特征可能有不同的尺度和单位。例如,在数据集中,一个特征的范围可能是从 0 到 1,而另一个特征的范围可能是从 1 到100。如果模型不适应这种差异,则可能会导致训练不稳定或某些特征可能产生过大的影响。标准化,例如对数变换、归一化等是考虑稳定数据方差的好方法

3、数据分析

分析数据集的特征,例如季节性、趋势、周期性等,因为它有助于进行进一步的特征工程(如果有必要)。

具体代码

通常细粒度的时间特征可以通过以下方式抽取,具体取决于业务需求:

  • 细粒度时序特征
import pandas as pd

def get_season(month):
    if 3 <= month <= 5:
        return 'Spring'
    elif 6 <= month <= 8:
        return 'Summer'
    elif 9 <= month <= 11:
        return 'Fall'
    else
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值