Prevendo gols em partidas de futebol com um modelo de IA

Neste artigo, apresentarei os resultados e parte do processo de desenvolvimento do nosso atual modelo de probabilidade de gols.

Definindo o problema

Em primeiro lugar, explicarei nossa abordagem ao problema de prever gols em uma partida. Ao construir um modelo de previsão, deve-se primeiro decidir se ele fará previsões durante o jogo ou apenas antes de acontecer. É claro que o modelo que prevê partidas ao vivo também será capaz de fazer previsões antes dela começar (t=0), e por isso, optamos por desenvolver esse tipo de modelo.

Tecnicamente falando, nosso modelo teria inúmeras variáveis independentes, chamadas de recursos em modelos de IA, como entradas e, além disso, o número relativo de gols que gostaríamos de obter a probabilidade. Um exemplo é mostrado abaixo.

Visão geral do modelo: Gh = gols da casa, Ga=gols do visitante,
Ch=escanteios da casa, Ca=escanteios do visitante

Preparando os dados

Para resolver o problema, optamos por usar modelos de aprendizado de máquina porque as relações entre as variáveis independentes e a variável de destino são desconhecidas e muitas vezes muito complexas. Além disso, não estamos interessados em tirar conclusões do próprio modelo de dados (ou seja: como é a relação entre variáveis independentes e alvo), mas estamos apenas interessados em obter a saída (previsão).

Conforme discutido no ótimo artigo The Wisdom of the Crowd, a melhor forma de estimar as probabilidades de um determinado evento no futebol seria pedir a vários apostadores que estimassem as próprias probabilidades. Felizmente, isso se traduz nas probabilidades de um determinado mercado para uma casa de apostas ou uma bolsa de apostas. Como você deve saber, a probabilidade está relacionada à probabilidade implícita da casa de apostas pela seguinte equação:

odd = 1/probbm

A probabilidade implícita da casa de apostas está relacionada com a probabilidade justa pela seguinte equação:

probfair + M = probbm

onde M é a margem da casa de apostas.

Resolvendo esta equação podemos chegar a uma aproximação da probabilidade justa calculada pela casa de apostas. Esse resultado é o alvo do nosso modelo e foi usado para treiná-lo.

Treinando o modelo

O modelo foi treinado usando muitas estatísticas da partida, tanto estatísticas ao vivo quanto estatísticas pré, e teve a probabilidade justa de o jogo terminar com a quantidade especificada de gols totais como resultado. O conjunto de dados foi dividido em dois conjuntos, o conjunto de treinamento e o conjunto de teste, como é usual em modelos de aprendizado de máquina. O ponto principal aqui foi que essa divisão garantiu que as partidas do conjunto de teste não fossem encontradas no conjunto de treinamento, pois isso seria considerado vazamento de dados.

Além disso, o modelo foi ajustado para usar os melhores hiperparâmetros usando grid search, sempre classificando os resultados pela função de perda, neste caso, a função de erro quadrático médio. Abaixo estão os resultados da melhor configuração de modelo no conjunto de teste.

MétricaValor
Erro Absoluto Médio0.024
Erro Quadrático Médio0.00096
Erro médio-0.0021
Desvio-padão do erro0.031
Métricas do conjunto de teste
Valor de perda no treinamento (azul) e no teste (laranja)

Podemos ver acima que a perda de treino diminui muito no início do treino e a perda de teste é bem pequena já no início. À primeira vista, esse gráfico não parecia certo. (1) Este parece ser um exemplo de um modelo que tem uma taxa de aprendizado muito alta: o modelo se ajusta muito aos dados na primeira epoch e depois disso a taxa de aprendizado é tão alta que o modelo não consegue aprender mais nada . (2) Também é estranho, a princípio, que a perda de teste seja muito menor do que a perda de treinamento na primeira epoch.

Em relação a (1), alguns fatores devem ser considerados primeiro: 1. o conjunto de treinamento é muito grande e 2. a perda de teste é calculada após a primeira epoch de treinamento. Se o modelo aprendeu tudo o que pode com os dados da primeira epoch, espera-se que a perda de validação seja muito menor do que a perda de treinamento (lembre-se de que a perda é calculada no final de cada processamento de lote (batch), mesmo quando o modelo é muito “burro”).

Isso levanta a questão: Por que usar essa configuração então? Por que não usar uma taxa de aprendizado mais baixa? A resposta é: porque depois de testar exaustivamente o modelo com várias configurações, aquele que melhor desempenhou teve a configuração escolhida, embora a maioria não tenha tido desempenho muito diferente.

Já em relação a (2), o fato de a perda de teste ser menor que a perda de treinamento em épocas posteriores se deve ao fato de que a regularização foi utilizada no treinamento do modelo. Como você deve saber, a regularização é usada no treinamento, mas não na previsão. Isso é bem explicado por essa thread.

Histograma do conjunto de teste

A distribuição dos erros pode ser claramente vista como normal, como seria de esperar, com a média e o desvio padrão descritos acima. Com esta informação, podemos concluir que aproximadamente 95% dos erros cairão entre -5,2pp e 4,4pp de diferença da verdadeira probabilidade. Este é um resultado muito interessante, especialmente considerando que as casas de apostas e as bolsas de apostas têm em média 2,5pp de diferença entre as suas probabilidades implícitas e podem mesmo apresentar diferenças muito superiores.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *