Files
sientia-dataops-model-manager/doc/model_equation_implementation.md
2025-10-24 08:03:27 -03:00

3.0 KiB

Implementação da Equação do Modelo como Artefato JSON

Visão Geral

Esta implementação adiciona a capacidade de extrair e salvar a equação do modelo de regressão linear como um artefato JSON, seguindo a arquitetura existente do projeto.

Mudanças Implementadas

1. TrainModelResult

  • Arquivo: model_manager/utils/models/train_model_result.py
  • Mudanças:
    • Adicionado campo equation: dict | None = None para armazenar os metadados da equação
    • Adicionado campo equation_path: str | None = None para armazenar o caminho do arquivo JSON

2. TrainingRepository

  • Arquivo: model_manager/utils/repository/training_repository.py
  • Mudanças:
    • Adicionado método _extract_model_equation() para extrair coeficientes e intercept do modelo
    • Integrado a extração da equação no método after_train_calculation()

3. ModelRepository

  • Arquivo: model_manager/utils/repository/model_repository.py
  • Mudanças:
    • Adicionado import do módulo json
    • Modificado _generate_report() para salvar a equação como arquivo JSON
    • Modificado _save_run() para fazer log do artefato da equação no MLflow

Estrutura do JSON da Equação

O arquivo model_equation.json terá a seguinte estrutura:

{
  "target_variable": "target_column_name",
  "coefficients": {
    "feature1": 0.123456,
    "feature2": -0.789012,
    "feature3": 0.345678
  },
  "intercept": 1.234567,
  "equation_string": "target_column_name = 1.234567 + 0.123456 * feature1 + -0.789012 * feature2 + 0.345678 * feature3",
  "latex_equation": "target_column_name = 1.234567 + 0.123456 \\cdot feature1 + -0.789012 \\cdot feature2 + 0.345678 \\cdot feature3",
  "model_type": "Linear Regression"
}

Fluxo de Execução

  1. Treinamento: O modelo é treinado no TrainingRepository.train()
  2. Pós-treinamento: O método after_train_calculation() é chamado, que:
    • Calcula as métricas (MSE, MAE, R²)
    • Extrai a equação usando _extract_model_equation()
  3. Salvamento: O ModelRepository.save_model() é chamado, que:
    • Gera os artefatos (relatórios, dados CSV)
    • Salva a equação como model_equation.json
    • Faz log de todos os artefatos no MLflow

Benefícios

  • Rastreabilidade: A equação fica disponível como artefato versionado no MLflow
  • Transparência: Fácil acesso aos coeficientes e estrutura do modelo
  • Compatibilidade: Formato JSON facilita integração com outras ferramentas
  • Flexibilidade: Inclui tanto formato legível quanto LaTeX para diferentes usos

Compatibilidade

Esta implementação é totalmente compatível com:

  • A arquitetura existente do projeto
  • O fluxo de treinamento atual
  • O sistema de logging do MLflow
  • Os testes existentes (não quebra funcionalidades)

Exemplo de Uso

Após o treinamento, a equação estará disponível em:

  • Memória: train_result.equation (dicionário Python)
  • Arquivo: train_result.equation_path (caminho para o JSON)
  • MLflow: Como artefato model_equation.json no run do experimento