Este repositório contém um notebook prático para aprender e demonstrar conceitos de observabilidade e monitoramento em modelos de Machine Learning utilizando a biblioteca Evidently AI e o dataset clássico Iris.
O objetivo é mostrar, de forma didática, como:
- Detectar data drift (mudanças na distribuição dos dados).
- Medir a degradação de performance de um modelo em produção.
- Gerar relatórios interativos do Evidently para análise e tomada de decisão.
- Aplicar boas práticas de MLOps e monitoramento de modelos.
├── evidently_observabilidade_iris.ipynb # Notebook principal
├── reports/ # Saída dos relatórios HTML
│ ├── iris_data_drift_report.html
│ └── iris_classification_performance_report.html
├── requirements_evidently.txt
└── README.md
- Python 3.10+
- Pacotes listados abaixo:
pip install -U pandas numpy scikit-learn evidentlyvenv ou conda) para isolar dependências.
- Data Drift: quando a distribuição estatística dos dados de entrada muda ao longo do tempo.
- Model Performance Degradation: queda da performance preditiva após mudanças no ambiente.
- Observabilidade: monitoramento contínuo dos dados, do modelo e das métricas.
- Relatórios Evidently: geração de dashboards HTML para inspecionar drift e performance.
-
Clone o repositório:
git clone https://github.com/<seu-usuario>/<nome-repo>.git cd <nome-repo>
-
Crie e ative um ambiente virtual:
python -m venv .venv source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows
-
Instale as dependências:
pip install -r requirements.txt
(ou manualmente os pacotes listados acima).
-
Abra o Jupyter Notebook:
jupyter notebook evidently_observabilidade_iris.ipynb
-
Execute as células em ordem. Ao final, os relatórios HTML estarão na pasta
./reports/.
iris_data_drift_report.html→ compara distribuições do baseline e dados atuais, sinalizando drift.iris_classification_performance_report.html→ mostra métricas de classificação (acurácia, precisão/recall, matriz de confusão).
Exemplo de interpretação:
- Drift detectado em
petal_length→ modelo pode estar recebendo dados diferentes dos de treino. - Queda de acurácia de 95% → 82% → pode indicar necessidade de re-treino.
- Logs estruturados: salvar entradas, saídas e versão do modelo em produção.
- Coleta de ground truth: sempre que possível, para avaliar métricas reais.
- Alertas automáticos: definir thresholds (ex.: ≥30% de colunas com drift) e disparar notificações.
- Ciclo de re-treino: integrar este fluxo em pipelines de MLOps (Airflow, Azure ML, GitHub Actions).
- Explainability: monitorar a importância das features com SHAP/LIME.
- Evidently AI Docs
- Scikit-learn: RandomForestClassifier
- Nelson, C. Engenharia de Software para Cientistas de Dados (2024)
- Huyen, C. Designing Machine Learning Systems (2022)
Contribuições são bem-vindas! Sugestões de melhorias, correções de bugs ou novas ideias de relatórios e estudos podem ser abertas via Pull Request ou Issue.