Acesse mais de 700 laboratórios e cursos

BigQuery Machine Learning aplicado a dados sobre futebol

Laboratório 45 minutos universal_currency_alt 5 créditos show_chart Intermediário
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

GSP851

Logotipo dos laboratórios autoguiados do Google Cloud

Os dados usados neste laboratório são provenientes das seguintes fontes:

  • Pappalardo et al., (2019) A public data set of spatio-temporal match events in soccer competitions (em inglês), Nature Scientific Data 6:236, https://www.nature.com/articles/s41597-019-0247-7
  • Pappalardo et al. (2019) PlayerRank: Data-driven Performance Evaluation and Player Ranking in Soccer via a Machine Learning Approach (em inglês). ACM Transactions on Intelligent Systems and Technologies (TIST), volume 10, edição 5, Artigo nº 59 (setembro de 2019), 27 páginas. DOI: https://doi.org/10.1145/3343172

Objetivos

Neste laboratório, você vai aprender a:

  • Elaborar funções no BigQuery para auxiliar em cálculos realizados com dados de finalizações em partidas de futebol.
  • Criar e avaliar modelos de previsão de “gols esperados” usando o BigQuery ML.
  • Aplicar um modelo de previsão de gols esperados para “novos” dados por meio do BigQuery ML.

Configuração e requisitos

Antes de clicar no botão Começar o Laboratório

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento. No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:

    • O botão Abrir Console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Username"}}}

    Você também encontra o nome de usuário no painel Detalhes do Laboratório.

  4. Clique em Próxima.

  5. Copie a Senha abaixo e cole na caixa de diálogo de Olá.

    {{{user_0.password | "Password"}}}

    Você também encontra a senha no painel Detalhes do Laboratório.

  6. Clique em Próxima.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação e campo de pesquisa

Tarefa 1: abrir o BigQuery

No console do BigQuery, há uma interface para consultar tabelas, inclusive conjuntos de dados públicos oferecidos pelo BigQuery.

  1. No console do Cloud, abra o menu de navegação e selecione BigQuery.

Você verá a caixa de mensagem Olá! Este é o BigQuery no console do Cloud. Esta caixa de mensagem fornece um link para o guia de início rápido e para as notas da versão.

  1. Clique em Concluído.

O console do BigQuery é aberto.

Observação: o processo de criação do conjunto de dados e das tabelas é ensinado no laboratório Ingestão de dados sobre futebol no BigQuery. O objetivo deste laboratório é ensinar como realizar consultas às informações.

Após a criação das tabelas, o resultado será semelhante a:

O painel Análises listando o projeto fixado, que contém o conjunto de dados sobre futebol destacado e suas respectivas tabelas.

Nesta seção, a interface do BigQuery foi usada para acessar o console. O console oferece uma maneira prática de adicionar informações a um conjunto de dados. O BigQuery usa tabelas para representar dados de maneira estruturada.

Na próxima seção, você vai aprender mais sobre a criação de funções no BigQuery.

Tarefa 2: calcular a distância e o ângulo das finalizações

Nesta seção, você vai criar algumas funções definidas pelo usuário no BigQuery que auxiliem nos cálculos da distância e do ângulo das finalizações, ajudando na preparação dos dados de eventos relacionados ao futebol para uso posterior em um modelo de ML.

Calcular a distância da finalização usando coordenadas (x, y)

Para entender a necessidade da função, comece analisando o campo posições na tabela eventos. Esse é um campo repetido que contém um ou mais pares (x, y) por evento.

Segundo a Wyscout, uma empresa líder em dados no setor do futebol que forneceu essas informações, elas representam as posições de origem e, quando aplicável, de destino associadas ao evento, em uma escala de 0 a 100 que indica a porcentagem do campo do ponto de vista da equipe atacante. Confira a captura de tela da tabela abaixo, que mostra as posições associadas a diferentes tipos de eventos em alguns exemplos.

Tabela com 6 colunas: eventName, playerId, subEventName, Id, positions.x e positions.y

O primeiro par de coordenadas (x, y) no campo “posições”, para eventos classificados como finalizações, mostra a posição de origem da finalização no campo.

