Files
sientia-dataops-model-manager/PIPELINE_PARAMS_CHANGELOG.md
2026-07-16 13:29:23 -03:00

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:

  1. train_size: Deve estar entre 10 e 100
  2. variable_columns: Não pode estar vazio
  3. lag_train / lag_val: Todos os valores devem ser >= 0
  4. window: Deve ser >= 0
  5. degree: Deve ser >= 1
  6. nan_treatment: Deve ser "drop", "linear interpolation" ou "fill linear"
  7. scaler_name: Deve ser "Standard Scaler" ou "None"
  8. model_name: Deve ser "Linear Regression" ou "Polynomial Regression"
  9. low_lim / upp_lim: Devem ter as mesmas chaves, e low_lim[var] < upp_lim[var]
  10. bucket_name / file_name / experiment_name: Não podem estar vazios
  11. degree vs model_name: Se model_name = "Polynomial Regression", degree deve ser >= 2; se "Linear Regression", degree deve ser = 1
  12. removed_intervals: Cada elemento deve ser lista/tupla com pelo menos 2 elementos (start, end)
  13. target_variable: Não pode estar vazio
  14. static_threshold: Se rem_static_win = true e static_threshold tiver valor, deve estar entre 1 e 1000 (inclusive). Se null, assume valor 1.

Arquivos Modificados

  • model_manager/sientia/models.py - DataPreprocessor e LinearRegressionModel
  • model_manager/sientia/metrics.py - Funções RCE adicionadas
  • model_manager/utils/models/train_model_params.py - Novos parâmetros
  • model_manager/utils/repository/training_repository.py - Uso dos novos parâmetros
  • model_manager/utils/repository/model_repository.py - Logging no MLflow