用于异常、预测和分析模型的深度学习
用于异常、预测和分析的深度学习模型可分为三个步骤:数据准备、训练和执行。
目标是准备预测任务所需的数据(数据准备),然后以最小误差拟合模型(训练),并预测目标变量的值(执行)。
该模型设计为仅训练一次深度学习架构;它对所有历史序列执行单次训练遍历。随后,同一模型为数据中的所有维度和目标提供预测。
该解决方案依赖 OData API Service,进行设置的用户必须具备必要的权限。
数据准备¶
此步骤的目标是准备预测任务所需的数据。
- 重复值通过将对应值相加来管理(对具有相同维度 ID 和时间 ID 的行进行聚合)。
- 未与任何目标关联的外生特征将被排除:它们必须与您希望影响的目标具有相同的维度。
- 外生变量的数值数据被缩放为均值为 0、方差为 1。
- 计算每个特征的季节性。
- 可选地,可以使用季节性间隔的滚动均值来创建目标和外生变量的季节性特征。有一个参数控制是否为目标和外生特征生成季节性变量。
- 对于每个特征,脚本通过将原始数据从 1 偏移到该特征(跨不同维度)的最大季节性与 MAX_LAG(如果设置了)中的较小值,来创建滞后特征。生成滞后特征后,数据集开头会出现一些缺失值。所有这些都必须移除,以确保模型正确训练。因此,数据集将丢失若干行,其数量等于所有特征中的最大滞后乘以维度数量。
因此,为尽可能保留数据,建议将 MAX_LAG 保持相对较低。
- 如果缩放标志设置为 Y,则在预处理步骤中,对外部特征和目标应用标准缩放器。
示例:
输入训练数据集中的特征为:
COVID_RATE
MARKETING
而 VOLUME 是目标变量。
脚本计算目标变量的季节性,为 2,以及每个特征的季节性。
COVID_RATE - 3
MARKETING - 2
给定 MAX_LAG 为 5,脚本计算偏移直到 5 与每个特征最大季节性(减 1)之间的最小值:
| COVID_RATE | COVID_RATE-1 | COVID_RATE-2 | MARKETING | MARKETING-1 |
|---|---|---|---|---|
| 0.8 | 95 | |||
| 0.7 | 0.8 | 100 | 95 | |
| 0.75 | 0.7 | 0.8 | 90 | 100 |
| 0.9 | 0.75 | 0.75 | 110 | 90 |
| … | … | … | … | … |
如您所见,此步骤会在数据集中产生一些缺失值,因此前两行将被删除
| COVID_RATE | COVID_RATE-1 | COVID_RATE-2 | MARKETING | MARKETING-1 |
|---|---|---|---|---|
| 0.75 | 0.7 | 0.8 | 90 | 100 |
| 0.9 | 0.75 | 0.75 | 110 | 90 |
| … | … | … | … | … |
训练¶
此步骤的目标是开发一个定制的多任务深度神经网络架构。
最后 20% 的数据保留用于验证,通过比较实际值和预测值来评估模型的误差。
通过最小化平均绝对百分比误差(MAPE)来优化模型。
针对每个目标,在每个时间点计算每个驱动因素的贡献。然后,将重要性确定为每个目标的平均贡献,并进行归一化,使每个目标的重要性之和为 1。如果贡献设置为 N,则重要性并非来自这些贡献,而是根据与每个输入变量关联的最终梯度计算得出。
此阶段创建四个数据集:
- Fit 数据集 – 包含拟合值
- Importance 数据集 – 汇总驱动因素重要性
- Contribution 数据集 – 详细说明随时间的贡献
- Metrics 数据集 – 报告性能度量
在 metrics 数据集中,针对每个目标提供四个度量(R²、MSE、MAE 和 MAPE),在验证数据集上计算。此外,还包含残差的标准差。
执行¶
此步骤的目标是使用训练好的模型预测目标变量的值。
如果预测范围超过一步(即需要预测多于一个点),则使用滚动预测策略为整个所需期间生成预测。在此方法中,先前预测的值作为后续预测的输入。
此阶段产生三个数据集:
- Forecast 数据集 – 包含预测值及其置信区间
- Importance 数据集 – 汇总驱动因素重要性
- Contribution 数据集 – 显示随时间的贡献
如果对作为输入提供的实际目标值执行异常检测,则 forecast 数据集包含一个附加列,显示离群值/非离群值分类以及关联的离群值概率。