INTRODUÇÃO AO MACHINE LEARNING
Módulo 3 — Tornando
o modelo confiável: features, validação e ética
Aula 3.1 — Feature
engineering (o que mais melhora modelo em projetos reais)
Na Aula 3.1, você vai perceber uma verdade
que incomoda um pouco, mas liberta: em muitos projetos reais, o que mais
melhora um modelo não é “trocar de algoritmo”, e sim melhorar as variáveis
de entrada. É aqui que entra o tema da aula: feature engineering,
ou, em português claro, “criar e ajustar boas variáveis”. É como cozinhar: você
pode ter uma panela excelente, mas se os ingredientes forem ruins ou mal
preparados, o prato não melhora. Em Machine Learning, o algoritmo é a panela.
As features são os ingredientes.
Para começar, vale entender o que uma
feature realmente é. Não é “qualquer coluna do dataset”. É uma representação
útil da realidade — um jeito de traduzir o mundo para números e categorias que
um modelo consegue usar. E essa tradução nem sempre vem pronta. Às vezes a
coluna existe, mas do jeito errado; às vezes a informação está lá, só que
escondida em um formato pouco útil; às vezes você precisa combinar duas ou três
colunas para criar um sinal mais forte. Quando você aprende a fazer isso, seu
modelo dá um salto, mesmo que você use algoritmos simples.
Um exemplo fácil: imagine um dataset com
uma coluna “data de compra”. Se você joga essa data crua no modelo, muitas
vezes ela não ajuda quase nada, porque “2026-03-03” é só um valor. Mas se você
transforma isso em “dia da semana”, “mês”, “é feriado?”, “está perto do
salário?”, “é período de alta sazonalidade?”, você cria sinais que conversam
com o comportamento humano. Esse tipo de transformação é típico de feature
engineering: você não inventa dados, você reorganiza o que já existe de um
jeito que faz sentido para o problema.
Outro exemplo: uma coluna “cidade” pode ser
útil, mas às vezes ela vira um caos por inconsistência (“São Paulo”, “SP”, “S.
Paulo”, “sao paulo”). Antes de pensar em modelo, você precisa normalizar. Essa
parte é menos glamourosa, mas é onde muita performance se ganha. Modelos não
têm bom senso; “SP” e “São Paulo” são coisas completamente diferentes para um
algoritmo. Então, ajustar categorias, padronizar texto, remover espaços extras
e unificar grafias não é “limpeza estética”. É tornar o dado minimamente confiável.
Falando em categorias, você vai encostar em um conceito inevitável: muitos modelos precisam que variáveis categóricas virem números. Só que transformar “plano = premium” em
“plano = premium” em “plano = 3” não faz sentido,
porque o modelo pode interpretar como se existisse uma ordem (“premium é maior
que básico”). O caminho mais comum é o one-hot encoding, em que você
cria colunas binárias do tipo “plano_premium = 1/0”, “plano_basico = 1/0”. Isso
parece exagero no começo, mas é uma forma honesta de dizer ao modelo: “isso é
categoria, não é escala”.
Agora, tem um detalhe importante: o one-hot
pode explodir o número de colunas quando a variável tem muitas categorias (por
exemplo, milhares de produtos diferentes). Se você fizer isso sem pensar, o
modelo fica pesado e a generalização pode piorar. Por isso, uma prática simples
e muito útil é agrupar categorias raras em uma classe “outros” ou trabalhar com
recortes (por exemplo, “top 20 categorias + outros”). Isso é uma decisão de
engenharia, não um capricho. E o objetivo é sempre o mesmo: criar uma representação
que ajude o modelo a enxergar padrões que se repetem.
Outro pedaço muito comum do trabalho é
lidar com valores faltantes. A primeira reação de muita gente é apagar
linhas. Só que apagar pode ser uma burrice cara, porque você pode estar
eliminando justamente os casos mais importantes (como clientes problemáticos,
pedidos com falhas, situações raras). Em feature engineering, você aprende a
tratar missing com mais inteligência: preencher com mediana em variáveis
numéricas, criar uma categoria “desconhecido” em variáveis categóricas, ou até
criar uma feature extra “esta coluna estava vazia?” (porque o fato de estar
vazio pode ser informativo). O ponto é: missing não é só ausência; às vezes é
um sinal de processo.
Um tema que confunde iniciantes é normalização/padronização.
Nem todo modelo precisa disso. Mas alguns algoritmos (principalmente os
baseados em distância e alguns modelos lineares com regularização) podem se
comportar melhor quando as variáveis numéricas estão na mesma escala. Se você
tem “renda” indo até 50 mil e “idade” indo até 90, a renda pode dominar o
treinamento em certos métodos. A normalização ajuda a equilibrar. Só que, de
novo, não é “faça sempre”. É “faça quando fizer sentido”. Parte do aprendizado
aqui é construir esse senso prático: entender que pré-processamento não é um
ritual automático, é uma escolha técnica.
Uma das formas mais poderosas (e mais simples) de feature engineering é criar variáveis derivadas. Em vez de usar “total gasto”, talvez faça mais sentido usar “gasto médio por mês”. Em vez de “quantidade de acessos total”, talvez seja
melhor “acessos nos últimos 7
dias”, porque isso captura comportamento recente. Em vez de “data do último
login”, você cria “dias desde o último login”. Essas transformações mudam o
jogo porque aproximam a feature do comportamento que você está tentando prever.
Um modelo de churn, por exemplo, responde muito melhor a sinais de queda
recente do que a totais acumulados.
Mas atenção: feature engineering não é
licença para inventar coisa sem critério. Existe um erro clássico que volta
sempre: criar features que, sem querer, vazam o futuro. Por exemplo, em um
modelo que prevê atraso de entrega, usar “número de tentativas de entrega” é
vazamento, porque isso só acontece depois. Em um modelo que prevê churn, usar
“chamado de cancelamento aberto” pode ser um sinal que surge tarde demais.
Então, a regra continua valendo: a feature precisa existir quando a previsão
é feita. O resto é autoengano.
Um jeito bem didático de fazer feature
engineering sem se perder é seguir um ciclo simples:
1.
Escolha uma métrica e um baseline (para você saber se está
melhorando).
2.
Faça uma mudança pequena e controlada nas features.
3.
Retreine e compare.
4.
Se melhorou, mantenha. Se piorou, volte.
5.
Documente o que você fez e por quê.
Isso evita o caos de “mexe em tudo e não
sabe o que causou a melhora”. Em projetos reais, essa disciplina vale mais do
que a criatividade solta.
No final da Aula 3.1, a ideia é você
enxergar feature engineering como uma conversa entre três coisas: dados,
contexto e objetivo. Você olha o dado, entende o que ele representa no mundo
real e transforma de um jeito que ajude o modelo a tomar uma decisão melhor. É
menos sobre “truques” e mais sobre clareza. E é justamente por isso que é uma
das habilidades mais valorizadas em Machine Learning: ela exige tanto
raciocínio técnico quanto entendimento do problema.
Se você absorver uma mensagem desta aula, que seja esta: o algoritmo aprende padrões; quem cria os bons sinais é você. E quando você aprende a criar sinais melhores, você para de depender de “modelos mágicos” e começa a construir soluções que realmente se sustentam.
Referências
bibliográficas
ALPAYDIN, Ethem. Introdução ao
Aprendizado de Máquina. 3. ed. Rio de Janeiro: LTC, 2016.
GÉRON, Aurélien. Mãos à Obra:
Aprendizado de Máquina com Scikit-Learn, Keras e TensorFlow. 2. ed. Rio de
Janeiro: Alta Books, 2020.
HASTIE, Trevor; TIBSHIRANI, Robert; FRIEDMAN, Jerome. Os Elementos do Aprendizado Estatístico: Mineração de
Dados, Inferência e Predição. 2. ed. Nova York: Springer, 2009.
JAMES, Gareth; WITTEN, Daniela; HASTIE,
Trevor; TIBSHIRANI, Robert. Uma Introdução ao Aprendizado Estatístico com
Aplicações em R. Rio de Janeiro: LTC, 2014.
MCKINNEY, Wes. Python para Análise de
Dados. 2. ed. Rio de Janeiro: Alta Books, 2019.
VANDERPLAS, Jake. Python para Ciência de
Dados. Rio de Janeiro: Alta Books, 2018.
KUHN, Max; JOHNSON, Kjell. Modelagem
Preditiva Aplicada. Rio de Janeiro: Alta Books, 2015.
Aula
3.2 — Validação e ajuste: como saber se você está se enganando
Na Aula 3.2, você entra numa fase em que
muita gente se perde por excesso de empolgação: você já consegue treinar
modelos, já consegue ver métricas, já sabe mexer em features… e aí bate a
tentação de “apertar botões” até o número ficar bonito. Essa aula existe para
cortar esse caminho torto. O tema aqui é validação e ajuste — ou seja,
como avaliar seu modelo de um jeito mais confiável e como melhorar o desempenho
sem cair no erro de otimizar para o conjunto errado.
Comecemos pelo problema que essa aula
resolve: quando você faz apenas uma divisão treino/teste, seu resultado pode
depender demais do acaso. Troque a semente aleatória, mude quem caiu em treino
e quem caiu em teste, e o número muda. Às vezes melhora, às vezes piora. Se
você basear decisões importantes nisso, você está construindo em cima de areia.
É aqui que entra a validação cruzada (cross-validation). Pense nela como
uma forma de testar o seu modelo várias vezes, em pedaços diferentes dos dados,
para ter uma noção mais estável do desempenho.
A ideia é simples: em vez de separar uma
vez e torcer, você divide os dados em “partes” (dobras) e alterna quais partes
servem como treino e quais servem como validação. Assim, quase todos os
exemplos passam pelo papel de “ser testado” em algum momento. Isso reduz a
chance de você se enganar com uma divisão muito favorável ou muito
desfavorável. E o ganho não é só estatístico: é psicológico também.
Cross-validation lhe força a parar de comemorar resultado isolado e começar a
olhar consistência.
Agora, cuidado: validação cruzada não é um ritual mágico. Ela melhora a confiança na estimativa de desempenho, mas ainda depende de você fazer tudo direito. Se você tiver vazamento de dados, a validação cruzada vai “confirmar” um resultado falso com ainda mais segurança. E se seus dados têm tempo (por exemplo, comportamento mensal, vendas diárias, séries temporais), a validação cruzada padrão pode ser perigosa,
porque mistura
passado e futuro. Em casos assim, o correto é usar estratégias de validação específicas
para tempo, com cortes cronológicos. Nesta aula, o importante é você entender o
princípio: o teste precisa imitar o uso real. Se o seu método de
validação não imita o uso real, o número que sai não vale muito.
Com validação cruzada em mãos, você começa
a ver outra questão: modelos têm “botões internos” que controlam o
comportamento. Esses botões são os hiper parâmetros. Eles não são
aprendidos diretamente do conjunto de treino como os parâmetros do modelo; eles
são escolhas de configuração. Por exemplo: quantas árvores um Random Forest
usa, qual profundidade máxima de uma árvore, qual o valor de regularização de
um modelo linear, quantos vizinhos um KNN considera. Esses ajustes podem
melhorar bastante o desempenho — mas também podem destruir a generalização se
você fizer no modo “tentativa e erro”.
E aqui está um erro comum que você precisa
evitar com força: mexer nos hiper parâmetros olhando o conjunto de teste.
Quando você faz isso, você está usando o teste como guia de treinamento. E aí
ele deixa de ser teste. A avaliação fica contaminada. O que acontece, na
prática, é que você “treina” indiretamente para aquele conjunto de teste
específico, e seu resultado fica otimista. Depois, quando você coloca o modelo
no mundo real, a queda vem.
O jeito correto de ajustar hiper parâmetros
é usar uma estrutura bem clara: você treina e ajusta dentro do treino, usando
validação (como cross-validation), e só no final usa o conjunto de teste para
uma checagem final, como se fosse uma “prova surpresa”. Se você usar a prova
surpresa para estudar, ela deixa de ser surpresa. Em ML, isso tem um nome: overfitting
ao conjunto de teste. E é mais comum do que parece, principalmente em times
iniciantes que ficam rodando experimentos sem controlar o processo.
É aqui que entram métodos como Grid
Search e Random Search. A ideia do Grid Search é testar combinações
de hiper parâmetros de forma sistemática, em uma grade de possibilidades. Ele é
didático porque organiza a busca, mas pode ficar caro se você colocar muitos
valores. Já o Random Search sorteia combinações dentro de um espaço definido e,
em muitos casos, encontra bons resultados com menos tentativas. O ponto não é
decorar nomes; o ponto é entender a lógica: ajuste deve ser controlado e
comparável, não uma sequência de chutes sem registro.
E tem um detalhe que muda tudo para evitar autoengano: você precisa ajustar e
avaliar dentro de um pipeline. Isso
significa que transformações como one-hot encoding, normalização e imputação de
valores faltantes devem acontecer do jeito certo, no lugar certo. Se você
normaliza ou cria categorias usando o dataset inteiro antes de separar, você
pode vazar informação do conjunto de validação para o treino sem perceber. Um
pipeline bem montado garante que, a cada divisão da validação cruzada, as
transformações são “aprendidas” apenas com o treino daquela dobra e aplicadas
no pedaço de validação. Isso parece detalhe técnico, mas é exatamente o tipo de
detalhe que separa um modelo confiável de um modelo “bom no notebook e ruim na
vida”.
Outra ideia importante desta aula é a
diferença entre melhorar o treino e melhorar a generalização. É muito fácil
“melhorar” o treino: basta aumentar a complexidade do modelo ou ajustar hiper
parâmetros para se encaixar melhor nos dados. O difícil é melhorar o desempenho
em dados novos. Em termos humanos, é a diferença entre decorar e aprender. O
papel da validação cruzada e do ajuste controlado é justamente fazer você
perseguir aprendizado, não decoração.
Você também vai ouvir muito a palavra reprodutibilidade.
Na prática, ela significa: se você rodar o experimento de novo, você consegue
obter o mesmo resultado? Se a resposta for “não”, você tem um problema de
método. Fixar semente aleatória, versionar dados, registrar quais hiper
parâmetros foram testados e quais transformações foram aplicadas — isso parece
burocracia, mas evita que o projeto vire uma história de “um dia deu certo,
depois nunca mais”. Em ambientes profissionais, reprodutibilidade é o mínimo
para você confiar no que está construindo.
Um jeito didático de fechar essa aula é com
um roteiro de trabalho simples, que você pode usar em qualquer miniprojeto:
1.
Separe um conjunto de teste final e guarde. Não mexa nele até o
fim.
2.
No conjunto de treino, use validação cruzada para avaliar.
3.
Dentro da validação, ajuste hiper parâmetros com Grid Search ou
Random Search.
4.
Use pipeline para evitar vazamento nas transformações.
5.
Só depois de escolher o melhor candidato, avalie uma vez no
teste final.
Esse processo não garante “o melhor modelo do planeta”, mas garante algo mais importante para quem está começando: um modelo que você consegue defender com honestidade. E isso é a base de qualquer evolução séria em Machine Learning. Melhorar é natural. Se enganar é opcional — e a Aula 3.2 existe para te tirar desse
caminho.
Referências
bibliográficas
ALPAYDIN, Ethem. Introdução ao
Aprendizado de Máquina. 3. ed. Rio de Janeiro: LTC, 2016.
GÉRON, Aurélien. Mãos à Obra:
Aprendizado de Máquina com Scikit-Learn, Keras e TensorFlow. 2. ed. Rio de
Janeiro: Alta Books, 2020.
HASTIE, Trevor; TIBSHIRANI, Robert;
FRIEDMAN, Jerome. Os Elementos do Aprendizado Estatístico: Mineração de
Dados, Inferência e Predição. 2. ed. Nova York: Springer, 2009.
JAMES, Gareth; WITTEN, Daniela; HASTIE,
Trevor; TIBSHIRANI, Robert. Uma Introdução ao Aprendizado Estatístico com
Aplicações em R. Rio de Janeiro: LTC, 2014.
KUHN, Max; JOHNSON, Kjell. Modelagem
Preditiva Aplicada. Rio de Janeiro: Alta Books, 2015.
MCKINNEY, Wes. Python para Análise de
Dados. 2. ed. Rio de Janeiro: Alta Books, 2019.
VANDERPLAS, Jake. Python para Ciência de Dados. Rio de Janeiro: Alta Books, 2018.
Aula
3.3 — Deploy mental: como colocar ML no mundo sem dar ruim
Na Aula 3.3, você chega num ponto em que
muita gente que aprende Machine Learning para por aí: “treinei um modelo, deu
uma métrica boa, acabou”. Só que, no mundo real, é exatamente aí que o trabalho
começa a ficar sério. Porque colocar um modelo para funcionar não é só rodar um
notebook. É lidar com o fato de que o mundo muda, os dados mudam, as pessoas
reagem, e o modelo — que parecia ótimo ontem — pode virar um gerador de erro
amanhã. Esta aula é sobre isso: como pensar em “deploy mental”, ou seja, como levar
o modelo para a realidade sem cair em armadilhas clássicas.
Vamos começar com uma ideia que parece
simples, mas muda tudo: um modelo não vive em um vácuo. Ele entra em um
processo: alguém usa a previsão, toma uma decisão, executa uma ação e isso
altera o ambiente. Quando você coloca um modelo de risco para aprovar crédito,
por exemplo, você muda o perfil de quem recebe crédito. Quando você coloca um
modelo de fraude para bloquear compras, você muda o comportamento de
fraudadores e clientes. Quando você usa um modelo para recomendar conteúdo,
você influencia o que as pessoas assistem — e isso muda os dados futuros. Ou
seja: o modelo “funciona” dentro de um ciclo, e esse ciclo pode empurrá-lo para
o acerto ou para o desastre.
Por isso, o primeiro conceito grande desta aula é drift — uma palavra curta para um problema bem comum: o dado muda ao longo do tempo. O modelo aprendeu padrões do passado. Se o presente não se comporta como o passado, ele perde desempenho. Drift pode acontecer por vários motivos. Às vezes é sazonalidade (férias, Black
— uma palavra curta para um problema bem comum: o dado muda
ao longo do tempo. O modelo aprendeu padrões do passado. Se o presente não se
comporta como o passado, ele perde desempenho. Drift pode acontecer por vários
motivos. Às vezes é sazonalidade (férias, Black Friday, volta às aulas). Às
vezes é mudança de política (novo preço, novo prazo, nova regra). Às vezes é
mudança social (um app viraliza, uma crise econômica altera consumo). E às
vezes é mudança técnica (um sistema passa a registrar dados de outro jeito). O
resultado é o mesmo: o modelo continua entregando um número, mas esse número
começa a representar cada vez menos a realidade.
É importante separar duas ideias: mudança
no input e mudança na relação entre input e output. A primeira é
quando a distribuição das features muda: mais clientes de uma região, mais
compras por celular, mais pedidos à noite. A segunda é mais perigosa: é quando
a relação entre as features e o target muda. Por exemplo: antes, “compras altas
à noite” eram um sinal forte de fraude; depois, com um novo hábito de consumo,
isso vira normal. O modelo continua “achando” que é fraude, porque foi assim
que ele aprendeu. Esse é o tipo de drift que derruba sistemas sem avisar.
Daí vem a pergunta prática: como eu sei
que meu modelo está piorando? Resposta: você precisa monitorar. E monitorar
não é só “olhar a acurácia de vez em quando”. Em muitos cenários, você nem tem
o rótulo na hora (por exemplo, fraude confirmada leva dias; churn só acontece
no mês seguinte). Então você monitora em camadas. Primeiro, monitora os dados
de entrada: se as distribuições das features mudarem demais, isso já é um
alerta. Segundo, monitora o comportamento do modelo: a distribuição das
probabilidades mudou? Ele passou a marcar “alto risco” muito mais do que antes?
Terceiro, quando o rótulo chega, você monitora a performance real e
compara com o que você tinha no treinamento.
E aí entra uma ideia que muita gente subestima: você precisa definir, antes, quais são os “sinais de alerta” e o que você vai fazer quando eles aparecerem. Porque, se você só “olha” e não tem resposta, você está assistindo ao problema crescer. Uma abordagem simples é ter gatilhos: “se a taxa de positivos previstos aumentar X% sem motivo, investiga”; “se a performance cair abaixo de tal ponto, re-treina”; “se certos grupos começarem a sofrer mais falsos positivos, pausa o uso automático e manda para revisão humana”. Isso é governança básica — e governança não é burocracia: é
controle de risco.
Agora, vamos tocar num ponto sensível: modelos
erram e podem errar de forma injusta. É aqui que entram vieses e ética, só
que nesta aula a conversa não é filosófica. É prática. O problema é que o
modelo aprende com dados históricos, e histórico costuma carregar
desigualdades, decisões humanas e limitações de coleta. Se no passado certos
grupos receberam menos crédito, o modelo pode “aprender” que eles têm mais
risco, mesmo que a variável usada seja um proxy indireto, como CEP. Se no
passado certos perfis foram mais investigados por fraude, o conjunto de rótulos
pode estar contaminado por maior vigilância, não por maior fraude real. E aí o
modelo reforça o ciclo: ele aponta sempre os mesmos alvos.
Como evitar isso de forma concreta?
Primeiro, medindo. Você não corrige viés no escuro. Você precisa
comparar métricas por grupos relevantes (quando isso for possível e legal):
taxas de falsos positivos e falsos negativos por região, faixa etária, canal,
dispositivo etc. Segundo, definindo limites para o que o modelo pode
decidir sozinho. Em decisões de alto impacto, a saída do modelo pode ser um
“sinal” e não uma sentença. É comum adotar o modelo como triagem: casos muito
seguros passam, casos muito suspeitos travam, e uma faixa intermediária vai
para revisão humana. Isso reduz dano e torna o sistema mais robusto.
Outro assunto que entra aqui é explicabilidade.
No começo, muita gente acha que explicar modelo é luxo. Não é. Explicabilidade
é parte do controle. Se um gerente pergunta “por que o sistema bloqueou esse
pedido?” e você não consegue dar nenhuma justificativa além de “o modelo
disse”, você criou um risco operacional e reputacional. O nível de explicação
pode ser simples: quais features mais influenciaram aquela decisão, quais
padrões o modelo está usando, quais limites você impôs. Não precisa virar uma
tese. Precisa ser suficiente para auditoria e para correção de erros.
E aqui vem uma regra de sobrevivência: documente limites de uso. Todo modelo tem limites. Ele foi treinado com certos dados, em certo período, com certa população. Fora disso, ele é menos confiável. Documentar limitações é o contrário de fraqueza; é o que faz o modelo ser usado do jeito certo. Uma forma prática de fazer isso é criar uma documentação curta, tipo um “cartão do modelo”: objetivo, dados usados, métrica, ponto de corte, riscos conhecidos, grupos sensíveis, quando retreinar, quando exigir revisão humana. Isso evita que alguém use seu modelo como se fosse
Todo modelo tem limites. Ele foi treinado com certos dados,
em certo período, com certa população. Fora disso, ele é menos confiável.
Documentar limitações é o contrário de fraqueza; é o que faz o modelo ser usado
do jeito certo. Uma forma prática de fazer isso é criar uma documentação curta,
tipo um “cartão do modelo”: objetivo, dados usados, métrica, ponto de corte,
riscos conhecidos, grupos sensíveis, quando retreinar, quando exigir revisão
humana. Isso evita que alguém use seu modelo como se fosse uma verdade
universal.
Por fim, você precisa encarar a parte que
ninguém gosta, mas todo mundo responsável faz: plano de manutenção.
Modelo não é projeto “entregou e acabou”. Ele precisa de rotinas: revisão
periódica, checagem de drift, retreino quando necessário, validação antes de
substituir versões, logs de decisões. E tudo isso pode começar simples. O erro
é não começar nunca. Um modelo sem manutenção é como um carro sem revisão: ele
pode rodar bem por um tempo, até o dia em que para no pior lugar possível.
Fechando a Aula 3.3, o recado é bem direto: “modelo bom” não é só o que tem métrica alta no treino. Modelo bom é o que continua útil com o tempo, com controle de risco, com monitoramento, com limites, com transparência e com responsabilidade. Em outras palavras: Machine Learning no mundo real é menos sobre “fazer o modelo acertar” e mais sobre fazer o sistema inteiro não falhar.
Referências
bibliográficas
ALPAYDIN, Ethem. Introdução ao
Aprendizado de Máquina. 3. ed. Rio de Janeiro: LTC, 2016.
GÉRON, Aurélien. Mãos à Obra:
Aprendizado de Máquina com Scikit-Learn, Keras e TensorFlow. 2. ed. Rio de
Janeiro: Alta Books, 2020.
GOODFELLOW, Ian; BENGIO, Yoshua; COURVILLE,
Aaron. Aprendizado Profundo. São Paulo: Novatec, 2018.
HASTIE, Trevor; TIBSHIRANI, Robert;
FRIEDMAN, Jerome. Os Elementos do Aprendizado Estatístico: Mineração de
Dados, Inferência e Predição. 2. ed. Nova York: Springer, 2009.
JAMES, Gareth; WITTEN, Daniela; HASTIE,
Trevor; TIBSHIRANI, Robert. Uma Introdução ao Aprendizado Estatístico com
Aplicações em R. Rio de Janeiro: LTC, 2014.
RUSSELL, Stuart; NORVIG, Peter. Inteligência
Artificial: uma abordagem moderna. 3. ed. Rio de Janeiro: Elsevier, 2013.
WACHTER, Sandra; MITTELSTADT, Brent;
FLORIDI, Luciano. Por que o direito a explicações de decisões automatizadas
não existe na prática. In: Coletâneas e debates sobre ética e IA. 2017.
Estudo de caso do Módulo 3
“O modelo campeão que virou vilão em 45 dias” — Recomendação e
evasão em uma plataforma de cursos
A TrilhaCerta (plataforma fictícia
de cursos online) tem um problema direto: muita gente entra empolgada e some na
segunda semana. O time decide atacar com Machine Learning usando dois modelos:
1.
Um modelo para prever risco de evasão (quem vai abandonar
nos próximos 7 dias).
2.
Um modelo para recomendar aulas que aumentem a chance de
continuidade.
Eles já dominam o básico do Módulo 2:
pipeline, treino/teste, métricas. Então o plano parece simples: melhorar
features, validar direito, colocar em produção.
Em duas semanas, eles têm um resultado
excelente. Em 45 dias, o modelo começa a causar reclamações, enviesar
recomendações e perder desempenho. E o pior: ninguém percebeu a tempo.
O que aconteceu foi um combo clássico de erros do Módulo 3.
Ato 1 — Feature
engineering “criativo” que vazou o futuro (Aula 3.1)
Para prever evasão, o time criou features
“geniais”:
Tudo parecia perfeito. O modelo ficava
excelente em teste. Só que havia uma pegadinha: o objetivo era prever “evasão
nos próximos 7 dias” no momento em que o aluno entrava no curso (ou no
começo da semana). Mas eles estavam usando indicadores calculados durante
a semana, quando parte do comportamento já tinha acontecido.
Resultado: o modelo ficou “bom” porque
estava vendo o evento se desenhar.
Erro comum: feature que só
existe depois do momento da decisão (data leakage).
Como evitar
Ato 2 — One-hot e
categorias explodindo o modelo (Aula 3.1)
Para melhorar recomendação, eles colocaram:
Fizeram one-hot em tudo e o dataset virou
um monstro. Treinar ficou lento, o modelo começou a “memorizar” cursos muito
específicos e perdeu generalização. Além disso, toda semana entravam cursos
novos e o modelo não sabia lidar com categorias inéditas.
Erro comum: alta
cardinalidade + one-hot sem estratégia = modelo pesado e frágil.
Como evitar
Ato 3 — Ajuste de
hiper parâmetros contaminando o teste (Aula 3.2)
O time fez Grid Search e, a cada rodada,
avaliava no conjunto de teste para “ver se melhorou”. No fim, escolheram
o modelo que ficou melhor no teste.
Só que isso é o equivalente a fazer a
prova, olhar o gabarito e depois dizer que você “aprendeu”.
Resultado: a performance parecia ótima…,
mas era otimizada para aquele teste específico.
Erro comum: overfitting ao
conjunto de teste (teste virou treino).
Como evitar
Ato 4 — Pipeline
mal montado (Aula 3.2)
Para acelerar, eles fizeram imputação e
normalização antes de separar os dados. Sem perceber, estatísticas do
conjunto inteiro entraram no treino e na validação.
Não parece grave, mas dá vantagem indevida
ao modelo e produz métricas infladas.
Erro comum: vazamento
silencioso via pré-processamento fora do pipeline.
Como evitar
Ato 5 — Drift: o
mundo mudou e o modelo ficou “velho” (Aula 3.3)
Um mês depois de colocar em produção, a
TrilhaCerta lançou:
O modelo começou a prever “alto risco” para
gente demais. O time achou que era “a realidade piorando”. Na verdade, era drift:
Erro comum: modelo em
produção sem monitoramento de dados e comportamento.
Como evitar
Ato 6 — O modelo
gerou injustiça e reclamações (Aula 3.3)
A
plataforma usava CEP e tipo de
dispositivo como sinais fortes. O modelo passou a:
Alunos perceberam um padrão (“o sistema me
empurra sempre para conteúdo básico”) e começaram a reclamar. A reputação da
plataforma foi afetada.
Erro comum: proxy de
características sensíveis + decisão automática sem governança.
Como evitar
A correção — o que
funcionou quando eles fizeram do jeito certo
Depois do estrago, o time reconstruiu com
um processo simples e robusto:
1.
Refez as features com base no momento real da previsão (sem
vazamento).
2.
Tratou alta cardinalidade com estratégia (top N + outros e
features agregadas).
3.
Implantou cross-validation e deixou o teste “trancado”.
4.
Colocou pré-processamento dentro de Pipeline.
5.
Criou monitoramento de drift e gatilhos de retreino.
6.
Criou governança: auditoria por grupos e faixa de decisão com
revisão humana.
O modelo final não ficou “perfeito”, mas ficou operável: sustentou desempenho ao longo dos meses, reduziu intervenções inúteis e diminuiu reclamações.
Checklist final do
Módulo 3 (sem desculpas)
Aula 3.1 — Features
Aula 3.2 —
Validação e ajuste
Aula 3.3 —
Produção, drift e risco
Acesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!
Matricule-se AgoraAcesse materiais, apostilas e vídeos em mais de 3000 cursos, tudo isso gratuitamente!
Matricule-se Agora