更新日志

我们尽力避免引入破坏性变更,但无法始终保证向后兼容性。可能会 破坏使用Darts先前版本代码 的变更会标记为“🔴”。

未发布

完整更新日志

对于库的用户:

改进

固定

依赖项

对于库的开发者:

0.30.0 (2024-06-19)

对于库的用户:

改进

  • 🚀🚀 所有 GlobalForecastingModel 现在支持使用样本权重进行训练(回归、集成和神经网络模型):#2404#2410#2417#2418Anton RagotDennis Bader 完成。

    • 添加了参数 sample_weightval_sample_weightfit()historical_forecasts()backtest()residualsgridsearch(),以对训练和评估集中的每个观测值、标签(输出块中的每一步)和目标分量应用权重。支持确定性和概率性模型。样本权重可以是 TimeSeries 本身,也可以是内置的权重生成器“线性”和“指数”衰减。如果是 TimeSeries,则与协变量处理方式相同(例如,传递多个权重序列与多个目标序列,相关时间范围的提取会自动处理,…)。您可以在 这里 找到一个示例。

  • 🚀🚀 通过重大重构改进了异常检测模块。重构包括对大多数流程的性能优化、API改进、一致性、可靠性和文档的提升。其中一些必要的更改带来了破坏性变化:#1477Dennis BaderSamuele Giuliano PiazzettaAntoine MadronaJulien HerzenJulien Adda 完成。

    • 添加了一个 示例笔记本 ,展示了如何使用 Darts 进行时间序列异常检测。

    • 添加了一个新的数据集 TaxiNewYorkDataset 用于异常检测,该数据集包含2014年和2015年纽约的出租车乘客数量。

    • FittableWindowScorer (KMeans, PyOD, 和 Wasserstein Scorers) 现在接受任何 darts “per-time” 步长指标 作为差异函数 diff_fn

    • ForecastingAnomalyModel 现在由于优化了历史预测,生成预测(评分器的输入)的速度大大提高。我们还通过所有模型方法中的附加参数增加了对历史预测生成的更多控制。

    • 🔴 重大变更:

      • FittableWindowScorer (KMeans, PyOD, 和 Wasserstein Scorers) 现在期望 diff_fn 是 Darts 的“每时间步”指标之一

      • ForecastingAnomalyModel : model 现在强制为 GlobalForecastingModel

      • *.eval_accuracy() : (聚合器, 检测器, 过滤/预测异常模型, 评分器)

        • 将方法重命名为 eval_metric() :

        • 参数重命名为 anomalies,以及 pred_scores

      • *.show_anomalies() : (过滤/预测异常模型, 评分器)

        • 将参数 actual_anomalies 重命名为 anomalies

      • *.fit() (过滤/预测异常模型)

        • 将参数 actual_anomalies 重命名为 anomalies

      • Scorer.*_from_prediction() (评分器)

        • 将方法 eval_accuracy_from_prediction() 重命名为 eval_metric_from_prediction()

        • 参数重命名为 series,以及 anomalies

      • darts.ad.utils.eval_accuracy_from_scores

        • 将函数重命名为 eval_metric_from_scores

        • 参数 actual_anoamlies 已重命名为 anomaliesanomaly_score 已重命名为 pred_scores

      • darts.ad.utils.eval_accuracy_from_binary_prediction

        • 将函数重命名为 eval_metric_from_binary_prediction

        • 参数重命名为 anomalies,并将 binary_pred_anomalies 重命名为 pred_anomalies

      • darts.ad.utils.show_anomalies_from_scores

        • 参数重命名为:series 改为 actual_seriesactual_anomalies 改为 anomaliesmodel_output 改为 pred_seriesanomaly_scores 改为 pred_scores

  • TorchForecastingModel 的改进:#2295Bohdan Bilonoh 完成。

    • 添加了 dataloader_kwargs 参数到 fit*()predict*()find_lr()中,以更精细地控制 PyTorch DataLoader 的设置。

    • 🔴 从 fit*()predict*()find_lr() 中移除了参数 num_loader_workers。现在可以通过 dataloader_kwargs 字典设置该参数。

  • DataTransformers 的改进:

    • 在使用 fitfit_transformtransforminverse_transform 处理大量序列时,显著提升了速度。组件掩码逻辑已移入并行化的转换方法中。#2401Dennis Bader 贡献。

  • TimeSeries 的改进:#1477Dennis Bader 完成。

    • 新方法 with_times_and_values(),返回一个带有新时间索引和新值的新序列,但其列和元数据(静态协变量、层次结构)与被调用的序列相同。

    • 新方法 slice_intersect_times(),返回一个序列的切片时间索引,该索引已与另一个序列相交。

    • 方法 with_values() 现在也可以作用于类似数组的 values,而不仅仅限于 numpy 数组。

  • 对快速启动笔记本的改进:#2418Dennis Bader 完成。

    • 增加了使用样本权重、预测开始时间偏移、直接似然参数预测的示例。

    • 增强的历史预测、回测和残差的示例。

固定

  • 修复了在使用支持验证系列的 RegressionModel 时,验证集的一个错误:编码器、静态协变量和组件特定的滞后现在正确地应用于验证集。#2383Dennis Bader 提交。

  • 修复了一个错误,即 darts.utils.utils.n_steps_between() 在自定义业务频率下无法正常工作。这影响了指标计算。#2357Dennis Bader 提交。

  • 修复了在使用 MixedCovariatesTorchModel``(例如 TiDE、N/DLinear 等)调用 ``predict() 时,当 n<output_chunk_length 并且传入的系列列表长度 len(series) < n 时,预测未能返回正确数量的系列的问题。#2374Dennis Bader 提交。

  • 修复了在使用带有状态性torch指标的``TorchForecastingModel``时,指标被错误地计算为非状态性的问题。#2391Tim Rosenflanz 提交

依赖项

  • 我们在所有依赖项迁移之前对 numpy<2.0.0 设置了版本上限。#2413Dennis Bader 提交。

对于库的开发者:

依赖项

  • 通过更新的预提交配置改进的代码检查:#2324Jirka Borovec 提交。

  • 通过将 isort 切换到 Ruff 的规则 I,改进了统一的代码检查。#2339Jirka Borovec 提交

  • 通过将 pyupgrade 切换到 Ruff 的规则 UP,改进了统一的代码检查。#2340Jirka Borovec 提交

  • CI 的改进,通过 pre-commit 在本地运行 lint 而不是特定的工具。#2327Jirka Borovec 提交

0.29.0 (2024-04-17)

对于库的用户:

改进

  • 🚀🚀 新预测模型:TSMixerModel,如 这篇论文 中所提议。该模型基于MLP,通过堆叠混合层结合时间、静态和横截面特征信息。#2293,由 Dennis BaderCristof Rojas 贡献。

  • 🚀🚀 通过重大重构改进了指标、历史预测、回测和残差。重构包括优化多个流程以及提高一致性、可靠性和文档的改进。其中一些必要的更改是以破坏性变化为代价的。#2284Dennis Bader 完成。

    • 指标:

      • 优化了所有指标,现在对于包含 n 个组件/列的序列,运行速度比以前快 > n * 20 倍。这不仅提升了直接指标计算,还加快了回测和残差计算!

      • 新增了新的指标:

        • 时间聚合指标 merr() (平均误差)

        • 时间聚合缩放指标 rmsse()msse() : (根) 均方缩放误差。

        • “每时间步” 指标,返回每个时间步的指标得分:err() (误差),ae() (绝对误差),se() (平方误差),sle() (平方对数误差),ase() (绝对比例误差),sse (平方比例误差),ape() (绝对百分比误差),sape() (对称绝对百分比误差),arre() (绝对范围相对误差),ql (分位数损失)

      • 所有缩放指标(mase()等)现在接受可以与``pred_series``重叠的``insample``序列(之前它们必须正好在``pred_series``之前一个步骤结束)。Darts 将为您处理正确的时间提取。

      • 文档的改进:

        • metrics 文档页面 添加了所有指标的摘要列表。

        • 标准化了每个指标的文档(添加了公式,改进了返回文档,…)

      • 🔴 重大变更:

        • 基于输入 series 的类型和应用的缩减,改进了度量输出的统一性。在某些情况下,输出类型与之前的 Darts 版本相比发生了变化。你可以在 度量 API 文档 中找到详细的描述。

        • 将指标参数 reduction 重命名为 component_reduction

        • 将指标参数 inter_reduction 重命名为 series_reduction

        • quantile_loss() :

          • 重命名为 mql() (平均分位数损失)。

          • 将分位数参数 tau 重命名为 q

          • 该指标现在乘以一个因子 2 以使损失更易于解释(例如,对于 q=0.5 ,它与 MAE 相同)

        • rho_risk() :

          • 重命名为 qr() (分位数风险)。

            • 将分位数参数 rho 重命名为 q

        • 缩放指标不再允许在 m=None 的情况下进行季节性推断。

        • 使用装饰器 multi_ts_supportmultivariate_support 的自定义指标现在必须作用于多元序列(可能包含缺失值),而不是单变量序列。

    • 历史预测:

      • 🔴 基于输入 series 类型的历史预测输出一致性改进:如果 series 是一个序列,历史预测现在将始终返回相同长度的序列/列表(而不是尝试减少为一个 TimeSeries 对象)。你可以在 历史预测 API 文档 中找到详细描述。

    • 回测

      • 现在,指标仅在所有 serieshistorical_forecasts 上计算一次,在使用大量 series 时显著加快了计算速度。

      • 添加了对缩放指标(如 asemase 等)作为 metric 的支持。无需额外代码,回测会自动为您提取正确的 insample 系列。

      • 增加了对通过参数 metric_kwargs 传递额外指标(特定)参数的支持。这允许例如通过 n_jobs 并行化指标计算,使用 *_reduction 自定义指标缩减,为缩放指标指定季节性 m 等。

      • 🔴 重大变更:

        • 基于输入类型 serieshistorical_forecast以及应用的回测缩减,改进了回测输出的统一性。在某些情况下,输出类型与之前的 Darts 版本相比发生了变化。你可以在 回测 API 文档 中找到详细的描述。

        • reduction 可调用对象现在对 axis=1 而不是 axis=0 进行操作,以按系列聚合指标。

        • 当用户提供的 historical_forecasts 不符合基于输入 serieslast_points_only 值的预期格式时,回测现在将引发错误。

    • 残差:尽管 residuals() 的默认行为保持不变,但该方法现在与 backtest() 非常相似,只不过它计算的是 historical_forecasts 上任何“按时间步长”的 metric

      • 增加了对多变量 series 的支持。

      • 为所有 historical_forecasts() 参数添加了支持,以生成残差计算的历史预测。

      • 增加了对预计算历史预测的支持,参数为 historical_forecasts

      • 增加了对使用Darts的“每时间步”指标计算残差的支

      • 增加了通过参数 metric_kwargs 传递额外指标参数的支持。这允许例如通过 n_jobs 并行化指标计算,为缩放指标指定季节性 m 等。

      • 🔴 基于输入 serieshistorical_forecast 的类型,改进了残差输出和一致性。在某些情况下,输出类型与之前的 Darts 版本相比有所变化。您可以在 residuals API 文档 中找到详细描述。

  • TimeSeries 的改进:

    • from_group_dataframe() 现在支持在 pandas.DataFrame 组上进行并行创建。这可以通过参数 n_jobs 启用。#2292Bohdan Bilonoha 贡献。

    • 新方法 slice_intersect_values(),返回一个序列的切片值,其中时间索引已与另一个序列相交。由 Dennis Bader#2284 中贡献。

    • 方法性能提升:slice_intersect()has_same_time_as()。由 Dennis Bader#2284 中贡献。

  • 改进预测模型:

    • RNNModel 的改进,由 Dennis Bader#2329 中提出:

      • 🔴 强制 training_length>input_chunk_length ,因为在训练过程中,如果不这样做,模型在训练时运行的迭代次数将不会与预测时相同。

      • 历史预测现在正确推断出未训练和预训练的 RNNModel 的所有可能预测起点。

    • 在执行优化历史预测(``retrain=False``且无自回归)时,为``RegressionModel``添加了进度条,以显示序列级别的进度。#2320Dennis Bader 贡献。

    • 将私有属性 ForecastingModel._is_probabilistic 重命名为公共属性 supports_probabilistic_prediction#2269Felix Divo 完成。

  • 其他改进:

    • 所有 InvertibleDataTransformer 现在支持对 series 进行并行逆变换,其中 series 是一个 TimeSeries 列表的列表(即 Sequence[Sequence[TimeSeries]])。这种类型表示在使用 last_points_only=False 的情况下,调用 historical_forecasts() 时的输出。#2267Alicja Krzeminska-Sciga 贡献。

    • 在 Darts 文档中添加了 发布说明#2333Dennis Bader 提交。

    • 🔴 将工具函数移动到不同位置,以明确区分Darts特定逻辑与非Darts特定逻辑,#2284Dennis Bader 提交

      • 将函数 generate_index()darts.utils.timeseries_generation 移动到 darts.utils.utils

      • 移动函数 retain_period_common_to_all()series2seq()seq2series()get_single_series()darts.utils.utilsdarts.utils.ts_utils

