ML/estatística essencial
Um classificador com 95% de acurácia pode ser inútil quando 95% dos exemplos pertencem à classe negativa. Entender aprendizado e estatística permite reconhecer esse tipo de armadilha, escolher uma baseline e discutir resultados com equipes de Data e ML. Você não precisa treinar um grande modelo para começar: um problema pequeno revela como dados, métricas e validação sustentam ou enfraquecem uma conclusão.
Nesta semana vamos construir um classificador de prioridade de chamados com dados sintéticos, comparar regressão logística com uma baseline e interpretar erros. Também situaremos regressão linear, árvores, Random Forest, XGBoost e K-Means. O objetivo é prevenir data leakage e avaliar generalização, mantendo clara a diferença entre um experimento didático e evidência para um problema real de negócio.
PythonIA & MLAvaliaçãoMatemáticaAo terminar esta aula
- Validação correta vem antes do score.
- Métricas devem refletir classe positiva e custos de erro.
- Modelos simples são baselines, não escolhas inferiores por definição.
Antes de continuar: Laboratório: AI Architecture
Supervised e unsupervised: que informação o problema fornece?
FundamentosAprendizado supervisionado usa exemplos com alvos observados. Classificação prevê categorias, como urgente ou normal; regressão prevê um valor contínuo, como tempo de resolução. Não confunda previsão numérica com regressão: o código 0/1 representa categorias em um classificador. Aprendizado não supervisionado busca estrutura sem um alvo de treinamento equivalente, como agrupar chamados por características. Nenhuma dessas tarefas produz verdade causal automaticamente.
Clustering pode ajudar a explorar temas, mas um grupo não ganha significado de negócio por receber um número. Em K-Means, a atribuição minimiza uma distância a centróides conforme o espaço de features. Escala e geometria importam, e agrupamentos alongados ou categorias de densidade diferente podem não se ajustar bem. Escolher k exige análise, estabilidade e utilidade, não apenas um gráfico bonito. Um cluster de chamados longos não prova que esses chamados serão urgentes; essa associação precisaria de evidência supervisionada e validação.
Train/test split, cross-validation e leakage
AvaliaçãoTreino ajusta parâmetros; validação orienta escolhas; teste estima o desempenho final no regime definido. Separe o teste antes de ajustar transformações ou hiperparâmetros. Se você padroniza usando média e desvio de todos os exemplos, o treino recebeu informação do teste. Pipelines ajustam transformações somente sobre o treino de cada divisão, reduzindo esse tipo de vazamento. Também procure features que só existem depois da decisão, como “tempo final de resolução” usado para prever urgência no momento de abertura.
↗ Cross-validation: evaluating estimator performance↗ Preprocessing data
Cross-validation particiona o conjunto de desenvolvimento em folds para repetir treino e validação. Não garante independência quando existem múltiplos registros do mesmo cliente ou dados temporais. Para esses casos, use divisões por grupo ou tempo coerentes com a implantação. Estratificação ajuda a preservar proporções de classes, mas não corrige distribuição futura diferente. Depois de escolher o modelo e o limiar com validação, execute o teste final sem novos ajustes. Repetir esse ciclo até gostar do score converte o teste em desenvolvimento.
↗ Cross-validation: evaluating estimator performance↗ Preprocessing data
Overfitting, underfitting e feature engineering
FundamentosOverfitting ocorre quando o modelo aprende particularidades do treino que não generalizam. Underfitting ocorre quando a representação ou capacidade não consegue capturar o padrão útil. Compare desempenho de treino e validação e observe curvas de aprendizado, sem reduzir tudo a um único sinal. Um gap pode sugerir variância, mas também pode refletir divisões com distribuição diferente. Mais dados úteis, regularização e features adequadas podem ajudar; mais complexidade não é uma solução universal.
↗ Validation curves: plotting scores to evaluate models↗ Preprocessing data
Feature engineering constrói representações disponíveis no momento da previsão. Para chamados, comprimento, presença de termos e categoria informada podem ser úteis, mas exigem cuidado com idioma e vieses. Variáveis categóricas precisam de codificação apropriada; valores ausentes precisam de política. Escalar features favorece certos modelos e distâncias, como regressão regularizada e K-Means. Árvores lidam diferentemente com escala, mas também podem explorar leakage. Documente origem, transformação e disponibilidade de cada feature antes de treinar.
↗ Validation curves: plotting scores to evaluate models↗ Preprocessing data
Precision, recall e F1 com erros concretos
FundamentosPara a classe urgente, true positive é chamado urgente identificado como urgente; false positive é normal marcado urgente; false negative é urgente perdido. Precision = TP/(TP+FP) pergunta quantos alertas estão corretos. Recall = TP/(TP+FN) pergunta quantos urgentes foram encontrados. F1 é a média harmônica de precision e recall, 2PR/(P+R), quando definida. Declare a classe positiva e a política para denominadores zero. Uma taxa alta de acerto global pode coexistir com recall baixo em classe rara.
↗ Metrics and scoring: quantifying the quality of predictions
Em cem chamados, imagine TP=8, FP=2, FN=12 e TN=78. Precision é 80%, recall é 40%, F1 é aproximadamente 53,3% e acurácia é 86%. A baseline que sempre responde normal tem acurácia de 80% e recall zero. A candidata melhora a baseline, mas ainda perde doze dos vinte urgentes. A escolha do limiar depende do custo operacional de falsos alertas e omissões. Não maximize F1 sem discutir esses custos com o produto.
↗ Metrics and scoring: quantifying the quality of predictions
ROC, scores e seleção de limiar
FundamentosMuitos classificadores produzem um score ou probabilidade estimada antes da decisão. Variar o limiar muda precision e recall. A curva ROC relaciona taxa de verdadeiros positivos e taxa de falsos positivos ao variar o limiar; AUC resume uma propriedade de ranking e não o comportamento em um limiar operacional específico. Com forte desequilíbrio, olhe também a curva precision-recall e as contagens, porque muitos negativos podem tornar uma taxa de falsos positivos pequena apesar de vários alertas.
↗ Metrics and scoring: quantifying the quality of predictions
Um score de 0,8 não é automaticamente uma probabilidade calibrada de 80% no ambiente real. Calibração exige verificação e pode se degradar quando a distribuição muda. Escolha limiar no conjunto de validação, documente a prioridade entre erros e mantenha o teste independente. Para tarefas de alto impacto, examine segmentos e disponibilidade de revisão humana. AUC elevada não corrige uma feature vazada nem uma divisão incorreta; a integridade do experimento vem antes da interpretação da métrica.
↗ Metrics and scoring: quantifying the quality of predictions
Modelos: baselines, árvores e ensembles
FundamentosRegressão linear ajusta uma combinação de features para um alvo contínuo; regressão logística usa uma função para estimar scores de classe e decidir conforme limiar. São baselines valiosas por simplicidade e interpretabilidade relativa, embora coeficientes não sejam efeitos causais sem um desenho adequado. Uma árvore particiona o espaço por regras e pode representar relações não lineares, mas uma árvore profunda pode memorizar exemplos.
↗ Linear Models↗ Decision Trees↗ Ensembles: gradient boosting, random forests, bagging, voting, stacking↗ Introduction to Boosted Trees
Random Forest combina árvores treinadas com aleatoriedade para reduzir determinados padrões de variância. XGBoost usa boosting de árvores, construindo um ensemble por otimização sucessiva de uma função objetivo, com regularização e escolhas de hiperparâmetros. Nenhum é sempre superior. Compare com baseline, valide sem leakage e considere latência, manutenção e explicabilidade. K-Means resolve outro problema, de agrupamento, e não substitui um classificador com alvo conhecido. Escolher o algoritmo antes de compreender o dado costuma criar complexidade sem uma hipótese verificável.
↗ Linear Models↗ Decision Trees↗ Ensembles: gradient boosting, random forests, bagging, voting, stacking↗ Introduction to Boosted Trees
Classificador reproduzível com Pipeline e baseline
FundamentosCrie um ambiente virtual e instale scikit-learn e numpy, registrando versões em requirements. Salve classifier.py e execute python classifier.py. O dataset sintético possui classe positiva minoritária. A padronização está dentro do Pipeline para ser ajustada apenas nos folds de treino. O teste final é separado antes de qualquer validação.
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split,StratifiedKFold,cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.dummy import DummyClassifier
from sklearn.metrics import confusion_matrix,classification_report,roc_auc_score
X,y=make_classification(n_samples=600,n_features=8,n_informative=5,
n_redundant=0,weights=[0.85,0.15],random_state=42)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,
stratify=y,random_state=42)
model=make_pipeline(StandardScaler(),LogisticRegression(max_iter=1000))
cv=StratifiedKFold(n_splits=5,shuffle=True,random_state=42)
scores=cross_val_score(model,X_train,y_train,cv=cv,scoring='f1')
print('CV F1 mean/std:',scores.mean(),scores.std())
for name,estimator in [('baseline',DummyClassifier(strategy='most_frequent')),('logistic',model)]:
estimator.fit(X_train,y_train)
pred=estimator.predict(X_test)
print(name,confusion_matrix(y_test,pred,labels=[0,1]))
print(classification_report(y_test,pred,zero_division=0))
model.fit(X_train,y_train)
prob=model.predict_proba(X_test)[:,1]
assert len(prob)==len(y_test) and np.all((prob>=0)&(prob<=1))
print('Test ROC AUC:',roc_auc_score(y_test,prob))As métricas serão produzidas pela biblioteca no seu ambiente; não antecipamos scores como se fossem benchmark. O desvio entre folds descreve variação dessas divisões e não é automaticamente um intervalo de confiança. A baseline expõe a armadilha da acurácia. O experimento não representa a distribuição de chamados reais e não autoriza uma decisão operacional sem dados do domínio e um desenho de avaliação apropriado.
Métricas: numeradores, denominadores e decisões
FundamentosEm uma nova amostra, TP=12, FP=3, FN=8 e TN=77. Há 100 exemplos e 20 positivos reais. Precision=TP/(TP+FP)=12/15=0,8: entre os 15 alertas emitidos, 80% estão corretos. Recall=TP/(TP+FN)=12/20=0,6: o detector alcançou 60% dos positivos reais. Os denominadores respondem perguntas diferentes; inverter essas métricas muda a decisão operacional.
↗ Metrics and scoring: quantifying the quality of predictions↗ Cross-validation: evaluating estimator performance
F1=2TP/(2TP+FP+FN)=24/35, aproximadamente 0,686. Accuracy=(TP+TN)/100=0,89. Um baseline que sempre prediz negativo já acerta 80/100, mas tem recall zero. A accuracy aparentemente boa não demonstra que os alertas atendem ao objetivo. Se FN custa 20 unidades e FP custa 2, o custo desta matriz é 8×20+3×2=166. Esse cálculo torna explícita uma hipótese do domínio, não um custo universal.
↗ Metrics and scoring: quantifying the quality of predictions↗ Cross-validation: evaluating estimator performance
Escolha o limiar usando validação, mantendo teste separado. Se mudar o limiar após ver esses cem exemplos de teste, eles deixam de ser evidência independente para essa escolha. Caso haja várias linhas do mesmo cliente, um split aleatório de linhas pode vazar características do cliente entre treino e teste; separar grupos ou tempo depende do uso esperado. Uma matriz sozinha também não oferece intervalo de confiança ou prova de representatividade.
↗ Metrics and scoring: quantifying the quality of predictions↗ Cross-validation: evaluating estimator performance
Exercício aplicado
Um classificador mostra 86% de acurácia em cem chamados, com TP=8, FP=2, FN=12 e TN=78. O gestor quer publicá-lo porque supera a baseline de 80%.
- Calcule precision, recall e F1 para urgente.
- Compare os falsos negativos com o objetivo do produto.
- Verifique split, leakage e escolha de limiar.
- Proponha critério e validação antes da publicação.
Abrir resolução comentada
Precision é 8/10=0,8; recall é 8/20=0,4; F1 é 2×0,8×0,4/1,2≈0,533. Acurácia é 86/100, mas doze urgentes foram perdidos. A melhora global não demonstra que o requisito de triagem foi atendido.
Se omitir urgentes é caro, avalie outro limiar na validação, com capacidade de revisão dos falsos alertas. Preserve o teste final e investigue disponibilidade das features. A decisão depende do risco e do regime de dados, não só de superar a baseline.
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split,StratifiedKFold,cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.dummy import DummyClassifier
from sklearn.metrics import confusion_matrix,classification_report,roc_auc_score
X,y=make_classification(n_samples=600,n_features=8,n_informative=5,
n_redundant=0,weights=[0.85,0.15],random_state=42)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.25,
stratify=y,random_state=42)
model=make_pipeline(StandardScaler(),LogisticRegression(max_iter=1000))
cv=StratifiedKFold(n_splits=5,shuffle=True,random_state=42)
scores=cross_val_score(model,X_train,y_train,cv=cv,scoring='f1')
print('CV F1 mean/std:',scores.mean(),scores.std())
for name,estimator in [('baseline',DummyClassifier(strategy='most_frequent')),('logistic',model)]:
estimator.fit(X_train,y_train)
pred=estimator.predict(X_test)
print(name,confusion_matrix(y_test,pred,labels=[0,1]))
print(classification_report(y_test,pred,zero_division=0))
model.fit(X_train,y_train)
prob=model.predict_proba(X_test)[:,1]
assert len(prob)==len(y_test) and np.all((prob>=0)&(prob<=1))
print('Test ROC AUC:',roc_auc_score(y_test,prob))Como conferir seu resultado
- Teste permanece separado de transformações e escolhas.
- Matriz de confusão tem classe positiva explícita.
- Baseline e recall da classe rara são interpretados.
- Features só usam dados disponíveis na previsão.
Aplique em um problema novo
Primeiro resolva sem consultar a resposta. Explique suas decisões e guarde a evidência. A conclusão de leitura é independente desta autoavaliação.
Confira seus pré-requisitos
- Calcular matriz de confusão e proporções.
- Separar treino/validação/teste e leakage.
TP=12, FP=8, FN=3, TN=77 em 100. Calcule precision, recall, F1, acurácia; compare baseline sempre negativo.
Conferir raciocínio e critérios de domínio
Precision 12/20=60%; recall 12/15=80%; F1=24/35≈68,57%; acurácia 89%.
Baseline sempre negativo tem 85 negativos, acurácia 85% e recall 0. A candidata melhora recall, mas produz 8 falsos alertas.
Limiar depende de custos/segmentos; escolher na validação, preservar teste e impedir features futuras.
Evidências para autoavaliação ou revisão por pares
- Métricas: Precision 12/20=60%; recall 12/15=80%; F1=24/35≈68,57%; acurácia 89%.
- Baseline: Baseline sempre negativo tem 85 negativos, acurácia 85% e recall 0. A candidata melhora recall, mas produz 8 falsos alertas.
- Decisão: Limiar depende de custos/segmentos; escolher na validação, preservar teste e impedir features futuras.
Um erro frequente
Acurácia alta basta para publicar.
Acurácia não expressa custo dos erros nem qualidade por classe.
Teste sua compreensão
Responda com suas palavras antes de abrir o comentário. Saber explicar uma decisão é parte do domínio.
1. F1 alto elimina necessidade de discutir custos?
Não.
A métrica combina precision e recall, mas não representa todo custo de erro.
↗ Metrics and scoring: quantifying the quality of predictions
2. Cross-validation corrige duplicatas entre clientes?
Não automaticamente.
Divisão por grupo pode ser necessária para preservar independência.
3. K-Means é um classificador supervisionado?
Seu progresso fica salvo neste navegador. Concluir a leitura não substitui demonstrar o domínio nos exercícios.
Referências e aprofundamento
Documentação oficial e trabalhos originais. As referências registram o escopo e as limitações para você conferir o que sustentam.
- Supervised learning
scikit-learn • consulta: 2026-10-06
FundamentosPanorama de regressão e classificação e famílias de estimadores.
Limites: Página de organização; detalhes de algoritmos ficam nas páginas específicas mapeadas.
- Clustering
scikit-learn • consulta: 2026-10-06
FundamentosAprendizado sem rótulos, K-Means, escolha e avaliação de agrupamentos.
Limites: K-Means assume geometria e escala adequadas; clusters não são classes validadas automaticamente.
- Linear Models
scikit-learn • consulta: 2026-10-06
FundamentosRegressão linear, regularização e regressão logística.
Limites: Regressão logística faz classificação; pressupostos e regularização devem ser explicados.
- Cross-validation: evaluating estimator performance
scikit-learn • consulta: 2026-10-06
FundamentosTrain/test split, validação cruzada, estratificação e divisões por tempo/grupo.
Limites: Separar teste final da seleção; evitar vazamento e usar split compatível com estrutura dos dados.
- Validation curves: plotting scores to evaluate models
scikit-learn • consulta: 2026-10-06
FundamentosCurvas de validação/aprendizado, overfitting e underfitting.
Limites: Curvas diagnosticam comportamento amostral, não demonstram generalização a toda distribuição futura.
- Metrics and scoring: quantifying the quality of predictions
scikit-learn • consulta: 2026-10-06
FundamentosPrecision, recall, F1, ROC, AUC, thresholds e métricas de regressão/classificação.
Limites: Escolha depende de tarefa, desbalanceamento e custo dos erros; uma métrica isolada pode esconder falhas.
- Preprocessing data
scikit-learn • consulta: 2026-10-06
FundamentosEscalonamento, codificação e transformações de atributos.
Limites: Ajustar transformações apenas no conjunto de treino; sensibilidade à escala varia por estimador.
- Decision Trees
scikit-learn • consulta: 2026-10-06
FundamentosÁrvores de classificação/regressão, critérios, profundidade e poda.
Limites: Árvores podem sobreajustar; controlar complexidade e avaliar em dados separados.
- Ensembles: gradient boosting, random forests, bagging, voting, stacking
scikit-learn • consulta: 2026-10-06
FundamentosRandom Forest, bagging e boosting e seus trade-offs.
Limites: Ensemble não elimina vazamento nem substitui validação de hiperparâmetros.
- Introduction to Boosted Trees
XGBoost • consulta: 2026-10-06
FundamentosModelo aditivo de árvores, função objetivo, regularização e boosting.
Limites: Introdução conceitual; desempenho depende de dados e tuning, não presumir superioridade.