Observação: calcular a distância de uma finalização de uma determinada posição até o gol envolve considerar o centro do gol (100, 50) como o ponto final de referência, as dimensões médias conhecidas de um campo de futebol (105x68, segundo a Wikipedia, já que não existe um tamanho padrão) e a fórmula de distância bidimensional.
  1. Copie e cole o seguinte código no Editor de consultas:
CREATE FUNCTION `soccer.GetShotDistanceToGoal`(x INT64, y INT64) RETURNS FLOAT64 AS ( /* Transforme distâncias baseadas em coordenadas (x, y) de 0 a 100 em posições absolutas usando as dimensões “médias” do campo como 105x68 antes de aplicar o cálculo de distância 2D */ SQRT( POW((100 - x) * 105/100, 2) + POW((50 - y) * 68/100, 2) ) );

Isso especifica o nome da função, os parâmetros de entrada e seus tipos (2 inteiros), o tipo de saída (um ponto flutuante) e a lógica atual que implementa a fórmula de distância bidimensional com base nas distâncias escaladas das coordenadas x e y.

  1. Clique em Executar.

A seção Resultados da consulta deve exibir a mensagem: Esta instrução criou uma nova função chamada .soccer.GetShotDistanceToGoal.

Clique em “Verificar meu progresso” para conferir o objetivo.

Verificar se a consulta foi executada

Calcular o ângulo da finalização usando coordenadas (x, y)

De modo geral, o processo é semelhante com o do cálculo da distância da finalização, mas voltado para o ângulo. Neste caso, o ângulo calculado é o formado pela posição da finalização e a linha do gol, como mostrado abaixo (crédito da imagem: Ian Dragulet).

Quatro exemplos de ângulos de finalização considerando a posição da finalização e a largura do gol.

Quanto mais próxima ao gol e centralizada a finalização, maior o ângulo, o que está parcialmente relacionado ao cálculo de distância mostrado anteriormente. Os cálculos do ângulo de finalização envolvem o uso das funções trigonométricas do BigQuery aplicadas aos dados (x, y).

  1. No Editor de consultas, clique em “+” (consulta SQL).
  2. Adicione o código apresentado a seguir no Editor de consultas. Isso cria uma função de ângulo de finalização semelhante à função de distância de finalização mostrada acima, com 2 entradas inteiras e um resultado em ponto flutuante, mas com um cálculo trigonométrico mais detalhado usando a Lei dos Cossenos para obter o ângulo em relação ao gol:
CREATE FUNCTION `soccer.GetShotAngleToGoal`(x INT64, y INT64) RETURNS FLOAT64 AS ( SAFE.ACOS( /* É necessário transformar coordenadas (x, y) de 0 a 100 em posições absolutas, usando as dimensões “médias” do campo como 105x68 antes de aplicá-las em várias fórmulas de cálculo de distância */ SAFE_DIVIDE( ( /* Distância ao quadrado entre a finalização e uma das traves, em metros */ (POW(105 - (x * 105/100), 2) + POW(34 + (7.32/2) - (y * 68/100), 2)) + /* Distância ao quadrado entre a finalização e a outra trave, em metros */ (POW(105 - (x * 105/100), 2) + POW(34 - (7.32/2) - (y * 68/100), 2)) - /* Distância ao quadrado entre as traves do gol, em metros */ POW(7.32, 2) ), (2 * /* Distância entre a finalização e uma das traves, em metros */ SQRT(POW(105 - (x * 105/100), 2) + POW(34 + 7.32/2 - (y * 68/100), 2)) * /* Distância entre a finalização e a outra trave, em metros */ SQRT(POW(105 - (x * 105/100), 2) + POW(34 - 7.32/2 - (y * 68/100), 2)) ) ) /* Faça a conversão de radianos para graus */ ) * 180 / ACOS(-1) ) ;
  1. Clique em Executar.
  2. A seção Resultados da consulta deve exibir a mensagem: Esta instrução criou uma nova função chamada .soccer.GetShotAngleToGoal.

Clique em “Verificar meu progresso” para conferir o objetivo Verificar se a consulta foi executada.

Nesta seção, você usou o BigQuery para criar funções que calculam a distância e o ângulo de finalização.

Na próxima seção, você vai aprender como criar um modelo para calcular gols esperados usando a distância e o ângulo de cada finalização.

Tarefa 3: criar modelos de previsão de gols esperados usando o BigQuery ML

