时间序列预测是一种强大的数据科学技术,用于根据过去的数据点预测未来值
借助 skforecast 等开源 Python 库,您可以轻松地对数据运行时间序列预测。它们允许您“自带”与 scikit-learn API 兼容的回归器,让您能够灵活地与所选模型无缝协作。
随着数据集和技术(例如直接多步骤预测)的不断增加,需要您一次运行多个模型,在基于 CPU 的基础设施上运行预测时,计算成本会很快变得昂贵。
RAPIDS 是开源 GPU 加速数据科学和 AI 库的集合。 cuML 是一个 GPU 加速的 Python 机器学习库,具有 scikit-learn 兼容 API。
在这篇博文中,我们展示了如何将 RAPIDS cuML 与 skforecast 结合使用,以加速时间序列预测,从而让您能够处理更大的数据集和预测窗口。
为什么要进行时间序列预测?
在当今数据驱动的世界中,企业依靠时间序列预测来做出明智决策、优化流程并降低风险。无论是预测股票市场趋势、供需的突然变化,还是疾病的传播,准确的预测对于规划和策略都至关重要。
从历史上看,每月或每周的预测可能已经足以支持决策。但是,随着数据呈指数级增长和全球不确定性的增加,企业组织现在需要能够近乎实时地进行预测,以便对其业务做出前瞻性决策。
多步骤预测
时间序列预测中使用的一种热门技术是递归多步骤预测 ,在此技术中,您可以训练单个模型并递归地应用该模型来预测序列中的 下 n 个值 。
相比之下,直接多步骤预测使用单独的模型来预测预测范围内的每个未来值。换言之,您“直接”试图预测前方的 n 个步骤,而不是通过递归来实现。这在某些情况下可以产生更好的结果,但由于需要训练多个模型,因此计算成本更高。
将加速计算引入直接多步预测
可以将 RAPIDS cuML 应用到现有的 skforecast 工作流中。在下方示例中,我们创建了具有每小时季节性和正漂移的合成时间序列数据集。然后,我们使用 skforecast 的 ForecasterDirect
类进行直接多步骤预测,并将 scikit-learn 回归器替换为 cuML 的 RandomForestRegressor:
import numpy as np
import pandas as pd
from skforecast.direct import ForecasterDirect
from sklearn.ensemble import RandomForestRegressor
import cuml
USE_GPU = False
# Parameters
n_records = 100000
drift_rate = 0.001
seasonality_period = 24
start_date = '2010-01-01'
# Create synthetic dataset with positive drift
date_rng = pd.date_range(start=start_date, periods=n_records, freq='h')
np.random.seed(42)
noise = np.random.randn(n_records)
drift = np.cumsum(np.ones(n_records) * drift_rate)
seasonality = np.sin(np.linspace(0, 2 * np.pi, n_records) * (n_records / seasonality_period))
data = noise + drift + seasonality
df = pd.DataFrame(data, index=date_rng, columns=['y'])
if USE_GPU:
forecaster = ForecasterDirect(
regressor=cuml.ensemble.RandomForestRegressor(
n_estimators=200,
max_depth=13,
),
steps=100,
lags=100,
n_jobs=1,
)
else:
forecaster = ForecasterDirect(
regressor=RandomForestRegressor(
n_estimators=200,
max_depth=13,
n_jobs=-1 # parallelize Random Forest to use all CPU cores
),
steps=100,
lags=100,
n_jobs=1,
)
forecaster.fit(y=df['y'])
predictions = forecaster.predict()
对于包含数十万条记录的大型数据集,基于 CPU 的回归器可能需要很长时间才能完成每个预测。请记住,通过直接多步骤预测,我们正在为预测中的每个步骤训练单独的模型。在 CPU 上运行此预测需要超过 43 分钟。
切换到 cuML 的 GPU 加速回归器后,整个预测只需 103 秒即可完成,代码更改最少,速度提升 25 倍。

由于预测的运行速度更快,因此我们可以更快地进行迭代并执行超参数优化以找到最佳拟合,或试用 cuML 支持的其他回归器。
结束语
时间序列预测已存在数十年,但在今天仍然非常重要。像直接多步骤预测等技术可用于优化预测,但随着数据和预测规模的增长,计算成本会更高。
借助带有 skforecast 的 RAPIDS cuML 等加速计算库,您只需更改最少的代码,即可轻松加速预测工作。
如需了解有关加速机器学习的更多信息,请访问 cuML 文档 ,或参加 NVIDIA Deep Learning Institute 的 Fundamentals of Accelerated Data Science 课程 。