固定

  • 修复了在使用特定组件滞后时的特征顺序,使其先按值分组,然后按组件分组(之前是先按组件分组,然后按值分组)。#2272Antoine Madrona 提交。

  • 修复了在使用 TorchForecastingModel 和 pytorch lightning 版本 >= 2.2.0 时,dropout 在训练期间未正确激活的错误。#2312Dennis Bader 完成。

  • 修复了在使用未训练的 TorchForecastingModel 进行历史预测并使用协变量时的一个错误,其中历史可预测时间索引的生成没有考虑协变量。#2329Dennis Bader 完成。

  • 修复了 quantile_loss 中的一个错误,该错误在所有样本上计算损失,而不是仅在预测的分位数上计算。#2284Dennis Bader 完成。

  • 修复了某些用户在导入 LightGBMModel 时遇到的段错误。#2304Dennis Bader 完成。

  • 修复了调用 historical_forecasts() 时因 _with_sanity_checks 装饰器导致的“意外参数”类型提示警告。现在类型提示已正确配置,以期望任何输入参数并返回执行健全性检查的方法的输出类型。#2286Dennis Bader 提交。

对于库的开发者:

  • 通过为 nbsphinx 添加新的依赖 lxml_html_clean 修复了文档构建失败的问题。#2303Dennis Bader 完成。

  • black 从 24.1.1 升级到 24.3.0。#2308Dennis Bader 完成。

  • codecov-action 从 v2 升级到 v4,并在 CI 管道中为 codecov 上传认证添加了 codecov 令牌作为仓库密钥。#2309#2312Dennis Bader 完成。

  • 改进了代码检查,从 flake8 切换到 Ruff。#2323Jirka Borovec 提交。

0.28.0 (2024-03-05)

对于库的用户:

改进

  • GlobalForecastingModel 的改进:

    • 🚀🚀🚀 所有全局模型(回归和 torch 模型)现在支持通过模型创建参数 output_chunk_shift 进行偏移预测。这将把训练和预测的输出块向未来偏移 output_chunk_shift 步。#2176Dennis Bader 贡献。

  • TimeSeries 的改进,由 Dennis Bader#2196 中完成:

    • 🚀🚀🚀 多个 TimeSeries 方法的性能显著提升,使得整个 Darts 库的效率得到提高。对于使用“常规”频率(例如每日、每小时等)索引的序列,创建时间最多可加快2倍,而对于使用“特殊”频率(例如“W-MON”等)索引的序列,创建时间可加快100倍以上。影响范围:

      • 所有 TimeSeries 创建方法

      • 使用整数和时间戳进行切片时的额外提升

      • 通过在整个DataFrame上执行一些繁重的计算,而不是在组级别上迭代执行,为 from_group_dataframe() 提供了额外的提升。

    • 在使用 TimeSeries.from_group_dataframe() 方法时,添加了排除某些 group_cols 作为静态协变量的选项,通过参数 drop_group_cols 实现。

  • 🚀 新的全局基线模型使用固定的输入和输出块进行预测。这提供了对单变量、多变量、单目标和多目标序列预测、一次性或自回归/移动预测、优化的历史预测、批量预测、从数据集进行预测等的支持。#2261Dennis Bader 贡献。

    • GlobalNaiveAggregate : 计算每个目标组件在最近的 input_chunk_length 个点上的聚合(使用自定义或内置的 torch 函数),并将这些值重复 output_chunk_length 次用于预测。根据参数的不同,该模型可以等同于 NaiveMeanNaiveMovingAverage

    • GlobalNaiveDrift : 计算每个目标组件在过去 input_chunk_length 个点上的斜率,并在接下来的 output_chunk_length 个点上预测趋势。根据参数,该模型可以等同于 NaiveDrift

    • GlobalNaiveSeasonal : 获取目标 series 结束前第 input_chunk_length 个点的目标组件值,并重复该值 output_chunk_length 次以进行预测。根据参数,此模型可能等同于 NaiveSeasonal

  • TorchForecastingModel 的改进:

    • 增加了对额外学习率调度器配置参数的支持,以获得更多控制(”interval”、”frequency”、”monitor”、”strict”、”name”)。#2218Dennis Bader 提交。

  • RegressionModel 的改进,由 Antoine Madrona#2246 中提出:

    • 添加了一个 get_estimator() 方法以访问底层估计器

    • 添加了属性 lagged_label_names 以识别每个估计器的预测步骤和组件

    • 更新了 get_multioutout_estimator() 的文档字符串

  • 其他改进:

    • WindowTransformerwindow_transform 添加了 keep_names 参数,以指示是否应保留原始组件名称。#2207Antoine Madrona 提供。

    • 添加了新的辅助函数 darts.utils.utils.n_steps_between() ,用于高效计算两个点之间的时间步数(周期),给定频率。通过避免使用 pd.date_range() 提高了回归模型表格化的效率。#2176Dennis Bader 贡献。

    • 🔴 将 ForecastingModel.gridsearch() 中的默认 start 值从 0.5 改为 None,以使其与 historical_forecasts 和其他方法保持一致。#2243Thomas Kientz 贡献。

    • 改进 ARIMA 文档:指定了在 statsmodels 中可用的 pdPDtrend 高级选项。增加了对这些参数行为的更多解释。#2142MarcBresson 提交。

固定

  • 修复了在使用 RegressionModel 时,当 lags=None 、某些 lags_*covariates 以及协变量从第一个可预测时间步或之后开始时,滞后项未从正确索引中提取的错误。#2176Dennis Bader 修复。

  • 修复了在具有层次结构的 TimeSeries 上调用 window_transform 时的错误。现在,层次结构仅在应用于所有组件的单个变换中保留,否则将被移除。#2207Antoine Madrona 贡献。

  • 修复了概率性 LinearRegressionModel.fit() 中的一个错误,其中 model 属性没有指向所有底层估计器。#2205Antoine Madrona 提交。

  • regression_modelmulti_models=False 创建时,在 RegressionEsembleModel 中引发错误(不支持)。#2205Antoine Madrona 提交。

  • 修复了 coefficient_of_variation()intersect=True 时的错误,该错误导致系数未在交集上计算。#2202Antoine Madrona 提交。

  • 修复了 gridsearch()use_fitted_values=True 的错误,该错误导致模型未正确实例化以进行健全性检查。#2222Antoine Madrona 提交。

  • 修复了 TimeSeries.append/prepend_values() 中的一个错误,该错误导致组件名称和层次结构丢失。#2237Antoine Madrona 提交。

  • 修复了 get_multioutput_estimator() 中的一个错误,其中估计器的索引计算不正确。#2246Antoine Madrona 提交。

  • 🔴 修复了 datetime_attribute_timeseries() 中的一个错误,该错误导致未正确处理1索引的属性。此外,现在所有生成的编码都强制执行0索引。#2242Antoine Madrona 提交。

依赖项

  • 移除了 PyTorch Lightning 的上限版本 (<=v2.1.2)。#2251Dennis Bader 贡献。

对于库的开发者:

  • 使用 pre-commit autoupdate 将预提交钩子更新到最新版本。将 pyupgrade 预提交钩子参数更改为 --py38-plus#2228MarcBresson 提交。

  • 将开发依赖项升级至最新版本,#2248Dennis Bader 提交 :

    • black[jupyter]: 从 22.3.0 到 24.1.1

    • flake8: 从 4.0.1 到 7.0.0

    • isort: 从 5.11.5 到 5.13.2

    • pyupgrade: 从 2.31.0 升级到 v3.15.0

0.27.2 (2024-01-21)

对于库的用户:

改进

  • 添加了 darts.utils.statistics.plot_ccf,可用于绘制时间序列(例如目标序列)与另一个时间序列(例如协变量序列)的滞后值之间的互相关。#2122Dennis Bader 贡献。

  • TimeSeries 的改进:在使用切片或 pandas DatetimeIndex 作为 __getitem__ 的键时,改进了时间序列频率推断。#2152DavidKleindienst 完成。

固定

  • 修复了在使用 TorchForecastingModel 并设置 use_reversible_instance_norm=True 进行预测时,当 n > output_chunk_length 时输入被多次归一化的错误。#2160FourierMourier 提交。

对于库的开发者:

0.27.1 (2023-12-10)

对于库的用户:

改进

  • 🔴 添加了 CustomRNNModuleCustomBlockRNNModule 用于定义可与 RNNModelBlockRNNModel 一起使用的自定义 RNN 模块。自定义 model 现在必须是这些自定义模块的子类。#2088Dennis Bader 贡献。

固定

  • 修复了历史预测中的一个错误,其中一些 fit/predict_kwargs 没有传递给底层模型的 fit/predict 方法。#2103Dennis Bader 完成。

  • 修复了在使用 PyTorch Lightning v<2.0.0 创建 TorchForecastingModel 时出现的导入错误。#2087Eschibli 完成。

  • 修复了在使用自定义 model 创建 RNNModel 时的错误。#2088Dennis Bader 提交。