Nesta seção, você vai usar o BigQuery ML para criar e executar modelos de machine learning no BigQuery usando consultas SQL padrão. Nesse caso, você vai criar modelos de previsão de gols esperados com os dados de eventos relacionados ao futebol para prever a probabilidade de uma finalização resultar em gol, considerando o tipo, a distância e o ângulo, que são fatores reconhecidos como bons preditores da probabilidade de gol, como mostrado no laboratório Insight analítico de dados sobre futebol com o BigQuery.

Os modelos de previsão de gols esperados são usados com frequência em análises sobre futebol para avaliar a qualidade das finalizações e a capacidade de finalização ou de defesa, considerando o nível delas. Eles têm várias aplicações na análise retrospectiva de partidas e na criação de projeções.

Como ajustar um modelo de regressão logística para gols esperados

Primeiro, você vai ajustar um modelo de regressão logística usando os dados.

  1. No Editor de consultas, clique em “+” (consulta SQL).
  2. Adicione o código apresentado a seguir no Editor de consultas.
CREATE MODEL `soccer.xg_logistic_reg_model` OPTIONS( model_type = 'LOGISTIC_REG', input_label_cols = ['isGoal'] ) AS SELECT Events.subEventName AS shotType, /* 101 é uma tag conhecida para “gols” na tabela de gols */ (101 IN UNNEST(Events.tags.id)) AS isGoal, `soccer.GetShotDistanceToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotDistance, `soccer.GetShotAngleToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotAngle FROM `soccer.events` Events LEFT JOIN `soccer.matches` Matches ON Events.matchId = Matches.wyId LEFT JOIN `soccer.competitions` Competitions ON Matches.competitionId = Competitions.wyId WHERE /* Exclua as partidas da Copa do Mundo ao ajustar o modelo */ Competitions.name != 'World Cup' AND /* Inclua finalizações provenientes de jogadas normais e de bolas paradas, abrangendo também os pênaltis */ ( eventName = 'Shot' OR (eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty')) ) ;

A seção superior contém o código para gerar o modelo, especificando o tipo de modelo e o rótulo da variável de resultado. A instrução SELECT cria a variável de resultado isGoal com os recursos de interesse dos dados de eventos, incluindo a distância e o ângulo das finalizações calculados usando as funções criadas na etapa anterior. A operação “mesclar” permite relacionar cada finalização à competição correspondente, sendo essa informação usada para excluir os dados da Copa do Mundo do modelo para que sejam aproveitados posteriormente, após o modelo ser ajustado.

  1. Clique em Executar.

A seção Resultados da consulta deve exibir a mensagem: Esta instrução vai criar um novo modelo chamado :soccer.xg_logistic_reg_model. Concluir este processo pode levar algumas horas, dependendo do tipo de modelo. Neste caso, deve demorar apenas um ou dois minutos para ser concluído.

  1. Após o término do treinamento do modelo, localize a notificação “Consulta concluída” na seção Resultados da consulta e clique em Acessar modelo, que fica à direita da mensagem referente à criação do modelo.

Uma nova guia será aberta, mostrando informações sobre o modelo que foi treinado.

  1. Clique na guia Avaliação e confira as métricas, principalmente “Log Perda” e “AUC da ROC” em Métricas agregadas.
Observação: devido à ordem aleatória inerente ao procedimento de ajuste do modelo, os resultados podem apresentar pequenas variações.

Página com a guia Avaliação exibindo dados para “Métricas agregadas”, “Limite de pontuação” e três gráficos que analisam esses dados

Clique em “Verificar meu progresso” para conferir o objetivo.

Verificar se a consulta foi executada

Como o interesse principal está na precisão das probabilidades de gol fornecidas pelo modelo (e não na acurácia em termos de prever 0s e 1s em um determinado limite), Log Perda e AUC da ROC são boas métricas para se concentrar. Esses números têm maior utilidade na comparação de modelos distintos, que será abordada mais adiante.

Como entender o ajuste do modelo de regressão logística

Agora que você ajustou o modelo de regressão logística, pode usar a funcionalidade de pesos do BigQuery ML para conferir os coeficientes do modelo para cada preditor.

  1. No EDITOR de consultas, clique em “+” (consulta SQL).

  2. Copie e cole o seguinte código no EDITOR de consultas: Aqui, fazemos uma chamada à função ML.WEIGHTS para consultar o modelo de regressão logística que você treinou na etapa anterior:

SELECT * FROM ML.WEIGHTS(MODEL soccer.xg_logistic_reg_model) ;
  1. Clique em Executar. Os resultados são exibidos abaixo da janela de consulta.

Os resultados da consulta na página com a guia Resultados.

Para cada entrada, existem pesos: um único valor numérico para os atributos de valores contínuos e um valor por categoria para os atributos categóricos, equivalentes aos coeficientes de um modelo de regressão logística. Em alguns casos, interpretar diretamente os coeficientes do modelo de regressão logística é arriscado, devido à correlação existente entre os preditores, entre outras razões.

Pelo menos, os sinais desses parecem fazer sentido de acordo com o conhecimento geral sobre o futebol:

  • Os pênaltis têm uma probabilidade de acerto muito maior do que outros tipos de finalização
  • Quanto mais distante a finalização, menor a probabilidade de acerto
  • Quanto maior o ângulo da finalização em relação ao gol, maior a probabilidade de acerto

Observar esses resultados pode transmitir alguma segurança de que o modelo está funcionando de forma lógica.

Criar um modelo de árvore otimizada para gols esperados

Em seguida, você vai ajustar um modelo de árvore otimizada para os dados usando a implementação do XGBoost no BigQuery ML e comparar os resultados com o modelo de regressão logística ajustado anteriormente. Na teoria, as árvores otimizadas podem ser mais precisas devido à capacidade de considerar tanto relações não lineares entre os atributos e o resultado quanto interações entre os atributos.

  1. No Editor de consultas, clique em “+” (consulta SQL).
  2. Copie e cole o seguinte código no Editor de consultas:
CREATE MODEL `soccer.xg_boosted_tree_model` OPTIONS( model_type = 'BOOSTED_TREE_CLASSIFIER', input_label_cols = ['isGoal'] ) AS SELECT Events.subEventName AS shotType, /* 101 é uma tag conhecida para “gols” na tabela de gols */ (101 IN UNNEST(Events.tags.id)) AS isGoal, `soccer.GetShotDistanceToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotDistance, `soccer.GetShotAngleToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotAngle FROM `soccer.events` Events LEFT JOIN `soccer.matches` Matches ON Events.matchId = Matches.wyId LEFT JOIN `soccer.competitions` Competitions ON Matches.competitionId = Competitions.wyId WHERE /* Exclua as partidas da Copa do Mundo ao ajustar o modelo */ Competitions.name != 'World Cup' AND /* Inclua finalizações provenientes de jogadas normais e de bolas paradas, abrangendo também os pênaltis */ ( eventName = 'Shot' OR (eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty')) ) ;

A instrução SQL é idêntica à usada para ajustar a regressão logística acima, exceto pelas alterações no tipo de modelo para escolher um classificador de árvore otimizada e no nome do objeto do modelo criado.

  1. Clique em Executar. A seção Resultados da consulta deve exibir a mensagem: Esta instrução vai criar um novo modelo chamado :soccer.xg_boosted_tree_model. Concluir este processo pode levar algumas horas, dependendo do tipo de modelo. Neste caso, deve demorar alguns minutos para ser concluído.
Observação: o treinamento do modelo pode levar de 15 a 20 minutos para ser concluído.

Enquanto espera, dê uma olhada nesta visão geral do BigQuery ML.

BigQuery ML: machine learning com SQL padrão

Depois que o modelo for treinado, verifique se a etapa foi concluída com sucesso.
  1. Após o término do treinamento do modelo, localize a notificação “Consulta concluída” na seção Resultados da consulta.
  2. Clique em Acessar modelo, que fica à direita da mensagem referente à criação do modelo.

Uma nova guia será aberta, mostrando informações sobre o modelo que foi treinado.

  1. Clique na guia Avaliação e confira as métricas, principalmente “Log Perda” e “AUC da ROC” em Métricas agregadas.
Observação: devido à ordem aleatória inerente ao procedimento de ajuste do modelo, os resultados podem apresentar pequenas variações.

Página com a guia Avaliação e os tipos de dados “Log Perda” e “AUC da ROC” em “Métricas agregadas” destacados

O Log Perda e a AUC da ROC do modelo de árvore otimizada são bem semelhantes aos do modelo de regressão logística, mas apresentam desempenho ligeiramente pior (com Log Perda superior e AUC da ROC inferior).

Clique em “Verificar meu progresso” para conferir o objetivo.

Verificar se a consulta foi executada

Nesta seção, o BigQuery foi usado para ajustar modelos de machine learning com base em dados sobre futebol. Um modelo de previsão de gols esperados pode ser criado de diversas maneiras.

Na próxima seção, você vai aprender como aplicar um modelo de previsão de gols esperados a novos dados usando o BigQuery ML.

Tarefa 4: aplicar um modelo de previsão de gols esperados para novos dados

Depois de ajustar um modelo de previsão de gols esperados com acurácia e explicabilidade adequadas, é possível aplicá-lo a dados “novos”, que, neste caso, consistem em informações sobre a Copa do Mundo de 2018, que foi excluída do treinamento do modelo.

O modelo de regressão logística criado na etapa anterior vai ser usado para avaliar a dificuldade de cada finalização na competição, possibilitando a identificação dos gols mais “impressionantes” do campeonato.

Conferir as probabilidades de todas as finalizações da Copa do Mundo de 2018

Você pode usar a funcionalidade de previsão do BigQuery ML com o modelo de regressão logística ajustado na etapa anterior, ou até mesmo o modelo de árvore otimizada, se preferir, para verificar a probabilidade de cada finalização resultar em gol na Copa do Mundo.

  1. No Editor de consultas, clique em “+” (consulta SQL).
  2. Copie e cole o seguinte código no Editor de consultas:
SELECT * FROM ML.PREDICT( MODEL `soccer.xg_logistic_reg_model`, ( SELECT Events.subEventName AS shotType, /* 101 é uma tag conhecida para “gols” na tabela de gols */ (101 IN UNNEST(Events.tags.id)) AS isGoal, `soccer.GetShotDistanceToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotDistance, `soccer.GetShotAngleToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotAngle FROM `soccer.events` Events LEFT JOIN `soccer.matches` Matches ON Events.matchId = Matches.wyId LEFT JOIN `soccer.competitions` Competitions ON Matches.competitionId = Competitions.wyId WHERE /* Exclua as partidas da Copa do Mundo ao ajustar o modelo */ Competitions.name = 'World Cup' AND /* Inclua finalizações provenientes de jogadas normais e de bolas paradas, abrangendo também os pênaltis */ ( eventName = 'Shot' OR (eventName = 'Free Kick' AND subEventName IN ('Free kick shot', 'Penalty')) ) ) )

Isso chama a função ML.PREDICT no modelo de regressão logística que foi ajustado anteriormente.

A instrução SELECT cria os mesmos campos em todas as finalizações dos dados de eventos que foram usados para ajustar o modelo, mas desta vez filtra apenas as partidas da Copa do Mundo (em vez de excluí-las), já que são nessas finalizações que o modelo será aplicado.

  1. Clique em Executar. Os resultados são exibidos abaixo da janela de consulta.

Página com a guia Resultados mostrando cinco linhas de resultados da consulta.

A saída mostra alguns campos relacionados à previsão, além dos campos originais nos dados de tipo de finalização, distância, ângulo e probabilidade de finalização bem-sucedida:

  • predicted_isGoal, uma previsão binária indicando se a finalização resultaria em gol ou não
  • predicted_isGoal_probs, uma matriz de pares (rótulo, probabilidade) que mostra a probabilidade de cada finalização ser bem-sucedida ou não, segundo o modelo

Identificar os gols mais improváveis usando as probabilidades do modelo

Dando continuidade à seção anterior, que gerou probabilidades para todas as finalizações da Copa do Mundo de 2018, use o BigQuery para extrair a probabilidade de cada gol e, em seguida, ordene do menor para o maior valor, a fim de visualizar os gols mais improváveis marcados na Copa do Mundo com base nos fatores do modelo.

Teoricamente, isso deve gerar uma lista de alguns dos gols mais impressionantes do campeonato, pelo menos com base nos fatores considerados pelo modelo (distância, ângulo etc.).

  1. No Editor de consultas, clique em “+” (consulta SQL).
  2. Adicione o código apresentado a seguir no Editor de consultas:
SELECT predicted_isGoal_probs[ORDINAL(1)].prob AS predictedGoalProb, * EXCEPT (predicted_isGoal, predicted_isGoal_probs), FROM ML.PREDICT( MODEL `soccer.xg_logistic_reg_model`, ( SELECT Events.playerId, (Players.firstName || ' ' || Players.lastName) AS playerName, Teams.name AS teamName, CAST(Matches.dateutc AS DATE) AS matchDate, Matches.label AS match, /* Transformar o período da partida e os segundos do evento no minuto correspondente da partida */ CAST((CASE WHEN Events.matchPeriod = '1H' THEN 0 WHEN Events.matchPeriod = '2H' THEN 45 WHEN Events.matchPeriod = 'E1' THEN 90 WHEN Events.matchPeriod = 'E2' THEN 105 ELSE 120 END) + CEILING(Events.eventSec / 60) AS INT64) AS matchMinute, Events.subEventName AS shotType, /* 101 é uma tag conhecida para “gols” na tabela de gols */ (101 IN UNNEST(Events.tags.id)) AS isGoal, `soccer.GetShotDistanceToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotDistance, `soccer.GetShotAngleToGoal`(Events.positions[ORDINAL(1)].x, Events.positions[ORDINAL(1)].y) AS shotAngle FROM `soccer.events` Events LEFT JOIN `soccer.matches` Matches ON Events.matchId = Matches.wyId LEFT JOIN `soccer.competitions` Competitions ON Matches.competitionId = Competitions.wyId LEFT JOIN `soccer.players` Players ON Events.playerId = Players.wyId LEFT JOIN `soccer.teams` Teams ON Events.teamId = Teams.wyId WHERE /* Exclua as partidas da Copa do Mundo ao ajustar o modelo */ Competitions.name = 'World Cup' AND /* Inclua finalizações provenientes de jogadas normais e de bolas paradas, abrangendo também os pênaltis */ ( eventName = 'Shot' OR (eventName = 'Free Kick' AND subEventName IN ('Free kick shot')) ) AND /* Filtre somente os gols marcados */ (101 IN UNNEST(Events.tags.id)) ) ) ORDER BY predictedgoalProb

Isso se baseia na chamada de função ML.PREDICT da seção anterior, filtrando apenas as finalizações que resultaram em gol (excluindo pênaltis, já que o objetivo é identificar os gols mais “impressionantes”), extraindo apenas a probabilidade de um gol ser marcado com base nas previsões e ordenando por esse valor.

Alguns campos são adicionados na instrução SELECT usando os dados de eventos e de outras tabelas que podem ser mescladas a ela para obter informações adicionais sobre cada gol, como o jogador e o time que marcaram, a data e as informações da partida, e o minuto em que o gol foi marcado.

  1. Clique em Executar. Os resultados são exibidos abaixo da janela de consulta.

Clique em “Verificar meu progresso” para conferir o objetivo.

Verificar se a consulta foi executada

As primeiras linhas mostram os gols da Copa do Mundo de 2018 que o modelo considerou como tendo a menor probabilidade de acontecer, pois, todos contam com finalizações de longa distância (aproximadamente 30 metros) e ângulos relativamente fechados (entre 10° e 15°).

Para uma validação visual, você pode assistir ao gol de Antoine Griezmann que conquistou o primeiro lugar nesta lista. Vale destacar que foi mais um gol improvável do que impressionante, dado o posicionamento do goleiro.

Para conferir um gol mais espetacular, que condiz com o que esta análise busca identificar, assista à incrível finalização de Son Heung-min, da Coreia do Sul, em um jogo contra o México, que conquistou o segundo lugar nos resultados.

Na próxima seção, você terá a oportunidade de testar o que aprendeu nesta introdução ao BigQuery ML.

Teste rápido

Coloque à prova seu conhecimento sobre o BigQuery ao responder o breve teste sobre os tópicos abordados neste laboratório.

Parabéns!

Você criou modelos de machine learning com dados sobre futebol. Você criou funções definidas pelo usuário no BigQuery para calcular a distância e o ângulo das finalizações, depois usou o BigQuery ML para criar um modelo de previsão de gols esperados e aplicou a funcionalidade de previsão do BigQuery ML em “novos” dados da Copa do Mundo de 2018 para identificar alguns dos gols mais impressionantes do campeonato.

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 30 de janeiro de 2025

Laboratório testado em 30 de janeiro de 2025

Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.