跳转到主要内容

分层方法时间序列预测

项目描述

Nixtla  Slack

分层预测 👑

基于统计和计量经济学方法的概率分层预测

CI Python PyPi conda-nixtla License

分层预测提供了一系列的调整方法,包括自下而上自上而下中点开始最小追踪ERM。还包括概率一致性预测,如正态分布BootstrapPERMBU

📚 简介

大量的时间序列数据集被组织成不同层次或聚合结构的结构。例如,类别、品牌或地理分组。在各个层级上进行一致性预测对于一致的决策和计划至关重要。分层预测提供了在不同层级上实现一致性预测的不同调整方法。直到最近,这些方法主要在R生态系统中可用。这个基于Python的框架旨在弥合时间序列领域中统计建模与机器学习之间的差距。

🎊 功能

  • 经典调整方法
    • 自下而上:简单地将上层加在一起。
    • 自上而下:通过层级分配顶层预测。
  • 替代调整方法
    • 中点开始:在中间层级上锚定基本预测。基本预测以上的层级使用自下而上的方法,而基本预测以下的层级使用自上而下的方法。
    • 最小追踪:通过最小化一致性预测空间的总预测方差,使用最小追踪调整。
    • ERM:通过最小化一个L1正则化目标来优化调整矩阵。
  • 概率一致性方法
    • 正态分布:在正态分布假设下使用最小追踪方差协方差闭式矩阵。
    • Bootstrap:使用Gamakumara的Bootstrap方法生成分层调整预测的分布。
    • PERMBU:通过重新注入估计的秩排列Copula中的多变量依赖性来调整独立样本预测,并执行自下而上的聚合。

缺少什么?请在此处打开一个问题,或通过以下链接联系我们Slack

📖 为什么?

简短:我们希望通过提供可靠的基础线和基准,为工业和学术界中的分层预测任务做出贡献。以下是完整的论文

详细HierarchicalForecast集成了公开可用的处理后的数据集、评估指标和一系列标准的统计基础线。在这个库中,我们提供了使用示例和广泛的实验的参考,其中我们展示了基准的使用并评估了其预测的准确性。通过这项工作,我们希望通过弥合统计和计量经济学建模与机器学习预测之间的差距,以及提供基于这些已建立模型彻底比较的开发新型分层预测算法的工具,为机器学习预测做出贡献。我们打算继续维护和扩展存储库,促进预测社区的合作。

💻 安装

您可以使用Python包索引pip安装HierarchicalForecast

pip install hierarchicalforecast

您也可以从conda安装HierarchicalForecast

conda install -c conda-forge hierarchicalforecast

🧬 使用方法

以下示例需要额外的包statsforecastdatasetsforecast。如果尚未安装,请通过您首选的方法安装,例如pip install statsforecast datasetsforecastdatasetsforecast库允许我们下载分层数据集,我们将使用statsforecast来计算需要调整的基本预测。

您可以在Colab中打开一个完整的示例Open In Colab

最小示例

# !pip install -U numba statsforecast datasetsforecast
import numpy as np
import pandas as pd

#obtain hierarchical dataset
from datasetsforecast.hierarchical import HierarchicalData

# compute base forecast no coherent
from statsforecast.core import StatsForecast
from statsforecast.models import AutoARIMA, Naive

#obtain hierarchical reconciliation methods and evaluation
from hierarchicalforecast.core import HierarchicalReconciliation
from hierarchicalforecast.evaluation import HierarchicalEvaluation
from hierarchicalforecast.methods import BottomUp, TopDown, MiddleOut


# Load TourismSmall dataset
Y_df, S, tags = HierarchicalData.load('./data', 'TourismSmall')
Y_df['ds'] = pd.to_datetime(Y_df['ds'])

#split train/test sets
Y_test_df  = Y_df.groupby('unique_id').tail(4)
Y_train_df = Y_df.drop(Y_test_df.index)

# Compute base auto-ARIMA predictions
fcst = StatsForecast(df=Y_train_df,
                     models=[AutoARIMA(season_length=4), Naive()],
                     freq='Q', n_jobs=-1)
Y_hat_df = fcst.forecast(h=4)

# Reconcile the base predictions
reconcilers = [
    BottomUp(),
    TopDown(method='forecast_proportions'),
    MiddleOut(middle_level='Country/Purpose/State',
              top_down_method='forecast_proportions')
]
hrec = HierarchicalReconciliation(reconcilers=reconcilers)
Y_rec_df = hrec.reconcile(Y_hat_df=Y_hat_df, Y_df=Y_train_df,
                          S=S, tags=tags)

评估

假设您有一个测试数据框。

def mse(y, y_hat):
    return np.mean((y-y_hat)**2)

evaluator = HierarchicalEvaluation(evaluators=[mse])
evaluator.evaluate(Y_hat_df=Y_rec_df, Y_test_df=Y_test_df.set_index('unique_id'),
                   tags=tags, benchmark='Naive')

📖 文档(进行中)

以下是文档的链接。

📃 许可证

本项目采用MIT许可协议 - 详细内容请参阅LICENSE文件。

🏟 HTS项目

在R生态系统中,我们推荐查看fable,以及已停用的hts。在Python中,我们想感谢以下库:hiere2esktimedartspyhtsscikit-hts

📚 参考和致谢

本研究深受先前贡献者和其他学者提出的方法的启发。我们想强调Rob Hyndman、George Athanasopoulos、Shanika L. Wickramasuriya、Souhaib Ben Taieb和Bonsoo Koo的工作。有关完整参考文献链接,请访问本文论文的参考部分。我们鼓励用户探索这个文献综述

🙏 如何引用

如果您喜欢或从使用这些Python实现中受益,对这篇层次预测参考文献论文的引用将非常感激。

@article{olivares2022hierarchicalforecast,
    author    = {Kin G. Olivares and
                 Federico Garza and 
                 David Luo and 
                 Cristian Challú and
                 Max Mergenthaler and
                 Souhaib Ben Taieb and
                 Shanika L. Wickramasuriya and
                 Artur Dubrawski},
    title     = {{HierarchicalForecast}: A Reference Framework for Hierarchical Forecasting in Python},
    journal   = {Work in progress paper, submitted to Journal of Machine Learning Research.},
    volume    = {abs/2207.03517},
    year      = {2022},
    url       = {https://arxiv.org/abs/2207.03517},
    archivePrefix = {arXiv}
}

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

hierarchicalforecast-0.4.2.tar.gz (48.5 kB 查看哈希值)

上传时间

构建分布

hierarchicalforecast-0.4.2-py3-none-any.whl (45.8 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面