对于库的开发者:

  • 添加了一个文件夹 docs/generated_api 来定义用于生成文档的自定义 .rst 文件。#2115Dennis Bader 提交。

0.27.0 (2023-11-18)

对于库的用户:

改进

  • TorchForecastingModel 的改进:

    • 🚀🚀 我们优化了 historical_forecasts() ,使得预训练的 TorchForecastingModel 运行速度比以前快了20倍(调整批量大小后甚至更快)!。 #2013Dennis Bader 完成。

    • 添加了回调 darts.utils.callbacks.TFMProgressBar 以自定义在模型的哪些阶段显示进度条。#2020Dennis Bader 贡献。

    • 所有 InferenceDataset 现在支持带参数 stridebounds 的步幅预测。这些数据集可以与 TorchForecastingModel.predict_from_dataset() 一起使用。#2013Dennis Bader 贡献。

  • RegressionModel 的改进:

    • RegressionModels 的新示例笔记本,解释了(组件特定的)滞后、与 multi_models 相关的 output_chunk_length、多变量支持等功能。#2039Antoine Madrona 提供。

    • XGBModel 现在利用了 XGBoost 在 2.0.0 版本中发布的原生分位数回归支持,以改进概率预测。#2051Dennis Bader 贡献。

  • LocalForecastingModel 的改进

    • ExponentialSmoothing 中添加了可选的关键字参数字典 kwargs,这些参数将被传递给底层 statsmodels.tsa.holtwinters.ExponentialSmoothing 模型的构造函数。#2059Antoine Madrona 贡献。

  • 通用模型改进:

    • 新增了 fit_kwargspredict_kwargs 参数到 historical_forecasts()backtest()gridsearch() 中,这些参数将被传递给模型的 fit() 和/或 predict 方法。例如,您现在可以根据模型支持设置批量大小、静态验证序列等。#2050Antoine Madrona 贡献

    • 为了透明性,当使用过去协变量进行自回归预测(n >= output_chunk_length)时,我们会发出一个(可移除的)警告,以告知用户将访问过去协变量的未来值。#2049Antoine Madrona 提供

  • 其他改进:

    • 在生成/计算节假日和日期时间属性之前,增加了对时间索引时区转换的支持,使用参数 tz。支持已添加到所有时间轴编码器、独立编码器和预测模型的 add_encoders 、时间序列生成实用函数 holidays_timeseries()datetime_attribute_timeseries() ,以及 TimeSeries 方法 add_datetime_attribute()add_holidays()#2054Dennis Bader 贡献。

    • 新增数据转换器:MIDAS,使用混合数据采样将``TimeSeries``从高频转换为低频(反之亦然)。#1820Boyd BierstekerAntoine MadronaDennis Bader 贡献。

    • 添加了新数据集 ElectricityConsumptionZurichDataset : 该数据集包含2015-2022年瑞士苏黎世家庭在不同电网级别的电力消耗数据。我们还添加了苏黎世的天气测量数据,这些数据可以用作建模的协变量。#2039Antoine MadronaDennis Bader 贡献。

    • 调整了示例笔记本,以正确应用数据转换器并避免前瞻性偏差。#2020Samriddhi Singh 完成。

固定

  • 修复了在调用 historical_forecasts()overlap_end=False 时,未生成最后一个可能的预测的错误。#2013Dennis Bader 提交。

  • 修复了在调用针对具有不同组件特定滞后的 RegressionModel 训练的优化 historical_forecasts() 时的一个错误。#2040Antoine Madrona 完成。

  • 修复了在使用 RegressionModel 和非均匀间隔频率(例如月初)的序列时使用编码器的错误。在尝试将 pd.Timedelta 除以不明确的频率时,这会在滞后数据创建期间引发错误。#2034Antoine Madrona 提交。

  • 修复了加载 TorchForecastingModel 权重时的错误,该模型是在精度不是 float64 的情况下训练的。#2046Freddie Hsin-Fu Huang 完成。

  • 迁移学习 示例笔记本中修复了链接,使用了公开托管的三个数据集版本。#2067Antoine Madrona 完成。

  • 修复了在使用 NLinearModel 处理包含协变量的多元序列且 normalize=True 时的错误。#2072Antoine Madrona 完成。

  • 修复了在使用 DLinearModelNLinearModel 处理具有跨组件共享静态协变量的多元序列且 use_static_covariates=True 时的错误。#2070Antoine Madrona 完成。

对于库的开发者:

无变化。

0.26.0 (2023-09-16)

对于库的用户:

改进

  • RegressionModel 的改进,由 Antoine Madrona#1962 中提出:

    • 🚀🚀 所有模型现在都支持目标、过去和未来协变量序列的组件/列特定滞后。

  • TorchForecastingModel 的改进:

    • 🚀 为所有模型(除 RNNModel 外)添加了 RINorm``(可逆实例归一化)作为输入归一化选项。通过模型创建参数 ``use_reversible_instance_norm 激活它。#1969Dennis Bader 贡献。

    • 🔴 根据模型架构师的建议,为 TiDEModel 添加了过去协变量特征投影功能,并引入了参数 temporal_width_past。参数 temporal_width 已重命名为 temporal_width_future。此外,增加了通过设置 temporal_width_past/future=0 来绕过特征投影的选项。由 Dennis Bader#1993 中贡献。

  • EnsembleModel 的改进,由 Antoine MadronaDennis Bader#1815 中完成:

    • 🔴 将模型构造函数参数 models 重命名为 forecasting_models

    • 🚀🚀 添加了对预训练的 GlobalForecastingModel 作为 forecasting_models 的支持,以避免在集成时重新训练。这要求所有模型都是预训练的全局模型。

    • 🚀 增加了对生成 forecasting_model 预测(用于训练集成模型)的支持,使用历史预测而非直接(自回归)预测。在模型创建时通过设置 train_using_historical_forecasts=True 来启用。

    • 为集成模型添加了一个示例笔记本。

  • 对历史预测、回测和网格搜索的改进,由 Antoine Madrona#1866 中完成。

    • 增加了对负 start 值的支持,以便相对于目标序列的末尾开始历史预测。

    • 添加了一个新的参数 start_format,允许将整数 start 用作 series 的索引位置或索引值/标签,该 series 使用 pd.RangeIndex 进行索引。

    • 增加了对 TimeSeries 的支持,其 RangeIndex 从负整数开始。

  • 其他改进:

    • 减小了 Darts docker 镜像 unit8/darts:latest 的大小,并包含了所有可选模型以及开发需求。#1878Alex Colpitts 完成。

    • 在所有模型的docstring中添加了简短的示例,包括协变量的使用和一些模型特定的参数。#1956Antoine Madrona 提交。

    • 添加了方法 TimeSeries.cumsum() 以获取沿时间轴的时间序列的累积和。#1988Eliot Zubkoff 贡献。

固定

  • 修复了在使用 df.columns.name != None 的 pandas.DataFrame 时 TimeSeries.from_dataframe() 中的一个错误。#1938Antoine Madrona 完成。

  • 修复了在预测模型仅有协变量滞后时,RegressionEnsembleModel.extreme_lags 中的一个错误。#1942Antoine Madrona 完成。

  • 修复了在使用 TFTExplainer 与在 GPU 上运行的 TFTModel 时的一个错误。#1949Dennis Bader 完成。

  • 修复了 TorchForecastingModel.load_weights() 中的一个错误,该错误在从有效架构加载权重时会引发错误。#1952Antoine Madrona 提交。

  • 修复了 NLinearModel 中的一个错误,该错误导致 normalize=True 和过去协变量不能同时使用。#1873Eliot Zubkoff 提交。

  • 当包含至少一个 LocalForecastingModelEnsembleModelretrain=False 的情况下调用 historical_forecasts 时引发错误。 #1815Antoine Madrona 提交。

  • 🔴 在 add_encoders 的“custom”编码器中放弃了对lambda函数的支持,转而使用命名函数,以确保模型可以被导出。#1957Antoine Madrona 提供。

对于库的开发者:

改进

  • 重构了所有测试以使用 pytest 代替 unittest。#1950Dennis Bader 完成。

0.25.0 (2023-08-04)

对于库的用户:

安装

  • 🔴 从PyPI包(dartsu8dartsu8darts[torch])和conda-forge包(u8dartsu8darts-torch)中移除了Prophet、LightGBM和CatBoost依赖,以避免部分用户遇到的安装问题(如在Apple M1/M2设备上的安装问题等)。由 Julien HerzenDennis Bader#1589 中完成。

    • 模型仍然可以通过按照我们的 安装指南 中描述的方式安装所需的包来获得支持。

    • Darts 包及其所有依赖项仍然可以通过 PyPI 包 u8darts[all] 或 conda-forge 包 u8darts-all 进行安装。

    • 添加了新的 PyPI 风格 u8darts[notorch],以及 conda-forge 风格 u8darts-notorch,它们等同于旧的 u8darts 安装(所有依赖项,除了神经网络)。

  • 🔴 移除了对 Python 3.7 的支持 #1864Dennis Bader 完成。

改进

  • 通用模型改进:

    • 🚀🚀 通过向量化预测,优化了 retrain=Falseforecast_horizon <= output_chunk_length 时的 RegressionModelhistorical_forecasts()。这比以前快了多达700倍!#1885Antoine Madrona 贡献。

    • 改进了所有模型的 historical_forecasts()backtest() 的效率,对于更多的预测迭代和序列,显著减少了处理时间。#1801Dennis Bader 贡献。

    • 🚀🚀 增加了对概率模型直接预测似然参数的支持(适用于回归和torch模型)。在调用 predict() 时设置 predict_likelihood_parameters=True#1811Antoine Madrona 贡献。

    • 🚀🚀 新的预测模型:TiDEModel ,如 这篇论文 中所提出的。这是一个基于MLP的编码器-解码器模型,据说其性能优于许多基于Transformer的架构。由 Alex Colpitts#1727 中提出。

    • Prophet 现在支持条件性季节性,并且正确处理传递给 Prophet.add_seasonality() 和模型创建参数 add_seasonalities 的所有参数 #1829Idan Shilon 完成。

    • 添加了方法 generate_fit_predict_encodings() 以生成训练和预测所需的编码(从模型创建时的 add_encoders 生成)。#1925Dennis Bader 贡献。

    • 为所有非深度学习模型的 save()load() 函数添加了对 PathLike 的支持。#1754Simon Sudrich 贡献。

    • 添加了模型属性 ForecastingModel.supports_multivariate 以指示模型是否支持多变量预测。#1848Felix Divo 贡献。

  • EnsembleModel 的改进:

    • 模型创建参数 forecasting_models 现在支持 LocalForecastingModelGlobalForecastingModel 的混合(仅限单个 TimeSeries 的训练/推理,由于本地模型)。#1745Antoine Madrona 贡献。

    • 现在,即使 forecasting_models 对协变量的支持不同,未来和过去的协变量也可以使用。传递给 fit()/predict() 的协变量仅由支持它的模型使用。#1745Antoine Madrona 贡献。

    • RegressionEnsembleModelNaiveEnsembleModel 可以生成概率预测,概率性的 forecasting_models 可以被采样以训练 regression_model ,更新了文档(堆叠技术)。 #1692Antoine Madrona 提供。

  • Explainability 模块的改进:

  • 文档改进 #1904Dennis Bader 完成:

    • 在 README.md 中创建了模型部分,通过添加模型链接并将它们重新组织成模型类别,使协变量用户指南和预测模型 API 参考更加用户友好。

    • 添加了动态时间规整(DTW)模块并改进了其外观。

  • 其他改进:

    • 在使用 StaticCovariatesTransformersklearn.preprocessing.OneHotEncoder 时,改进了静态协变量列的命名。#1863Anne de Vries 完成。

    • extract_trend_and_seasonality() 添加了 MSTL``(使用 LOESS 进行多季节性季节趋势分解)作为 ``method 选项。#1879Alex Colpitts 贡献。

    • 新增 RINorm (可逆实例归一化) 作为 TorchForecastingModel 的新输入归一化选项。目前只有 TiDEModel 支持它,通过模型创建参数 use_reversible_instance_norm#1865Alex Colpitts 贡献。

    • 改进了 TimeSeries.plot() :现在通过参数 ax 正确支持自定义轴。现在返回轴以供下游任务使用。#1916Dennis Bader 贡献。

