Referência dos modelos

Para cada modelo registrado: os parâmetros que ele recebe sem configuração, o que a busca automática passa para ele, o espaço que tune_model explora e onde ele roda. As tabelas são geradas do código a cada build da documentação, então mostram o que a versão instalada faz. A implementação de cada modelo (biblioteca de origem) está em Modelos e bibliotecas.

Como ler

  • ★ marca os modelos da busca padrão (compare_models sem base_models).

  • Parâmetros padrão: o que exp.create_model(nome) usa sem argumentos. Nos modelos sobre defasagens, estimator_params mostra o que a AutoHybTS muda em relação ao padrão da biblioteca (por exemplo, uma thread nos modelos de boosting).

  • Na busca: o que compare_models passa ao modelo quando você não dá uma grade; o período sazonal e as defasagens vêm do experimento (aqui, série diária: 7).

  • Espaço do tune_model: distribuições de exp.tune_model(nome). [a, b] é um intervalo (inteiro ou contínuo, (log) em escala logarítmica) e {...}, as opções. Nos modelos sobre defasagens, lags vai de 2 a 4 × período (no mínimo 14, no máximo 60). “—” significa que o modelo escolhe sozinho (arima, StatsForecast) ou não tem o que ajustar.

  • Variantes: A (vários passos de uma origem) e B (um passo, parâmetros congelados).

Mudar os parâmetros

# um modelo, uma configuração
exp.create_model("knn", lags=14, estimator_params={"n_neighbors": 3})

# uma grade na busca: cada dicionário é uma candidata
exp = AutoHybridExperiment(
    fh=14,
    base_models=["knn", "lightgbm_regressor"],
    base_params={"knn": [{"lags": 7}, {"lags": 14, "estimator_params": {"n_neighbors": 3}}]},
)

# ajuste em V_search, com o espaço embutido ou com o seu
exp.tune_model("lightgbm_regressor", n_trials=30)
exp.tune_model("knn", search_space={"lags": (7, 28), "estimator_params.n_neighbors": [3, 5, 9]})

Modelos-base

Família statistical

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

arima ★

order='auto', max_p=2, max_d=2, max_q=2

—

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra stats

exponential_smoothing

trend=True, damped=False, season_length=1

season_length=7

trend {True, False}

A e B; extra stats

harmonic_regression

periods=(7, 365.25), harmonics=(3, 5), trend=True, ar_lags=1, ridge=1e-06

—

ar_lags [0, 7]; trend {True, False}; ridge [1e-08, 0.1] (log)

A e B; núcleo

historic_average

—

—

— (escolhe sozinho ou não tem o que ajustar)

A e B; núcleo

naive ★

—

—

— (escolhe sozinho ou não tem o que ajustar)

A e B; núcleo

random_walk_drift

—

—

— (escolhe sozinho ou não tem o que ajustar)

A e B; núcleo

sarima

season_length=1, order='auto', max_p=2, max_d=2, max_q=2, max_P=1, max_D=1, max_Q=1

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra stats

seasonal_naive ★

season_length=7

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; núcleo

seasonal_window_average

season_length=7, window=2

season_length=7

window [1, 8]

A e B; núcleo

sf_auto_arima

season_length=1

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra nixtla-stats

sf_auto_ces

season_length=1

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra nixtla-stats

sf_auto_ets

season_length=1

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra nixtla-stats

sf_auto_theta

season_length=1

season_length=7

— (escolhe sozinho ou não tem o que ajustar)

A e B; extra nixtla-stats

window_average

window=7

—

window [3, 60]

A e B; núcleo

Família linear

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

elastic_net_regression

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.alpha [0.0001, 1] (log); estimator_params.l1_ratio [0.1, 0.9]

A e B; núcleo

lasso_regression

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.alpha [0.0001, 1] (log)

A e B; núcleo

linear ★

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; differencing {0, 1}

A e B; núcleo

ridge_regression

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.alpha [0.001, 100] (log)

A e B; núcleo

Família kernel

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

knn ★

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.n_neighbors [1, 20]

A e B; núcleo

svm ★

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.C [0.01, 100] (log); estimator_params.epsilon [0.001, 1] (log)

A e B; núcleo

Família tree

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

adaboost_r2

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.n_estimators [20, 200]; estimator_params.learning_rate [0.01, 1] (log); estimator_params.loss {‘linear’, ‘square’, ‘exponential’}

A e B; núcleo

catboost_regressor

lags=7, differencing=0, scale=True, estimator_params={'iterations': 200, 'depth': 4, 'thread_count': 1, 'verbose': 0, 'allow_writing_files': False}, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

—

lags [2, 28]; estimator_params.iterations [50, 400]; estimator_params.learning_rate [0.01, 0.3] (log); estimator_params.depth [2, 8]

A e B; extra boosting

extra_trees_regressor

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.n_estimators [20, 200]; estimator_params.max_depth [2, 12]; estimator_params.min_samples_leaf [1, 20]

