Dois Dias de Iteração: O Changelog de Outubro
Queria contar esta atualização do SportingCP.ai de forma simples, como expliquei à minha família. Não é um registo de commits; é a cronologia de dois dias rápidos em que o modelo e o site foram ganhando corpo.
30 de Outubro - Partida do Zero
O dia começou com uma pasta vazia, alguns CSVs e uma pergunta: “Será que consigo ter um modelo básico de machine learning a dar probabilidades honestas para os jogos do Sporting?” Montei um pipeline leve para limpar históricos de jogos, calcular estatísticas diretas como diferencial recente de golos e treinar uma regressão logística. Nada espetacular, mas suficiente para estimar vitórias, empates e derrotas. Ao final do dia já tinha esses números no site, a mostrar o próximo adversário com um grau de confiança. Funcionava, mas faltavam nuances.
31 de Outubro (manhã) - Ensinar o Modelo
De café na mão, tratei da lista “xyz” que tinha apontado na véspera:
- Momento de forma: uma média móvel de expected goals nos últimos cinco jogos para o modelo perceber quão quente (ou frio) está o Sporting.
- Viagens e descanso: um indicador simples de fadiga com base nos dias de pausa e se houve deslocação europeia.
- Sinal da liga: ratings ao estilo ELO combinados com a força do adversário para respeitar quem está do outro lado.
Com estas features o treino ficou mais rico e as probabilidades passaram a variar de forma suave, sem saltos absurdos quando apenas um número mudava.
31 de Outubro (tarde) - Limpeza na Engenharia de Features
Depois de melhorar o “quê”, tratei do “como”. Reescrevi o código de feature engineering numa única rotina que:
- Fixa nomes e unidades das colunas.
- Faz checks rápidos de valores em falta.
- Guarda os dados processados tanto para o modelo como para a cache da API.
Assim, o site lê exatamente os mesmos sinais que o modelo viu durante o treino, mantendo o comportamento consistente do notebook até à produção.
31 de Outubro (noite) - A Realização
Ao rever jogos recentes lado a lado com as previsões percebi uma lacuna: o modelo ainda ignorava contexto que adeptos e casas de apostas já conhecem-lesões, rotações de plantel, até a meteorologia. Por isso alguns números pareciam “robóticos”. A conclusão foi óbvia: deixar odds bem curadas atuarem como professora, emprestando ao modelo a intuição que não existe nos dados históricos.
O Que Vem a Seguir
A próxima versão vai incorporar odds detalhadas antes do jogo diretamente no treino. Elas condensam tudo o que é difícil de seguir em tempo real: onzes prováveis, rumores, pequenas mazelas, viagens e clima. Ao juntar esse sinal ao conjunto de features, o modelo mantém as suas leituras específicas sobre o Sporting mas fica ancorado na realidade. É combinar intuição com instrumentação.
Obrigado por acompanhares! Se tiveres ideias sobre outros sinais que o modelo devia aprender, diz-me.