固定

  • 修复了在提供标签前缀时,TimeSeries.plot() 未考虑原始组件名称的问题。#1783Simon Sudrich 提交。

  • 修复了在模型创建时使用类似数组的对象时 ForecastingModel 的字符串表示问题。#1749Antoine Madrona 提交。

  • 修复了 TorchForecastingModel.load_from_checkpoint() 未能正确加载损失函数和指标的问题。#1759Antoine Madrona 提交。

  • 修复了加载带有编码器或似然的 TorchForecastingModel 权重时的错误。#1744Antoine Madrona 完成。

  • 修复了在使用 ShapExplainer 时选择 target_components 的错误。#1803Dennis Bader 完成。

  • 修复了 TimeSeries.__getitem__() 对于起始值不为0且频率不为1的RangeIndex序列的问题。#1868Dennis Bader 完成。

  • 修复了 DTWAlignment.plot_alignment() 无法正确绘制带有 RangeIndex 的序列对齐图的问题。#1880Ahmet ZamanisDennis Bader 完成。

  • 修复了在调用 ARIMA.predict()``num_samples > 1``(概率预测)时的一个问题,其中模拟的起点没有固定在目标序列的末尾。#1893Dennis Bader 提交。

  • 修复了在使用 TFTModel.predict() 并设置 full_attention=True 时,注意力掩码未正确应用的问题。#1392Dennis Bader 修复。

对于库的开发者:

改进

  • 重构了 ForecastingModelExplainerExplainabilityResult 以简化新解释器的实现。#1392Dennis Bader 完成。

  • 已调整所有单元测试以在 M1 设备上成功运行。#1933Dennis Bader 完成。

0.24.0 (2023-04-12)

对于库的用户:

改进

  • 通用模型改进:

    • 新的基线预测模型 NaiveMovingAverage#1557Janek Fidor 提交。

    • 来自 Nixtla 的 statsforecasts 库的新模型 StatsForecastAutoCESStatsForecastAutoTheta 作为不支持协变量的本地预测模型。AutoTheta 支持概率预测。#1476Boyd Biersteker 贡献。

    • StatsForecastAutoETS 添加了对未来协变量和概率预测的支持。#1476Boyd Biersteker 贡献。

    • Prophet 添加了对逻辑增长的支持,参数包括 growthcapfloor。由 David Kleindienst#1419 中贡献。

    • 改进了模型字符串/对象表示风格,类似于scikit-learn模型。#1590Janek Fidor 完成。

    • 🔴 将 MovingAverage 重命名为 MovingAverageFilter 以避免与新的 NaiveMovingAverage 模型混淆。#1557Janek Fidor 提交。

  • RegressionModel 的改进:

    • 优化了拟合/预测集的滞后数据创建,实现了大幅度的速度提升。#1399Matt Bilton 完成。

    • LightGBMModel 添加了对分类过去/未来/静态协变量的支持,通过模型创建参数 categorical_*_covariates#1585Rijk van der Meulen 贡献。

    • 添加了滞后特征名称以提高可解释性;可通过模型属性 lagged_feature_names 访问。#1679Antoine Madrona 贡献。

    • 🔴 所有模型新增 use_static_covariates 选项:当设置为 True(默认)时,模型在拟合时使用静态协变量(如果可用),并确保所有用于训练或预测的目标 series 的静态协变量形状相同;当设置为 False 时,模型忽略静态协变量。由 Dennis Bader#1700 中贡献。

  • TorchForecastingModel 的改进:

    • 新增方法 load_weights()load_weights_from_checkpoint() 用于从手动保存的模型或检查点中仅加载权重。这允许使用不同的优化器或学习率调度器对预训练模型进行微调。#1501Antoine Madrona 提供。

    • 新方法 lr_find() 帮助为你的预测问题找到一个好的初始学习率。#1609Levente SzabadosDennis Bader 贡献。

    • 改进了 用户指南 并添加了关于保存/加载(检查点、手动保存/加载、仅加载权重)和回调的新章节。#1661Antoine Madrona 完成。

    • 🔴 在保存文件名中用 "_" 替换了 ":" 以避免在某些操作系统上的问题。对于加载早期 Darts 版本保存的模型,尝试通过将 ":" 替换为 "_" 来重命名文件名。#1501Antoine Madrona 提供。

    • 🔴 为 TFTModelDLinearModelNLinearModel 新增 use_static_covariates 选项:当设置为 True(默认)时,模型在拟合时使用静态协变量(如果可用),并确保所有用于训练或预测的目标 series 的静态协变量形状一致;当设置为 False 时,模型忽略静态协变量。由 Dennis Bader#1700 中贡献。

  • TimeSeries 的改进:

    • from_* 工厂方法中增加了对整数索引输入的支持,如果索引可以转换为 pandas.RangeIndex。#1527Dennis Bader 贡献。

    • 增加了对步长(freq)不为1的整数索引输入的支持。#1527Dennis Bader 贡献。

    • 通过 fill_missing_dates=True 优化时间序列创建,实现了大幅速度提升。#1527Dennis Bader 贡献。

    • from_group_dataframe() 现在会在怀疑存在“坏”的时间索引(单调递增)时警告用户。#1628Dennis Bader 提供。

  • WindowTransformer 的转换输出添加了一个参数,以提供自定义函数名称;改进了 window 参数的解释。#1676#1666Jing Qiang Goh 提交。

  • backtest() 中添加了 historical_forecasts 参数,允许使用从 historical_forecasts() 预先计算的历史预测。#1597Janek Fidor 贡献。

  • ShapExplainabilityResult 中添加了特征值和 SHAP 对象,使用户可以轻松访问所有 SHAP 特定的解释结果。#1545Rijk van der Meulen 贡献。

  • 新的 quantile_loss() (分位数损失) 指标用于概率预测。#1559Janek Fidor 提供。

固定

  • 修复了 BottomUp/TopDownReconciliator 中的一个问题,该问题未考虑序列组件的顺序。#1592David Kleindienst 提交。

  • 修复了 DLinearModel 不支持偶数 kernel_size 的问题。#1695Antoine Madrona 提交。

  • 修复了 RegressionEnsembleModel 在训练期间未使用未来协变量的问题。#1660Rajesh Balakrishnan 提交。

  • 修复了 NaiveEnsembleModel 预测未传递序列组件名称的问题。#1602David Kleindienst 完成。

  • 修复了 TorchForecastingModel 中的一个问题,该问题阻止了多 GPU 训练的使用。#1509Levente Szabados 完成。

  • 修复了当 trend=None 时保存 FFT 模型的错误。#1594Antoine Madrona 完成。

  • 修复了 PyTorch-Lightning 版本 2.0.0 的一些问题。#1651Dennis Bader 完成。

  • 修复了 QuantileDetector 中的一个错误,该错误在低和高分位数具有相同值时引发错误。#1553Julien Adda 提交。

  • 修复了一个阻止 TimeSeries 为空的问题。#1359Antoine Madrona 提交。

  • 修复了在多个序列上使用 backtest() 时的问题。#1517Julien Herzen 完成。

  • historical_forecasts() 的常规修复

    • 修复了 retrain 函数未被正确处理的问题;改进了 starttrain_length 参数的处理;通过警告和改进的错误消息提高了可解释性(可以通过 show_warnings=False 关闭警告)。由 #1675Antoine MadronaDennis Bader 完成。

    • 修复了多个模型(主要是集成模型和本地模型)中自动 start 不遵守最小所需训练长度的问题。#1616Janek FidorDennis Bader 完成。

    • 修复了仅使用未来协变量滞后时使用 RegressionModel 的问题。#1685Maxime Dumonal 提交。

对于库的开发者:

改进

  • 本地跳过慢速测试的选项:pytest . --no-cov -m "not slow"#1625Blazej Nowicki 提供。

  • 对数据转换器进行了重大重构,简化了新转换器的实现。#1409Matt Bilton 完成。

0.23.1 (2023-01-12)

补丁发布

固定

  • 修复了 TimeSeries 中的一个问题,使其与 Python 3.7 不兼容。#1449Dennis Bader 完成。

  • 修复了在使用 RegressionModel 时,当序列长度不一时静态协变量的问题。#1469Eliane Maalouf 完成。

  • 修复了 PyTorch Lightning 训练器处理的问题。#1459Dennis Bader 完成。

  • 修复了 historical_forecasts() 在迭代训练 PyTorch 模型时,而不是从头开始训练的问题。#1465Dennis Bader 提交。

  • 修复了在提供 future_covariates 且未指定 start 时,historical_forecasts() 在某些情况下无法工作的问题。#1481Maxime Dumonal 提交。

  • 修复了整数索引上 slice_n_points 函数的问题。#1482Julien Herzen 提交。

0.23.0 (2022-12-23)

对于库的用户:

