通用组件
超参数优化
BaseAuto
*自动超参数优化类,它基于 ray
构建,提供了对多种超参数优化工具的访问,包括经典的网格搜索、贝叶斯优化和 HyperBand 算法。
待优化的验证损失由 config['loss']
字典值定义,config 还包含超参数搜索空间的其他部分。
值得注意的是,此超参数优化的成功很大程度上取决于验证期和测试期之间的强相关性。*
类型 | 默认值 | 详情 | |
---|---|---|---|
cls_model | PyTorch/PyTorchLightning 模型 | 请参阅 neuralforecast.models 集合。 | |
h | int | 预测范围 | |
loss | PyTorch 模块 | 来自 损失集合 的实例化训练损失类。 | |
valid_loss | PyTorch 模块 | 来自 损失集合 的实例化验证损失类。 | |
config | dict 或 callable | 包含 ray.tune 定义的搜索空间的字典,或接受 optuna trial 并返回配置字典的函数。 | |
search_alg | BasicVariantGenerator | <ray.tune.search.basic_variant.BasicVariantGenerator object at 0x7f13e57ffb50> | 对于 ray,请参阅 https://docs.rayai.org.cn/en/latest/tune/api_docs/suggestion.html 对于 optuna,请参阅 https://docs.optuna.cn/en/stable/reference/samplers/index.html。 |
num_samples | int | 10 | 超参数优化步骤/样本的数量。 |
cpus | int | 4 | 优化过程中使用的 CPU 数量。仅与 ray tune 一起使用。 |
gpus | int | 0 | 优化过程中使用的 GPU 数量,默认为所有可用 GPU。仅与 ray tune 一起使用。 |
refit_with_val | bool | False | 最佳模型的重新拟合应保留 val_size。 |
verbose | bool | False | 跟踪进度。 |
alias | NoneType | None | 模型的自定义名称。 |
backend | str | ray | 用于搜索超参数空间的后端,可以是 ‘ray’ 或 ‘optuna’。 |
callbacks | NoneType | None | 优化过程中要调用的函数列表。 ray 参考:https://docs.rayai.org.cn/en/latest/tune/tutorials/tune-metrics.html optuna 参考:https://docs.optuna.cn/en/stable/tutorial/20_recipes/007_optuna_callback.html |
BaseAuto.fit
*BaseAuto.fit
根据 BaseAuto 配置字典 config
执行超参数优化。
优化在 TimeSeriesDataset
上进行,使用时间交叉验证和顺序在测试集之前的验证集。
参数
dataset
:NeuralForecast 的 TimeSeriesDataset
,详情请参阅 此处
val_size
:int,时间验证集的大小(需要大于 0)。
test_size
:int,时间测试集的大小(默认为 0)。
random_seed
:int=None,用于超参数探索算法的 random_seed,尚未实现。
返回值
self
:具有最佳超参数和结果的 BaseAuto
拟合实例。
.*
BaseAuto.predict
*BaseAuto.predict
最佳模型在验证集上的预测。
参数
dataset
:NeuralForecast 的 TimeSeriesDataset
,详情请参阅 此处
step_size
:int,顺序预测之间的步长(默认为 1)。
**data_kwarg
:数据集模块的附加参数。
random_seed
:int=None,用于超参数探索算法的 random_seed(未实现)。
返回值
y_hat
:NeuralForecast
模型的 numpy 预测。
*
参考资料
- James Bergstra, Remi Bardenet, Yoshua Bengio, and Balazs Kegl (2011). “超参数优化算法”. In: Advances in Neural Information Processing Systems. url: https://proceedings.neurips.cc/paper/2011/file/86e8f7ab32cfd12577bc2619bc635690-Paper.pdf
- Kirthevasan Kandasamy, Karun Raju Vysyaraju, Willie Neiswanger, Biswajit Paria, Christopher R. Collins, Jeff Schneider, Barnabas Poczos, Eric P. Xing (2019). “无需研究生的超参数调优:使用 Dragonfly 进行可扩展且稳健的贝叶斯优化”. Journal of Machine Learning Research. url: https://arxiv.org/abs/1903.06694
- Lisha Li, Kevin Jamieson, Giulia DeSalvo, Afshin Rostamizadeh, Ameet Talwalkar (2016). “Hyperband:一种新颖的基于 Bandits 的超参数优化方法”. Journal of Machine Learning Research. url: https://arxiv.org/abs/1603.06560