Cover do episódio 53: O primeiro modelo de ML que treinei — e o que ele não previa que eu esperava que previsse
#0533 de dezembro, 20183 min leituraTecnologia sem HypeS3 · 2018–2019

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.

Machine LearningMLDadosAvaliação de Modelo

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?