改进

  • 🚀🚀🚀 全新专用于时间序列异常检测的 Darts 模块:darts.ad。更多 API 文档信息请访问:https://unit8co.github.io/darts/generated_api/darts.ad.html#1256Julien AddaJulien Herzen 贡献。

  • 新的预测模型:DLinearModelNLinearModel这篇论文 中所提议。#1139Julien HerzenGreg DeVos 贡献。

  • 新的预测模型:XGBModel 实现 XGBoost。#1405Julien Herzen 贡献。

  • 所有 RegressionModel 的新 multi_models 选项:当设置为 False 时,仅使用一个基础估计器进行多步预测,这可以大幅提高计算效率。#1291Eliane Maalouf 提供。

  • 所有 ``RegressionModel``(包括 LightGBM、Catboost、XGBoost、随机森林等)现在支持静态协变量。#1412Eliane Maalouf 贡献。

  • historical_forecasts()backtest() 现在也可以处理多系列数据。#1318Maxime Dumonal 提交。

  • 新窗口变换功能:TimeSeries.window_transform() 和新的 WindowTransformer,允许轻松创建窗口特征。#1269Eliane Maalouf 贡献。

  • 🔴 对 TorchForecastingModels 的改进:可以直接将训练在 GPU 上的模型加载到 CPU。减少了保存文件的大小。改进了 PyTorch Lightning Trainer 的处理,修复了几个小问题。移除了已弃用的方法 load_modelsave_model #1371Dennis Bader 完成。

  • 编码器改进:通过在模型创建时使用 add_encoders ,为所有支持协变量的模型添加了对编码器的支持。编码器现在为所有模型生成了正确的最小必需协变量时间跨度。#1338Dennis Bader 贡献。

  • darts.datasets 中新增了数据集(ILINetDatasetExchangeRateDatasetTrafficDatasetWeatherDataset)`#1298 <https://github.com/unit8co/darts/pull/1298>`_,由 Kamil Wierciak 贡献。#1291,由 Eliane Maalouf 贡献。

  • 新的 Diff 转换器,可以进行差异化和“反差异化”操作 #1380Matt Bilton 提供。

  • 对 KalmanForecaster 的改进:该模型现在可以接受与用于拟合模型的不同的时间序列进行预测。#1338Dennis Bader 贡献。

  • 回测函数现在可以接受一个度量函数列表 #1333 ,由 Antoine Madrona 提供。

  • 将基线模型扩展到处理多元序列 #1373Błażej Nowicki 完成。

  • 改进 TimeSeries.gaps() #1265Antoine Madrona 完成。

  • TimeSeries.quantile_timeseries() 方法的加速 #1351@tranquilitysmile 完成。

  • 一些难以安装的依赖项(LightGBM、Catboost、XGBoost、Prophet、Statsforecast)不再需要(如果未安装,相应的模型将不可用)`#1360 <https://github.com/unit8co/darts/pull/1360>`_ 由 Antoine Madrona 完成。

  • 移除了 IPython 作为依赖项。#1331Erik Hasse 提交

  • 允许创建空的 TimeSeries #1359Antoine Madrona 完成。

固定

  • 修复了回归模型中ShapExplainer的边缘情况,其中协变量序列 > 目标序列 #1310Rijk van der Meulen 完成

  • 修复了 TimeSeries.resample() 中的一个错误 #1350Antoine Madrona 完成。

  • 修复了当分割点不在序列中时的固定分割方法 #1415@DavidKleindienst 完成

  • 修复了 append_values()prepend_values() 未能正确扩展 RangeIndex 的问题 #1435Matt Bilton 完成。

  • 修复了一些时区问题 #1343Antoine Madrona 完成。

  • 在使用 RegressionEnsembleModel 时修复了单个目标系列的一些问题 #1357Dennis Bader 完成。

  • 在集成模型中对随机模型的固定处理 #1423Eliane Maalouf 完成。

0.22.0 (2022-10-04)

对于库的用户:

改进

  • 新的可解释性功能。在 darts.explainability 中的类 ShapExplainer 可以提供 Shap 值解释,说明每个滞后项和每个维度在生成 RegressionModel 的每个预测滞后项中的重要性。#909Maxime Dumonal 贡献。

  • 新模型:StatsForecastsETS。与 StatsForecastsAutoARIMA 类似,该模型提供了 Nixtla 的 statsforecasts 库中的 ETS 模型作为支持未来协变量的本地预测模型。#1171Julien Herzen 贡献。

  • residuals() 函数添加了对过去和未来协变量的支持。#1223Eliane Maalouf 贡献。

  • ForecastingModelhistorical_forecasts 方法中增加了对每 n 次迭代和自定义条件下重新训练模型的支持。#1139Francesco Bruzzesi 完成。

  • GaussianLikelihood 中增加了对 beta-NLL 的支持,如 这篇论文 所提议。#1162Julien Herzen 提交。

  • 新的 LayerNorm 替代方案,RMSNorm 和 LayerNormNoBias #1113Greg DeVos 提供。

  • 🔴 编码器的改进:改进编码器变换器的拟合行为并解决一些问题。移除对绝对索引编码的支持。#1257Dennis Bader 完成。

  • 为 Catboost 和 LightGBM 覆盖 min_train_series_length #1214Anne de Vries 完成。

  • 新的示例笔记本展示了使用 Optuna 进行超参数优化的端到端示例 #1242Julien Herzen 提供。

  • 关于使用 Optuna 和 Ray Tune 进行超参数优化的新用户指南部分 #1242Julien Herzen 提供。

  • 关于模型保存和加载的文档。 #1210Amadej Kocbek 提供。

  • 🔴 torch_device_str 已从所有 torch 模型中移除,转而使用 Pytorch Lightning 的 pl_trainer_kwargs 方法 #1244,由 Greg DeVos 完成。

固定

  • RegressionModel 中,当使用单个目标序列调用 fit/predict 时,add_encoders 存在问题。#1193Dennis Bader 提交。

  • 一些与整数索引序列相关的问题。#1191Julien Herzen 提交。

  • 在使用最新版本的 Prophet (>=1.1.1) 时出现的一个错误。#1208Julien Herzen 提交。

  • 在调用 fit_transform() 时出现的问题。#1165Julien Herzen 提交。

  • GaussianLikelihood 对象中的一个错误导致置信区间出现问题。#1162Julien Herzen 修复。

  • 一个阻止绘制长度为1的``TimeSeries``的问题。#1206Julien Herzen 解决。

  • 为 ExponentialSmoothing 模型添加类型提示 #1185Rijk van der Meulen 完成

0.21.0 (2022-08-12)

对于库的用户:

改进

  • 新模型:Catboost,支持 quantilepoissongaussian 似然。 #1007#1044Jonas Racine 贡献。

  • 扩展了 RegressionModeladd_encoders 选项。现在可以像 torch 模型一样,直接为这些模型添加基于日历的或自定义的过去或未来协变量。#1093Dennis Bader 贡献。

  • StaticCovariatesTransformer 的介绍,TFTModel 的分类静态协变量支持,静态协变量的示例和用户指南更新。#1081Dennis Bader 提供。

  • ARIMA 和 VARIMA 模型现在支持应用于与训练时使用的新系列不同的系列。#1036Samuele Giuliano Piazzetta 完成。

  • 所有 Darts 预测模型现在都有统一的 save()load() 方法。#1070Dustin Brunner 贡献。

  • 日志记录的改进。#1034Dustin Brunner 完成。

  • 重新整合 Prophet >= 1.1 到核心依赖中(因为它不再依赖于 PyStan)。#1054Julien Herzen 完成。

  • 新增了 AustralianTourismDataset#1141Julien Herzen 贡献。

  • 新增了一个展示分层调和的笔记本。#1147Julien Herzen 提交。

  • TimeSeries 中添加了 drop_columns() 方法。#1040@shaido987 提供。

  • 当不需要类型转换时,加速静态协变量。#1053Julien Herzen 提交。

  • 为 FourTheta 和 Theta 模型实现了 min_train_series_length 方法,当适当的时候,该方法会用 2*seasonal_period 覆盖默认的最小 3 个训练样本。#1101Rijk van der Meulen 完成。

  • 在图表中使默认格式化成为可选。#1056Colin Delahunty <https://github.com/colin99d_> 提交

  • residuals() 方法中引入 retrain 选项。#1066Julien Herzen 提交。

  • 改进了错误信息。#1066Julien Herzen 完成。

  • 用户指南的可读性改进。#1039, #1046Ryan Russell 完成

固定

  • 修复了加载 torch 预测模型时的错误。#1124Dennis Bader 完成。

  • 🔴 在 TimeSeries.concatenate() 中将 ignore_time_axes 重命名为 ignore_time_axis#1073Thomas KIENTZ 提交

  • 在缺失值填充中传播静态协方差和层次结构。#1076Julien Herzen 提交。

  • 修复了在 NBEATSModel 中使用 num_stacks 而不是 self.num_stacks 的问题。此外,还修正了 API 参考文档中的几个错误。#1103Rijk van der Meulen 提交。

  • 修复了 univariate_component() 方法以传播静态协变量并删除层次结构。#1128Julien Herzen 提交。

  • 修复了各种问题。#1106Julien Herzen 完成。

  • 修复了 RNNModel 上的 residuals 问题。#1066Julien Herzen 完成。

0.20.0 (2022-06-22)

对于库的用户:

改进

固定

  • tail()head() 的错误 #942Julien Herzen 修复。

  • metric 函数的参数在 gridsearch 和 backtest 中被还原的问题 #989Clara Grotehans 提出。

  • 检查全局模型中是否已调用 fit() 的错误 #944Julien Herzen 提交。

  • 在较新版本的 sklearn 中发生的 Gaussian Process 过滤器错误 #963Julien Herzen 修复。

对于库的开发者:

固定

0.19.0 (2022-04-13)

对于库的用户:

改进

  • 新模型:NHiTS 实现了 N-HiTS 模型。#898Julien Herzen 提交。

  • 新模型: StatsForecastAutoARIMA 实现了 statsforecast 的 (更快的) AutoARIMA 版本。 #893Julien Herzen 贡献。

  • 新模型:Croston 方法。#893Julien Herzen 提交。

  • 更好地表示由分位数指定的分布中的随机 TimeSeries#899Gian Wiher 提交。

  • 为随机 RegressionModel 提供更好的轨迹采样。#899Gian Wiher 提交。

  • 改进了用户指南,增加了更多章节。#905Julien Herzen 提交。

  • 新的笔记本展示了在大规模时间序列数据集上进行迁移学习和训练预测模型。#885Julien Herzen 提交。

固定

0.18.0 (2022-03-22)

对于库的用户:

改进

  • LinearRegressionModelLightGBMModel 现在可以支持概率性回归,包括分位数回归和泊松回归。#831, #853Gian Wiher 贡献。

  • 新模型:BATSTBATS,基于 tbats#816Julien Herzen 贡献。

  • 在基于 PyTorch 的模型中处理随机输入。#833Julien Herzen 提交。

  • GPU 和 TPU 用户指南。#826@gsamaras 提供。

  • 在 PyTorch Lightning 进度条中添加了训练和验证损失。#825Dennis Bader 贡献。

  • darts.utils.losses 中提供了更多适用于基于PyTorch模型的损失函数:SmapeLossMapeLossMAELoss。由 Julien Herzen#845 中贡献。

  • 对季节性分解的改进 #862. 由 Gian Wiher. 完成。

  • gridsearch() 方法现在可以返回最佳指标分数。#822@nlhkh 提供。

  • 在预测时移除了不必要的检查点加载。#821Dennis Bader 提交。

  • 验证的默认epoch数从10改为1。#825Dennis Bader 提交。