A e B; núcleo

hist_gradient_boosting

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.learning_rate [0.01, 0.3] (log); estimator_params.max_iter [50, 300]; estimator_params.max_leaf_nodes [7, 63]; estimator_params.min_samples_leaf [5, 50]

A e B; núcleo

lightgbm_regressor

lags=7, differencing=0, scale=True, estimator_params={'n_estimators': 200, 'num_leaves': 15, 'min_child_samples': 10, 'verbose': -1, 'n_jobs': 1}, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.n_estimators [50, 400]; estimator_params.learning_rate [0.01, 0.3] (log); estimator_params.num_leaves [7, 63]; estimator_params.min_child_samples [5, 40]

A e B; extra boosting

random_forest ★

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.n_estimators [20, 200]; estimator_params.max_depth [2, 12]

A e B; núcleo

tree ★

lags=7, differencing=0, scale=True, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.max_depth [2, 12]; estimator_params.min_samples_leaf [1, 20]

A e B; núcleo

xgboost_regressor

lags=7, differencing=0, scale=True, estimator_params={'n_estimators': 200, 'max_depth': 4, 'learning_rate': 0.1, 'n_jobs': 1, 'verbosity': 0}, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

—

lags [2, 28]; estimator_params.n_estimators [50, 400]; estimator_params.learning_rate [0.01, 0.3] (log); estimator_params.max_depth [2, 8]; estimator_params.subsample [0.6, 1]

A e B; extra boosting

Família neural

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

mlp ★

lags=7, differencing=0, scale=True, estimator_params={'hidden_layer_sizes': (32,), 'max_iter': 1000}, random_state=0, seasonal_differencing=0, season_length=1, differencing_test='kpss'

lags=7

lags [2, 28]; estimator_params.alpha [1e-05, 0.1] (log); estimator_params.hidden_layer_sizes {‘16’, ‘32’, ‘64’, ‘32,16’}

A e B; núcleo

Família intermittent

Nome

Parâmetros padrão

Na busca

Espaço do tune_model

Variantes; instalação

adida

alpha=0.1

—

alpha [0.05, 0.5]

A e B; núcleo

croston_sba

alpha=0.1

—

alpha [0.05, 0.5]

A e B; núcleo

imapa

alpha=0.1

—

alpha [0.05, 0.5]

A e B; núcleo

tsb

alpha_d=0.1, alpha_p=0.1

—

alpha_d [0.05, 0.5]; alpha_p [0.05, 0.5]

A e B; núcleo

Corretores de resíduos

★ marca os corretores da busca padrão. Os corretores de janela regridem o próximo resíduo nos window anteriores; os de sequência modelam a série de resíduos e preveem o horizonte inteiro (Modelos e bibliotecas). Na busca, os parâmetros do corretor variam por corrector_params (uma grade por nome), e tune_model ajusta só a base.

Nome

Tipo

Parâmetros padrão

Instalação

adaboost_r2

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

arima_sequence

sequência

model='arima'

extra stats

catboost_regressor

janela

scale=True, estimator_params={'iterations': 200, 'depth': 4, 'thread_count': 1, 'verbose': 0, 'allow_writing_files': False}, random_state=0, feature_order='chronological'

extra boosting

exponential_smoothing_sequence

sequência

model='exponential_smoothing'

extra stats

hist_gradient_boosting

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

knn ★

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

lightgbm_regressor

janela

scale=True, estimator_params={'n_estimators': 200, 'num_leaves': 15, 'min_child_samples': 10, 'verbose': -1, 'n_jobs': 1}, random_state=0, feature_order='chronological'

extra boosting

linear ★

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

mlp ★

janela

scale=True, estimator_params={'hidden_layer_sizes': (32,), 'max_iter': 1000}, random_state=0, feature_order='chronological'

núcleo

random_forest

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

svm

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

tree

janela

scale=True, random_state=0, feature_order='chronological'

núcleo

xgboost_regressor

janela

scale=True, estimator_params={'n_estimators': 200, 'max_depth': 4, 'learning_rate': 0.1, 'n_jobs': 1, 'verbosity': 0}, random_state=0, feature_order='chronological'

extra boosting

Opções comuns aos modelos sobre defasagens e aos corretores de janela:

  • scale: True (média e desvio da série), "columns" (por coluna, como o StandardScaler), "minmax" (por coluna, para [0, 1]) ou False;

  • differencing (só bases): número de diferenças (0, 1, 2 …) ou "auto", que as escolhe no treino de cada origem (Diagnóstico da série); seasonal_differencing (0 ou 1) com season_length acrescenta uma diferença sazonal; differencing_test ("kpss" ou "adf") é o teste do "auto";

  • random_state: semente; na busca, cada origem recebe uma semente derivada da semente do experimento, salvo se você a fixar;

  • feature_order (só corretores): "chronological" ou "lag".