6、基于机器学习的预测

应用机器学习的任何预测任务与这四个策略。

1、简介

在第二课和第三课中,我们将预测视为一个简单的回归问题,所有的特征都是从一个输入,即时间索引,衍生出来的。我们可以通过生成我们想要的趋势和季节性特征,轻松地对未来的任何时间进行预测。

但是,当我们在第四课中添加了滞后特征时,问题的性质就发生了变化。滞后特征要求在进行预测时,滞后的目标值是已知的。滞后 1 的特征将时间序列向前移动 1 步,这意味着你可以预测未来的 1 步,但不能预测 2 步。

在第四课中,我们只是假设我们可以一直生成滞后特征,直到我们想要预测的期间(换句话说,每个预测都是向前一步)。然而,现实世界的预测通常需要更多的信息,所以在这一课中,我们将学习如何针对各种情况进行预测。

1.1定义预测任务

在设计预测模型之前,有两件事情需要确定:

  • 在进行预测时,有哪些信息是可用的(特征),以及,
  • 你需要预测值的时间段(目标)。

预测起点是你进行预测的时间。实际上,你可以将预测起点视为你有训练数据的最后一个时间,用于预测正在预测的时间。起点之前的所有内容都可以用来创建特征。

预测范围是你进行预测的时间。我们通常用预测范围内的时间步数来描述一个预测:例如,“1 步”预测或“5 步”预测。预测范围描述了目标。
在这里插入图片描述
一个三步预测范围,有两步的提前时间,使用四个滞后特征。该图表示了一行训练数据的内容,也就是一个预测的数据。

起点和范围之间的时间是预测的提前时间(或有时称为延迟)。预测的提前时间由起点到范围的步数来描述:例如,“1 步前”或“3 步前”的预测。在实践中,由于数据获取或处理的延迟,可能需要一个预测从起点开始多步前进行。

1.2准备预测数据

为了用机器学习算法进行时间序列预测,我们需要将序列转换为一个可以用于这些算法的数据框。(当然,除非你只使用确定性的特征,如趋势和季节性。)

我们在第四课中看到了这个过程的前半部分,当时我们用滞后值创建了一个特征集。后半部分是准备目标值。我们如何做这个取决于预测任务的不同。

数据框中的每一行代表一个单独的预测。行的时间索引是预测范围内的第一个时间,但我们将整个范围内的值都安排在同一行中。对于多步预测,这意味着我们需要一个模型能够产生多个输出,每一步一个。

In [1]:

import numpy as np
import pandas as pd

N = 20
ts = pd.Series(
    np.arange(N),
    index=pd.period_range(start='2010', freq='A', periods=N, name='Year'),
    dtype=pd.Int8Dtype,
)

# Lag features
X = pd.DataFrame({
   
   
    'y_lag_2': ts.shift(2),
    'y_lag_3': ts.shift(3),
    'y_lag_4': ts.shift(4),
    'y_lag_5': ts.shift(5),
    'y_lag_6': ts.shift(6),    
})

# Multistep targets
y = pd.DataFrame({
   
   
    'y_step_3': ts.shift(-2),
    'y_step_2': ts.shift(-1),
    'y_step_1': ts,
})

data = pd.concat({
   
   'Targets': y, 'Features': X}, axis=1)

data.head(10).style.set_properties(['Targets'], **{
   
   'background-color': 'LavenderBlush'}) \
                   .set_properties(['Features'], **{
   
   'background-color': 

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-03 08:00:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-03 08:00:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-03 08:00:03       87 阅读
  4. Python语言-面向对象

    2024-02-03 08:00:03       96 阅读

热门阅读

  1. PyTorch中tensor.backward()函数的详细介绍

    2024-02-03 08:00:03       45 阅读
  2. ElasticSearch8升级变化

    2024-02-03 08:00:03       42 阅读
  3. 五大架构风格之三:独立构件风格

    2024-02-03 08:00:03       48 阅读
  4. 什么是ISO21434网络安全中的信息安全?-亚远景

    2024-02-03 08:00:03       58 阅读
  5. 【华为OD机试】 最小矩阵宽度【2024 C卷|100分】

    2024-02-03 08:00:03       47 阅读
  6. SouthernBiotech重组单克隆二抗

    2024-02-03 08:00:03       89 阅读
  7. WSL2 Ubuntu下检测 不到GPU驱动,无法使用GPU

    2024-02-03 08:00:03       60 阅读