固定

  • 修复了 fit_from_dataset() 中编码器的一些问题。#829Julien Herzen 提交。

  • 修复了 DualCovariatesForecastingModels 的协变量切片问题。#858Dennis Bader 完成。

0.17.1 (2022-02-17)

补丁发布

对于库的用户:

固定

  • 修复了(现已弃用)``torch_device_str`` 参数的问题,并改进了与使用 PyTorch Lightning 设备相关的文档。#806Dennis Bader 完成。

  • 修复了 ReduceLROnPlateau 的问题。#806Dennis Bader 完成。

  • 修复了N-BEATS周期性基函数的问题。#804Vladimir Chernykh 完成。

  • pandas 的要求放宽;从 pandas>=1.1.0 改为 pandas>=1.0.5#800@adelnick 提交。

0.17.0 (2022-02-15)

对于库的用户:

改进

  • 🚀 支持 PyTorch Lightning:所有深度学习模型现在都使用 PyTorch Lightning 实现。这意味着通过 PyTorch Lightning 训练器的功能,现在可以使用更多功能;例如定制回调或多 GPU 训练。#702Dennis Bader贡献。

  • RegressionModel 现在接受一个 output_chunk_length 参数;这意味着它们可以被训练来预测超过一个时间步长(并且可以自回归地用于在更长的范围内进行预测)。#761Dustin Brunner 贡献。

  • 🔴 TimeSeries 的“简单统计”方法(如 mean()max()min() 等)已重构,以原生支持随机 TimeSeries,并可在可配置的轴上操作。#773Gian Wiher 提交。

  • 🔴 TimeSeries 现在仅支持 pandas RangeIndex 作为整数索引,不再支持 Int64Index,因为自 pandas 1.4.0 起它已被弃用。这也确保了即使使用整数索引,TimeSeries 也不会有缺失的“日期”。#777Julien Herzen 贡献。

  • 新模型: KalmanForecaster 是一个新的概率模型,适用于多元序列,接受未来协变量,并通过将给定卡尔曼滤波器的状态空间模型运行到未来来工作。fit() 函数使用 N4SID 算法进行系统识别。#743Julien Herzen 提供。

  • KalmanFilter 现在也可以处理包含缺失值的 TimeSeries#743Julien Herzen 贡献。

  • 估计器(预测和过滤模型)现在在调用 fit() 时也会返回它们自己的实例,这允许链式调用。#741Julien Herzen 提交。

固定

对于库的开发者:

0.16.1 (2022-01-24)

补丁发布

