
O primeiro modelo de ML que treinei — e o que ele não previa que eu esperava que previsse
Meu primeiro modelo de machine learning tinha 94% de acurácia no teste. No dado real, errava exatamente os casos que mais importavam. Aprendi o que acurácia não mede.
Noventa e quatro por cento de acurácia. Achei que tinha terminado.
O professor olhou a confusion matrix e perguntou: "quantos falsos negativos você tem?" Não sabia responder imediatamente. Quando calculei, entendi o problema: meu modelo acertava 100% dos casos negativos e errava 40% dos positivos.
Como o dataset tinha 90% de exemplos negativos, a acurácia global parecia ótima. O modelo era inútil para o que eu precisava.
Primeiro modelo de machine learning com scikit-learn: você coleta dado, divide em treino e teste, treina o modelo, avalia acurácia. O tutorial diz que acurácia alta é bom. Você fica feliz.
O problema começa quando você entende o que acurácia mede.
Acurácia = (acertos totais) / (total de exemplos). Se seu dataset é desbalanceado — 90% de uma classe, 10% de outra — um modelo que responde "classe majoritária" para tudo tem 90% de acurácia sem aprender nada.
Isso tem nome: majority class baseline. É o piso mínimo de comparação. Se seu modelo não bate o baseline, você construiu nada.
O que aprendi a olhar depois dessa experiência:
Precision e recall, não acurácia. Precision = dos que o modelo disse "positivo", quantos eram? Recall = dos que eram positivos, quantos o modelo encontrou? Dependendo do problema, um vale mais que o outro. Em diagnóstico médico, recall alto é crítico — você não quer falso negativo. Em spam, precision alta é crítica — você não quer filtrar email legítimo.
Overfitting não é só teoria. Meu modelo seguinte tinha 99% no treino e 71% no teste. Decorou o dado de treino, não aprendeu padrão. Regularização, cross-validation, dados de validação separados — esses não são tópicos avançados, são o básico de um modelo que funciona fora do treino.
Dado de teste precisa representar o mundo real. Se você seleciona exemplos de teste de forma enviesada, sua avaliação não diz nada sobre como o modelo vai se comportar em produção. Mesma lição da estatística: amostra não representativa = conclusão inválida.
Essa experiência com ML voltou quando comecei a trabalhar com sistemas de AI mais tarde.
Todo modelo tem uma métrica de avaliação que parece boa e esconde algo importante. A pergunta certa não é "qual é a acurácia?" — é "o que esse modelo erra, e qual é o custo de errar?"
Para sistema de crédito, falso positivo (aprovar quem não deve) e falso negativo (recusar quem deveria aprovar) têm custos completamente diferentes. A métrica que você otimiza determina o comportamento do sistema. Isso vale para ML, para SLO, para alert threshold.
Escolha da métrica é escolha de valor. Escolher errado é construir sistema que otimiza para o número errado.
Essa semana: qual é a principal métrica que você usa para avaliar seu sistema? O que ela esconde que você deveria estar medindo também?