7.3 KiB
7.3 KiB
Changelog de Parâmetros do Pipeline de Treinamento
Este documento descreve as alterações nos parâmetros de entrada do pipeline Temporal para treinamento de modelos.
Resumo das Alterações
Parâmetros ALTERADOS (Breaking Changes)
| Parâmetro | Tipo Anterior | Tipo Novo | Descrição |
|---|---|---|---|
lag_train |
int |
dict[str, int] |
Agora é um dicionário com lag por variável. Ex: {"var1": 2, "var2": 3} |
lag_val |
int |
dict[str, int] |
Agora é um dicionário com lag por variável. Ex: {"var1": 1, "var2": 1} |
Parâmetros NOVOS (Obrigatórios)
| Parâmetro | Tipo | Descrição | Valores Válidos |
|---|---|---|---|
model_name |
str |
Nome do tipo de modelo | "Linear Regression", "Polynomial Regression" |
degree |
int |
Grau do polinômio (1 = linear) | >= 1 |
interaction_only |
bool |
Apenas termos de interação para polinomial | true, false |
nan_treatment |
str |
Tratamento de valores NaN | "drop", "linear interpolation", "fill linear" |
scaler_name |
str |
Nome do scaler a usar | "Standard Scaler", "None" |
Parâmetros NOVOS (Opcionais)
| Parâmetro | Tipo | Descrição | Default |
|---|---|---|---|
start_date |
str | null |
Data inicial para filtrar dados (formato: "YYYY-MM-DD HH:MM:SS") |
null |
end_date |
str | null |
Data final para filtrar dados (formato: "YYYY-MM-DD HH:MM:SS") |
null |
support_filters |
dict | null |
Filtros customizados por variável | {} |
static_threshold |
int | null |
Threshold para remoção de janelas estáticas (1-1000). Só usado quando rem_static_win é true. |
1 |
Exemplo de Input Completo
Formato ANTERIOR (não funciona mais):
{
"experiment_run_id": 123,
"target_variable": "temperatura",
"variable_columns": ["pressao", "umidade", "velocidade"],
"lag_train": 2,
"lag_val": 1,
"rem_static_win": true,
"low_lim": {"pressao": 0, "umidade": 0, "velocidade": 0},
"upp_lim": {"pressao": 100, "umidade": 100, "velocidade": 50},
"window": 0,
"use_scaler": true,
"include_ar": false,
"bucket_name": "training-data",
"file_name": "dataset.csv",
"line_separator": ";",
"decimal_separator": ",",
"train_size": 80,
"shuffle": false,
"experiment_name": "modelo-temperatura",
"removed_intervals": []
}
Formato NOVO (obrigatório):
{
"experiment_run_id": 123,
"target_variable": "temperatura",
"variable_columns": ["pressao", "umidade", "velocidade"],
"lag_train": {
"pressao": 2,
"umidade": 2,
"velocidade": 2
},
"lag_val": {
"pressao": 1,
"umidade": 1,
"velocidade": 1
},
"rem_static_win": true,
"static_threshold": null,
"low_lim": {"pressao": 0, "umidade": 0, "velocidade": 0},
"upp_lim": {"pressao": 100, "umidade": 100, "velocidade": 50},
"window": 0,
"use_scaler": true,
"include_ar": false,
"bucket_name": "training-data",
"file_name": "dataset.csv",
"line_separator": ";",
"decimal_separator": ",",
"train_size": 80,
"shuffle": false,
"experiment_name": "modelo-temperatura",
"removed_intervals": [],
"model_name": "Linear Regression",
"degree": 1,
"interaction_only": false,
"nan_treatment": "drop",
"scaler_name": "Standard Scaler",
"start_date": null,
"end_date": null,
"support_filters": {}
}
Exemplo para Polynomial Regression
{
"experiment_run_id": 124,
"target_variable": "temperatura",
"variable_columns": ["pressao", "umidade"],
"lag_train": {
"pressao": 0,
"umidade": 0
},
"lag_val": {
"pressao": 0,
"umidade": 0
},
"rem_static_win": false,
"low_lim": {"pressao": 0, "umidade": 0},
"upp_lim": {"pressao": 100, "umidade": 100},
"window": 0,
"use_scaler": true,
"include_ar": false,
"bucket_name": "training-data",
"file_name": "dataset.csv",
"line_separator": ";",
"decimal_separator": ",",
"train_size": 80,
"shuffle": false,
"experiment_name": "modelo-polinomial",
"removed_intervals": [],
"model_name": "Polynomial Regression",
"degree": 2,
"interaction_only": false,
"nan_treatment": "linear interpolation",
"scaler_name": "Standard Scaler",
"start_date": "2024-01-01 00:00:00",
"end_date": "2024-12-31 23:59:59",
"support_filters": {}
}
Exemplo com Intervalos Removidos
{
"removed_intervals": [
["2024-03-01 00:00:00", "2024-03-15 23:59:59"],
["2024-06-01 00:00:00", "2024-06-30 23:59:59"]
]
}
Parâmetros Logados no MLflow
Os seguintes parâmetros são agora logados no MLflow:
| Parâmetro MLflow | Descrição |
|---|---|
model_name |
Nome do modelo (Linear Regression ou Polynomial Regression) |
models_params |
{"degree": int, "interaction_only": bool} |
target_variable |
Variável alvo |
input_variables |
Lista de variáveis de entrada |
nan_treatment |
Tratamento de NaN |
lag_train |
Dicionário de lags para treino |
lag_transform |
Dicionário de lags para transformação |
static_threshold |
Threshold para janelas estáticas (1 ou null) |
lower_limits |
Limites inferiores por variável |
upper_limits |
Limites superiores por variável |
scaler_name |
Nome do scaler |
scaler_params |
Parâmetros do scaler (mean, variance) |
include_ar |
Se inclui variável autoregressiva |
train_size |
Proporção de treino (0.0 - 1.0) |
test_size |
Proporção de teste (0.0 - 1.0) |
start_date |
Data inicial (ou null) |
end_date |
Data final (ou null) |
removed_intervals |
Lista de intervalos removidos |
retrain |
Sempre false para novos modelos |
support_filters |
Filtros customizados |
Validações de Negócio
O sistema valida automaticamente:
train_size: Deve estar entre 10 e 100variable_columns: Não pode estar vaziolag_train/lag_val: Todos os valores devem ser >= 0window: Deve ser >= 0degree: Deve ser >= 1nan_treatment: Deve ser"drop","linear interpolation"ou"fill linear"scaler_name: Deve ser"Standard Scaler"ou"None"model_name: Deve ser"Linear Regression"ou"Polynomial Regression"low_lim/upp_lim: Devem ter as mesmas chaves, elow_lim[var] < upp_lim[var]bucket_name/file_name/experiment_name: Não podem estar vaziosdegreevsmodel_name: Semodel_name= "Polynomial Regression",degreedeve ser >= 2; se "Linear Regression",degreedeve ser = 1removed_intervals: Cada elemento deve ser lista/tupla com pelo menos 2 elementos (start, end)target_variable: Não pode estar vaziostatic_threshold: Serem_static_win=trueestatic_thresholdtiver valor, deve estar entre 1 e 1000 (inclusive). Senull, assume valor1.
Arquivos Modificados
model_manager/sientia/models.py-DataPreprocessoreLinearRegressionModelmodel_manager/sientia/metrics.py- Funções RCE adicionadasmodel_manager/utils/models/train_model_params.py- Novos parâmetrosmodel_manager/utils/repository/training_repository.py- Uso dos novos parâmetrosmodel_manager/utils/repository/model_repository.py- Logging no MLflow