对于库的用户:

  • 修复了与最新版本Pandas的不兼容问题 (#752),由 Julien Herzen完成。

  • 修复了在GPU上使用lstm_layers > 1时出现的非连续错误。(#740)由 Dennis Bader 完成。

  • API文档中类型注解的小改进(#744),由 Dustin Brunner完成。

对于库的开发者:

0.16.0 (2022-01-13)

对于库的用户:

改进

  • 文档页面 已经更新,现在包含了一个全新的快速入门指南,以及一个用户指南部分,该部分将随着时间的推移逐步填充内容。

  • API 文档 已经进行了修订和改进,特别是使用了 numpydoc

  • RegressionModel 中,数据集构建过程得到了改进,从而显著提高了速度。

新增

  • KalmanFilter 现在可以使用 fit() 进行系统辨识(使用 nfoursid)。

固定

  • 捕捉集成模型中的 潜在问题案例

  • 修复了对 ReduceLROnPlateau 调度器的固定支持。

对于库的开发者:

  • 我们已经切换到 black 进行代码格式化(这是由CI流水线检查的)。

0.15.0 (2021-12-24)

对于库的用户:

新增

  • 在基于Torch的模型中实时编码位置和日历信息。基于Torch的模型现在接受一个 add_encoders 参数选项,指定如何实时使用某些日历和位置信息作为过去和/或未来的协变量。

    示例:

    from darts.dataprocessing.transformers import Scaler
    add_encoders={
        'cyclic': {'future': ['month']},
        'datetime_attribute': {'past': ['hour', 'dayofweek']},
        'position': {'past': ['absolute'], 'future': ['relative']},
        'custom': {'past': [lambda idx: (idx.year - 1950) / 50]},
        'transformer': Scaler()
    }
    

    这将添加月份的循环编码作为未来协变量,添加一些日期时间属性作为过去和未来协变量,一个绝对/相对位置(索引),甚至一些自定义的索引映射(例如年份的函数)。一个 Scaler 将被应用于在训练和推理期间拟合/转换所有这些协变量。

  • 现在,缩放器也可以应用于随机的 TimeSeries

  • 现在,Torch 模型 fit() 方法新增了一个参数 max_samples_per_ts,该参数可以通过每个时间序列最多取最近的 max_samples_per_ts 个训练样本,来限制底层训练数据集中的样本数量。

  • 所有支持协变量的本地预测模型(Prophet、ARIMA、VARIMA、AutoARIMA)现在都能自行处理协变量切片;这意味着您不需要确保协变量具有完全正确的时间跨度。只要它们包含正确的时间跨度,模型就会为您切片。

  • TimeSeries.map() 和映射器数据转换器现在可以在随机 TimeSeries 上工作。

  • 格兰杰因果关系函数:utils.statistics.granger_causality_tests 可以测试一个单变量 TimeSeries 是否“格兰杰导致”另一个。

  • 新的单变量 TimeSeries 平稳性检验: darts.utils.statistics.stationarity_testsdarts.utils.statistics.stationarity_test_adfdarts.utils.statistics.stationarity_test_kpss

  • 新的测试覆盖率徽章 🦄

固定

  • 修复了不同笔记本中的各种问题。

  • 修复了处理 Prophet 模型中频率的错误。

  • 修复了一个问题,该问题导致 PastCovariatesTorchModels``(如 ``NBEATSModel)在 n > output_chunk_lengthn 不是 output_chunk_length 的倍数时预测失败。

  • 修复了回测中的一个问题,该问题导致在 retrain=False 时,未训练的模型在初始窗口上未进行训练。

  • 修复了导致基于Torch的模型 residuals() 失败的问题。

对于库的开发者:

  • 更新了 贡献指南

  • 单元测试已按照库的子模块结构进行了重新组织。

  • 所有相对导入路径已被移除并替换为绝对路径。

  • 现在使用 pytest 和 pytest-cov 来运行测试并计算覆盖率。

0.14.0 (2021-11-28)

对于库的用户:

新增

  • 概率性 N-BEATS:NBEATSModel 现在可以生成概率性预测,类似于 Darts 中的所有其他深度学习模型(通过指定 likelihood 并使用 num_samples >> 1 进行预测)。

  • 我们已经改进了基于PyTorch模型的数据加载功能的速度。这应该会加快训练速度,通常提高几个百分点。

  • 在基于PyTorch的模型的``fit()``和``predict()``方法中添加了``num_loader_workers``参数,以便控制PyTorch DataLoaders的``num_workers``。这有时会导致速度大幅提升。

  • 新方法 TimeSeries.astype() 允许轻松转换类型(例如在 np.float64np.float32 之间)。

  • 在时间序列生成模块中添加了 dtype 作为选项。

  • 为基于PyTorch的模型添加了一个小的 性能指南

  • 在TFT模型中指定一个(相对)时间索引作为未来协变量的可能性。使用此功能时,不必指定未来协变量。

  • 新的 TFT 示例笔记本。

  • 较宽松的依赖关系:我们放宽了对所需依赖版本的要求。

固定

  • 对 Temporal Fusion Transformer TFTModel 进行了小修复,这应该会提高性能。

  • 对某些单元测试的随机状态进行了小修复。

  • 修复了Transformer示例笔记本中的一个拼写错误。

0.13.1 (2021-11-08)

对于库的用户:

新增

  • TimeSeries 中的工厂方法现在为 classmethods,这使得 TimeSeries 的继承更加方便。

固定

  • 一个导致某些版本安装无法工作的问题

0.13.0 (2021-11-07)

对于库的用户:

新增

  • 新的预测模型,Temporal Fusion Transformer <https://arxiv.org/abs/1912.09363>`_(``TFTModel`)。一种支持过去和未来协变量的新型深度学习模型。

  • 改进了对Facebook Prophet模型(Prophet)的支持:

    • 增加了对未来协变量的拟合和预测支持。例如:model.fit(train, future_covariates=train_covariates)model.predict(n=len(test), num_sample=1, future_covariates=test_covariates)

    • 添加了随机预测,例如:model.predict(n=len(test), num_samples=200)

    • 在模型创建时通过 add_seasonality 关键字参数(如 Prophet(add_seasonality=kwargs_dict))或在拟合前通过 model.add_seasonality(kwargs) 添加用户定义的季节性。有关如何添加季节性的更多信息,

      参见 Prophet 文档

    • 增加了使用 model.predict_raw() 预测并返回基础模型的原始输出的功能。请注意,这将返回一个 pd.DataFrame pred_df,该数据框将不支持通过 Darts API 进行进一步处理。但可以使用 Prophet 的方法,例如通过 model.model.plot_compenents(pred_df) 进行绘图。

  • gridsearch() 方法中新增了 n_random_samples ,它允许指定要尝试的(随机)超参数组合的数量,主要是为了限制网格搜索时间。

  • 改进了Torch模型的检查点和保存功能。

    • 现在模型默认不再保存检查点。设置 save_checkpoints=True 以启用它们。

    • 模型可以通过 YourTorchModel.save_model(file_path) 手动保存(file_path 指向 .pth.tar 文件)。

    • 模型可以通过 YourTorchModel.load_model(file_path) 手动加载,或者使用原始方法 YourTorchModel.load_from_checkpoint()

  • darts.utils.likelihood_models 中新增了 QuantileRegression 似然类。允许应用分位数回归损失,并在所有支持似然的深度学习模型上获得概率预测。默认在时间融合变压器中使用。

已修复:

  • darts.concatenate() 的一些问题。

  • 修复了在多元序列上应用 RegressionModel 时的一些错误。

  • ACF 图中置信区间计算的一个问题。

  • 为某些不支持 historical_forecasts()retrain=False 的模型添加了检查。

  • 安装说明中的小修正。

  • 示例中项目符号列表的某些渲染问题。

0.12.0 (2021-09-25)

对于库的用户:

新增

  • 使用神经网络改进概率预测

    • 现在,所有基于神经网络的预测模型(除了 NBEATSModel)都支持概率预测,只需在模型的构造方法中提供 likelihood 参数即可。

    • darts.utils.likelihood_models 现在包含了更多的分布。可用于训练神经网络基础模型的完整似然列表可在此处获取:https://unit8co.github.io/darts/generated_api/darts.utils.likelihood_models.html

    • 许多可用的似然模型现在提供了指定分布参数“先验”的可能性。指定这些先验将使训练损失正则化,以使输出分布更接近由先验参数值指定的分布。

  • TimeSeries 创建的性能改进。现在创建 TimeSeries 的速度显著加快,尤其是在处理大型序列时,填充缺失日期的速度也显著提升。

  • 新的 rho-risk 度量用于概率预测。

  • 新方法 darts.utils.statistics.plot_hist() 用于绘制时间序列数据的直方图(例如回测误差)。

  • 新增参数 fillna_valueTimeSeries 工厂方法,允许指定用于填充缺失日期的值(替代 np.nan)。

  • 通过 darts.utils.timeseries_generation 方法生成的合成 TimeSeries 现在可以是整数索引的(只需为 start 参数传递一个整数而不是时间戳)。

  • 移除了一些弃用警告

  • 更新后的 conda 安装说明

已修复:

  • 移除了TCN模型中的 额外1x1卷积

  • 修复了绘制 TimeSeries 时 linewidth 参数的问题。

  • 修复了日期时间属性时间序列中的列名问题。

对于库的开发者:

  • 我们已经移除了 develop 分支。

  • 我们强制使用 sklearn<1.0,因为我们观察到 pmdarima 和 sklearn==1.0 存在问题。

0.11.0 (2021-09-04)

对于库的用户:

添加:

  • 新模型: LightGBMModel 是一个新的回归模型。回归模型允许在给定目标的任意滞后值以及过去和/或未来的协变量的情况下,预测目标的未来值。RegressionModel 已经可以与任何 scikit-learn 回归模型一起工作,现在 LightGBMModel 也可以与 LightGBM 做同样的事情。如果你想在 Darts 中启用 LightGBM 支持,请仔细阅读 README 上的详细安装说明。

  • 为 gridsearch 添加了 stride 支持

已修复:

  • 在带有验证集的GPU上训练时导致问题的错误

  • RNNModel 中自定义提供的 RNN 模块存在一些问题。

  • RegressionModelfit 函数中正确处理 kwargs

  • 修复了一个导致与最新版本的 Matplotlib 不兼容的问题。

  • 导致FFT笔记本中出现错误的某个问题

0.10.1 (2021-08-19)

对于库的用户:

已修复:

  • 一个与内存固定相关的错误,该错误导致在GPU上训练模型时出现问题。

已更改:

  • 在README中明确了conda支持

0.10.0 (2021-08-13)

对于库的用户:

添加:

  • 🔴 改进协变量支持。之前,一些模型接受 covariates``(或 ``exog)参数,但并不总是清楚这是代表“过去观测”还是“未来已知”的协变量。我们已经使这一点更加清晰。现在所有支持协变量的模型在其 fit()predict() 方法中都支持 past_covariates 和/或 future_covariates 参数,这使得明确使用哪一系列作为过去或未来的协变量。我们推荐 这篇文章 以获取更多信息和示例。

  • 🔴 RegressionModel``(包括 ``LinearRegressionModelRandomForest)的显著改进。这些模型现在支持在多个(可能是多元的)时间序列上进行训练。它们还同时支持 past_covariatesfuture_covariates。这使得在多个序列上拟合任意回归模型(例如来自 scikit-learn 的模型)变得比以往更容易,可以根据目标序列的任意滞后值以及过去/未来的协变量来预测目标序列的未来。这些模型的签名发生了变化:不再使用 “exog” 关键字参数,而是使用 past_covariatesfuture_covariates 代替。

  • 动态时间规整(Dynamic Time Warping)。有一个全新的 darts.dataprocessing.dtw 子模块实现了两个 TimeSeries 之间的动态时间规整。它还带来了一个新的 dtw 度量标准在 darts.metrics 中。我们建议查看 新的DTW示例笔记本 以获得新功能的良好概述。

  • Conda forge 安装支持(目前仅完全支持 Python 3.7)。你现在可以 conda install u8darts-all

  • TimeSeries.from_csv() 允许直接从CSV文件中获取 TimeSeries

  • 可选的日期时间属性未来协变量的循环编码;例如,现在可以调用 my_series.add_datetime_attribute('weekday', cyclic=True),这将添加两列,包含工作日正弦/余弦编码。

  • ExponentialSmoothing 中的默认季节性推断。如果设置为 None,则 seasonal_periods 会根据所提供序列的 freq 进行推断。

  • 各种文档改进。

已修复:

  • 现在,转换和预测保持了 TimeSeries 的列名。生成模块 darts.utils.timeseries_generation 也带来了更好的默认列名。

  • 我们的Docker构建过程中存在一些问题

  • GPU 使用中的一个错误

已更改:

  • 对于基于概率的 PyTorch 模型,预测时生成多个样本(和序列)现在已向量化,从而提高了推理性能。

0.9.1 (2021-07-17)

对于库的用户:

添加:

  • 改进了 GaussianProcessFilter,现在能够处理缺失值,并且更好地处理由日期时间索引的时间序列。

  • 改进的高斯过程笔记本。

已修复:

  • TimeSeries 现在支持使用 pandas.Int64Index 进行索引,而不仅仅是 pandas.RangeIndex,这解决了某些索引问题。

  • 我们已经将 TimeSeries 的所有工厂方法的 fill_missing_dates 默认设置为 False。这是因为,在某些情况下,推断缺失日期的频率并对序列进行重采样会导致显著的性能开销。

  • 修复了回测功能,使其能够处理整数索引的序列。

  • 修复了一个导致某些模型在GPU上推理崩溃的错误。

  • 修复了默认文件夹名称,该名称在Windows系统上引起了问题。

  • 我们对文档渲染进行了轻微改进,并修复了 RNNModelBlockRNNModel 文档页面的标题,以区分它们。

已更改:

  • 依赖项不再固定为某些特定版本。

对于库的开发者:

  • 我们已经修复了构建过程。

0.9.0 (2021-07-09)

对于库的用户:

添加:

  • 现在,通过在调用 predict() 时指定 num_samples 参数,多个预测模型可以生成概率预测。随机预测通过利用重构的 TimeSeries 类中的新 samples 维度来存储(参见“更改”部分)。目前支持概率预测的模型有 ARIMAExponentialSmoothingRNNModelTCNModel

  • 引入了 LikelihoodModel 类,该类被概率性 TorchForecastingModel 类使用,以便以不同类型的参数化分布形式进行预测。

  • 添加了新的抽象类 TorchParametricProbabilisticForecastingModel 作为概率模型的父类。

  • 引入了新的 FilteringModel 抽象类,以及 MovingAverageKalmanFilterGaussianProcessFilter 作为具体实现。

  • 当预测范围超过模型的 output_chunk_length 时,TorchForecastingModels 现在会利用未来的协变量。之前,TorchForecastingModel 实例只有在不基于协变量训练的情况下,才能预测超过其 output_chunk_length 的范围,即如果它们预测了所有作为输入所需的数据。现在,这一限制已被解除,模型在生成长期预测时不仅会消耗自身的输出,还会利用未来已知的协变量(如果可用)。

  • 新增了一个 RNNModel 类,该类利用 RNN 模块作为编码器和解码器。这个新类在预测时原生支持使用最新的未来协变量。详情请参阅文档。

  • TorchForecastingModel.predict() 方法中引入了可选的 epochs 参数,如果提供,它将覆盖该特定模型实例和训练会话中的 n_epochs 属性。

  • 增加了对 TimeSeries 的支持,使用 pandas.RangeIndex 而不是仅允许 pandas.DatetimeIndex

  • ForecastingModel.gridsearch 现在使用并行计算。

  • TorchForecastingModel.__init__() 中引入了一个新的 force_reset 参数,如果设置为 False,将阻止用户使用相同名称和目录覆盖模型数据。

已修复:

  • 修复了在GPU上训练 NBEATSModel 时发生的错误。

  • 修复了在 log_tensorboard=True 时运行 NBEATSModel 时发生的崩溃问题

  • 解决了在使用 batch_size 大于可用训练样本数量时训练 TorchForecastingModel 实例时出现的错误。

  • 文档中的一些修复,包括添加更多细节

  • 其他次要错误修复

已更改:

  • 🔴 TimeSeries 类已被重构,通过向时间序列添加一个额外的维度,即 samples,来支持随机时间序列表示。现在,时间序列基于一个形状为 (n_timesteps, n_components, n_samples) 的 3 维 xarray.DataArray。此次重构还包括构造函数的更改,该更改与旧构造函数不兼容。然而,已添加工厂方法以从多种数据类型(包括 pd.DataFrame)创建 TimeSeries 实例。有关更多信息,请参阅 TimeSeries 的文档。

  • 🔴 旧版本的 RNNModel 已重命名为 BlockRNNModel

  • ForecastingModelhistorical_forecast()backtest() 方法已经通过使用新的包装方法来拟合和预测模型,进行了一些重组。

  • 更新了 README.md 以反映库中的新增内容。

0.8.1 (2021-05-22)

已修复:

  • 文档中的一些修复

已更改:

  • 实例化数据集类的方式;现在应该像这样使用数据集 .. code-block:

    from darts.datasets import AirPassengers
    ts: TimeSeries = AirPassengers().load()
    

0.8.0 (2021-05-21)

对于库的用户:

添加:

  • RandomForest 算法已实现。使用 scikit-learn 的 RandomForestRegressor 从(滞后的)外生变量和目标的滞后值中预测未来值。

  • darts.datasets 是一个新的子模块,允许轻松下载、缓存和导入一些常用的时间序列。

  • 更好地支持处理 TimeSeries 序列。

    • Transformers、Pipelines 和 metrics 已经适应于在 TimeSeries 序列上使用(而不是孤立的序列)。

    • 序列数据的神经网络推理已得到改进

  • 有一个新的工具函数 darts.utils.model_selection.train_test_split,它允许将 TimeSeries 或一系列 TimeSeries 分割为训练集和测试集;可以在样本轴或时间轴上进行分割。它还允许选择性地进行“模型感知”分割,其中分割会尽可能多地为训练集回收数据。

  • 我们的N-BEATS实现,即``NBEATSModel``,现在支持多元时间序列以及协变量。

已更改

  • RegressionModel 现在是一个用户暴露的类。它充当任何具有 fit()predict() 方法的回归模型的包装器。它支持使用目标变量的滞后值以及多个外生变量的滞后值。lags 参数允许的值为正整数或正整数列表,指示在训练和预测期间应使用哪些滞后值,例如 lags=12 表示使用目标变量的最后12个滞后值进行训练。lags=[1, 4, 8, 12] 表示使用前一个值、滞后4、滞后8和滞后12的值进行训练。

  • 🔴 StandardRegressionModel 现在被称为 LinearRegressionModel。它实现了来自 sklearn.linear_model.LinearRegression 的线性回归模型。仍然需要使用以前的 StandardRegressionModel 与另一个 sklearn 模型的用户现在应该使用 RegressionModel

固定

  • 我们已经修复了当使用多个缩放器时出现的一个错误。

  • 我们在TCN架构中修复了一个小问题,这使得我们的实现更接近原始论文。

对于库的开发者:

添加:

0.7.0 (2021-04-14)

完整更新日志

对于库的用户:

添加:

  • darts Pypi 包。现在可以通过 pip install darts 进行安装。旧名称 u8darts 仍然被维护,并提供了不同版本的轻量级安装。

  • 新预测模型可用:VARIMA(向量自回归移动平均)。

  • 在ARIMA、AutoARIMA和VARIMA中支持外生变量(在``fit()``和``predict()``方法中的可选``exog``参数)。

  • TimeSeries 创建新增参数 dummy_index。如果一个序列仅由一系列没有时间戳的数字组成,设置此标志将允许创建一个在后台使用“虚拟时间索引”的 TimeSeries。这简化了在这种情况下创建 TimeSeries 的过程,并使得除了那些明确依赖日期的模型之外,所有预测模型都可以使用。

  • 新方法 TimeSeries.diff() 返回差分的 TimeSeries

  • 在介绍笔记本中添加了 RegressionEnsembleModel 的示例。

已更改:

  • 改进的 N-BEATS 示例笔记本。

  • 方法 TimeSeries.split_before()split_after() 现在也接受整数或浮点数参数(除了时间戳之外)作为分割点(例如,指定 0.8 以获得 80%/20% 的分割)。

  • 在从 DataFrame 创建 TimeSeries 时,如果不需要,不再必须提供参数 value_cols

  • 更新依赖需求到更近期的版本。

已修复:

  • 修复32位架构上的MAX_TORCH_SEED_VALUE问题(https://github.com/unit8co/darts/issues/235)。

  • 修正了TCN推理中的一个错误,这应该会提高准确性。

  • 修复历史预测不返回最后一个点的问题。

  • 修复了在非规则时间频率上调用 TimeSeries.gaps() 函数时的错误。

  • 许多小的错误修复。

0.6.0 (2021-02-02)

完整更新日志

对于库的用户:

添加:

  • Pipeline.invertible() 是一个获取器,用于返回管道是否可逆。

  • TimeSeries.to_json()TimeSeries.from_json() 方法用于将 TimeSeries 转换为 JSON 字符串或从 JSON 字符串转换。

  • 所有支持在多个时间序列以及协变量上进行训练的模型现在都有一个新的基类 GlobalForecastingModel。所有 PyTorch 模型现在都是 GlobalForecastingModel

  • 因此,PyTorch 模型(所有神经网络)的 fit() 函数可以选择性地使用时间序列序列(而不是单个时间序列)来调用。

  • 同样地,这些模型的 predict() 函数也接受一个指定应预测哪些序列的规范

  • 一个新的 TrainingDataset 基类。

  • 一些 TrainingDataset 的实现包含了一些切片逻辑,用于在多个时间序列上训练神经网络。

  • 一个新的 TimeSeriesInferenceDataset 基类。

  • SimpleInferenceDatasetTimeSeriesInferenceDataset 的一个实现。

  • 所有 PyTorch 模型都有一个新的 fit_from_dataset() 方法,该方法允许直接从指定的 TrainingDataset 实例中拟合模型(而不是通过 fit() 方法使用默认实例)。

  • 一个新的全球模型解释笔记本:https://github.com/unit8co/darts/blob/master/examples/02-multi-time-series-and-covariates.ipynb

已更改:

  • 🔴 在 ForecastingModel 中移除了参数 training_seriestarget_series。请查阅预测模型的API文档以查看新的签名。

  • 🔴 移除了 UnivariateForecastingModelMultivariateForecastingModel 基类。这种区分不再存在。取而代之的是,现在一些模型是“全局”的(可以训练在多个序列上)或“局部”的(它们不能)。所有 GlobalForecastingModel 的实现都支持开箱即用的多元时间序列,除了 N-BEATS。

  • 改进了文档和README。

  • 重新排序了示例笔记本,以改善示例的流程。

已修复:

  • 许多小的错误修复。

  • 单元测试速度提升约15倍。

0.5.0 (2020-11-09)

完整更新日志

对于库的用户:

添加:

  • 集成模型,一种新的 ForecastingModel ,允许集成多个模型进行预测:

    • EnsembleModel 是集成模型的抽象基类。从 EnsembleModel 派生的类必须实现 ensemble() 方法,该方法接收来自组成模型的预测列表 List[TimeSeries],并返回集成预测(一个单一的 TimeSeries 对象)。

    • RegressionEnsembleModelEnsembleModel的具体实现,允许指定任何回归模型(提供 fit()predict() 方法)来集成组成模型的预测结果。

  • TorchForecastingModel 的新方法:untrained_model() 返回模型最初创建时的状态,允许从头开始重新训练完全相同的模型。无论是否指定 random_state,此方法均适用。

  • 新的 ForecastingModel.backtest()RegressionModel.backtest() 函数,默认情况下会从模型将生成的历史预测中计算出一个单一的误差分数。

    • 一个新的 reduction 参数允许指定是计算误差的均值/中位数/… 还是(当 reduction 设置为 None 时)返回一个历史误差列表。

    • 之前的 backtest() 功能仍然存在,但已被重命名为 historical_forecasts()

  • historical_forecasts()backtest()gridsearch() 添加了新的 last_points_only 参数

已更改:

  • 🔴 将 backtest() 重命名为 historical_forecasts()

  • fill_missing_values()MissingValuesFiller 在使用 fill='auto' 时不再移除变量名。

  • 修改了默认的绘图样式,以增加对比度并使图表更轻便。

已修复:

  • NaiveDrift 模型实现中的一个小错误,导致第一个预测值重复了最后一个训练值。

对于库的开发者:

已更改:

  • @random_method 装饰器现在总是为被装饰的方法分配一个 _random_instance 字段(使用随机种子初始化)。这不会改变观察到的行为,但允许通过在创建时保存 _random_instance 以及模型的其他参数来确定性地“重置” TorchForecastingModel

0.4.0 (2020-10-28)

完整更新日志

对于库的用户:

添加:

  • 使用 DataTransformerPipeline 进行数据(预)处理能力:

    • DataTransformer 提供了一个统一的接口来对 TimeSeries 应用变换,使用它们的 transform() 方法

    • Pipeline :

      • 允许 DataTransformers 的链式操作

      • 提供 fit()transform()fit_transform()inverse_transform() 方法。

    • 实现你自己的数据转换器:

      • 需要先拟合的数据转换器应继承自 FittableDataTransformer 基类并实现 fit() 方法。可拟合的转换器还提供了一个 fit_transform() 方法,该方法通过一次调用拟合并转换数据。

      • 执行可逆变换的数据转换器应从 InvertibleDataTransformer 基类派生,并实现 inverse_transform() 方法。

      • 既不可拟合也不可逆的数据转换器应从 BaseDataTransformer 基类派生

      • 所有数据转换器都必须实现一个 transform() 方法。

  • 具体的 DataTransformer 实现:

    • MissingValuesFiller 包装了 fill_missing_value() ,并允许使用常数值或 pd.interpolate() 方法填充缺失值。

    • MapperInvertibleMapper 允许轻松地对 TimeSeries 执行 map() 函数等效操作,并且可以成为 Pipeline 的一部分。

    • BoxCox 允许对数据应用 BoxCox 变换

  • 扩展了 TimeSeries 上的 map() 以接受使用值及其时间戳来计算新值的函数,例如 f(timestamp, datapoint) = new_datapoint

  • 两种新的预测模型:

已更改:

  • 🔴 从 map() 中移除了 cols 参数。建议使用 TimeSeries 上的索引。

    # Assuming a multivariate TimeSeries named series with 3 columns or variables.
    # To apply fn to columns with names '0' and '2':
    
    #old syntax
    series.map(fn, cols=['0', '2']) # returned a time series with 3 columns
    #new syntax
    series[['0', '2']].map(fn) # returns a time series with only 2 columns
    
  • 🔴 将 ScalerWrapper 重命名为 Scaler

  • 🔴 将 preprocessing 模块重命名为 dataprocessing

  • 🔴 将 auto_fillna()fillna() 统一为一个 fill_missing_value() 函数

    #old syntax
    fillna(series, fill=0)
    
    #new syntax
    fill_missing_values(series, fill=0)
    
    #old syntax
    auto_fillna(series, **interpolate_kwargs)
    
    #new syntax
    fill_missing_values(series, fill='auto', **interpolate_kwargs)
    fill_missing_values(series, **interpolate_kwargs) # fill='auto' by default
    

对于库的开发者

已更改:

  • GitHub发布工作流程现在从仓库的GitHub“Actions”标签手动触发,提供一个``#major``、#minor或``#patch``参数。#211

  • (有限数量的)笔记本示例现在作为 GitHub PR 工作流程的一部分运行。

0.3.0 (2020-10-05)

完整更新日志

对于库的用户:

添加:

  • 在 TimeSeries 上更好的索引(支持列/组件索引) #150

  • 新的 FourTheta 预测模型 #123#156

  • map() 方法用于 TimeSeries #121, #166

  • 进一步改进了回测功能 #111:

    • 增加了对多元时间序列和模型的支持

    • 添加了 retrainstride 参数

  • matplotlib 绘图的自定义样式 #191

  • sMAPE 指标 #129

  • 在模型创建时指定 random_state 选项,使用 @random_method 装饰器在神经网络模型上,以允许结果的可重复性 #118

已更改:

  • 🔴 重构回测 #184

    • 将回测功能移至 ForecastingModelRegressionModel 内部

      # old syntax:
      backtest_forecasting(forecasting_model, *args, **kwargs)
      
      # new syntax:
      forecasting_model.backtest(*args, **kwargs)
      
      # old syntax:
      backtest_regression(regression_model, *args, **kwargs)
      
      # new syntax:
      regression_model.backtest(*args, **kwargs)
      
    • 因此移除了 backtesting 模块

  • 🔴 ForecastingModel fit() 方法语法 使用时间序列索引而不是额外参数 #161

    # old syntax:
    multivariate_model.fit(multivariate_series, target_indices=[0, 1])
    
    # new syntax:
    multivariate_model.fit(multivariate_series, multivariate_series[["0", "1"]])
    
    # old syntax:
    univariate_model.fit(multivariate_series, component_index=2)
    
    # new syntax:
    univariate_model.fit(multivariate_series["2"])
    

已修复:

  • 解决了 TorchForecastingModel.predict(n) 在 n=1 时抛出错误的问题。#108

  • 固定 MASE 指标 #129

  • [BUG] ForecastingModel.backtest: 可以绕过健全性检查 #188

  • 如果未提供 forecast_horizon,ForecastingModel.backtest() 将失败 #186

对于库的开发者

添加:

  • 使用Gradle构建文档、Docker镜像、运行测试等 #112, #127, #159

  • M4 竞赛基准和笔记本到示例 #138

  • 测试覆盖率检查 #141

已更改:

  • 依赖项的版本现在已固定 #173

  • 工作流程:在拉取请求 #165 上触发测试

已修复:

  • 在所有生成 TimeSeries 的函数中,将 freq 参数传递给 TimeSeries 构造函数 #157

旧版本

完整更新日志