think - O principal evento global de Cloud Híbrida e IA - 11/05 | Américas e 12/05 | APAC e EMEA Inscrição Gratuita

Trade Assistant with Watson

Com contribuições de Micah Forster, Sai Gudimetla e Jeff Powell.

Mesmo com os melhores insights sobre os jogadores e conhecimento de futebol americano, o fantasy football poderá ser um fracasso se a equipe não tiver um bom conjunto de jogadores. A falta de profundidade em determinadas posições não combina bem com a realidade do futebol americano atual: diversas lesões em jogadores importantes, jogos adiados por causa da COVID-19, jogadores abandonando a temporada, transferência das semanas de folga e alteração nas regras para a designação de reservas lesionados. Os managers podem rapidamente descobrir que suas equipes têm um baixo teto de pontuação, mesmo que tenham começado com seus melhores jogadores ativos. A perda da esperança no fantasy football pode afetar rapidamente as decisões futuras, o que é capaz de pôr um fim às suas esperanças nos playoffs.

O Trade Assistant with Watson analisa combinações de jogadores e respectivos dados relacionados para encontrar trocas para sua equipe de maneira objetiva. As equipes têm a oportunidade de aumentar seu potencial de ganhos ao aceitar trocas geradas por inteligência artificial. O fluxo de ativos de jogadores entre equipes é facilitado por uma diversidade de pacotes de troca que equilibram equidade, realismo e valor de maneiras diferentes. As trocas são personalizadas por demanda. Elas consideram a escalação da equipe, as regras da liga e a concorrência.

A tecnologia por trás do Trade Assistant with Watson usa uma combinação de inteligência artificial, técnicas de otimização e uma nuvem híbrida para fornecer rapidamente trocas de alta qualidade. Nesta primeira parte de uma série em três partes, vamos descobrir como.

Arquitetura

O sistema tem componentes de apoio que são executados em modo de lote ou tempo real. Como visto na Figura 1, um processo contínuo em execução no aplicativo Python do mecanismo Trade Assistant calcula previamente as variáveis amplas que estimam uma avaliação justa de mercado para cada jogador de futebol. O aplicativo extrai dados do banco de dados Db2® do Player Insights with Watson e os une às estatísticas do ESPN Fantasy Football. As avaliações resultantes dos jogadores são armazenadas dentro do banco de dados Db2 do Player Insights. Após a conclusão da tarefa, o aplicativo Node.js do Trade Content Generator é chamado por meio de uma solicitação get.

Um thread é iniciado no aplicativo Node.js e extrai dados da avaliação de mercado do jogador que estão no Db2. O aplicativo converte os dados baseados em linha em arquivos JSON e envia o conteúdo ao IBM Cloud® Object Storage, que passa por uma limpeza. O aplicativo monta arquivos específicos do jogador e um arquivo de avaliação geral para otimizar o desempenho do algoritmo. Por exemplo, armazenamos a probabilidade de boom de cada jogador, assim como a chance de bust, a posição ocupada, a classificação da posição, a classificação armazenada, a avaliação, o status de lesão, o status de jogo, o ID da equipe e o ID da equipe adversária para cada semana no arquivo JSON geral. O conteúdo é preenchido em toda a IBM Content Delivery Network e cascateia na ESPN Content Delivery Network. Os aplicativos em tempo real consomem o arquivo de avaliação de mercado ampla como entrada no algoritmo do Trade Assistant.

Arquitetura do sistema Trade Assistant with Watson Figura 1. Arquitetura do sistema Trade Assistant with Watson

Um terceiro aplicativo denominado Algorithm Bench é um aplicativo e serviço Node.js que contém a lógica de otimização principal do Trade Assistant. O Algorithm Bench é usado para testar e desenvolver os algoritmos de inteligência artificial que são usados em dois locais. O código Node.js é empacotado como uma biblioteca e importado para um aplicativo Football Error Analysis Tool (FEAT). O aplicativo baseado na web é entregue por meio de um navegador para que analistas da ESPN e do IBM Trade Assistant possam ensinar ao Watson o que são trocas boas e ruins. O FEAT é escrito na estrutura React que fornece uma arquitetura modular para desenvolver experiências do usuário flexíveis. A análise concluída por meio do FEAT é implementada nas bibliotecas do Algorithm Bench.

O tráfego do consumidor do aplicativo móvel ESPN Fantasy Football solicita trocas do aplicativo Algorithm Bench Fastify que é implementado em 525 PODs Red Hat OpenShift® em três regiões geográficas. Somos capazes de fornecer disponibilidade contínua com três clusters Red Hat OpenShift Kubernetes Service (ROKS) ativos, enquanto mantemos um tempo de resposta de subsegundos. Ultrapassamos nossa meta de fornecer recomendações de troca em menos de cinco segundos, com uma carga máxima de 1.000 solicitações por segundo. Todo o tráfego do consumidor é intermediado pelo Global Traffic Management.

Todos os dados da liga da ESPN de que o Trade Assistant with Watson necessita são passados para o algoritmo por meio de uma solicitação post. As variáveis amplas da avaliação de troca são periodicamente carregadas por um programador na memória de cada um dos 525 PODs por uma solicitação get. O processo solicita os arquivos JSON de avaliação dos jogadores da ESPN Content Delivery Network que foram criados pelo aplicativo Python do Trade Assistant Engine e transferidos por upload para o IBM Cloud Object Storage pelo aplicativo Node.js do Trade Content Generator. O algoritmo que cria as avaliações de mercado dos jogadores considera muitos fatores que são usados pelo sistema geral do Trade Assistant. Vamos descobrir quais.

Algoritmo geral do Trade Assistant

O Trade Assistant with Watson segue nove etapas, mostradas na Figura 2, para produzir trocas que equilibram valor e equidade.

Etapas que geram pacotes de troca Figura 2. As nove etapas que geram pacotes de troca

  1. Os valores amplos de mercado são para os principais jogadores de futebol americano dentro de uma tarefa de lote de execução contínua. Os dados que são produzidos pelo Player Insights with Watson (como as probabilidades desviadas de boom e bust) são unidos a dados da ESPN. Essas informações, juntamente com o Watson Discovery e o Natural Language Understanding, são componentes integrais do valor justo de mercado de um jogador.

  2. Os componentes do custo amplo do jogador são calculados dentro da mesma tarefa que a etapa 1. Por exemplo, as projeções de jogos e as classificações posicionais são extraídas de APIs da ESPN e do banco de dados Db2 do IBM Player Insights with Watson para determinar o custo de oportunidade de uma equipe que perde um jogador.

  3. Em seguida, começamos a criar avaliações de mercado personalizadas dos jogadores ao modificar as avaliações de mercado amplas dos jogadores da etapa 1. As regras da liga, a escalação e a concorrência do manager da equipe no ESPN Fantasy Football contribuem para essa nova estimativa.

  4. No mesmo processo da etapa 3, os custos personalizados do jogador são calculados a partir de estimativas de custo amplas da etapa 2. O custo mensura a perda que uma equipe sofreria se perdesse o jogador de fantasy football em uma troca.

  5. Agora, cada equipe dentro de uma liga é analisada e resumida com base na escalação.

  6. Os resultados da etapa 5 são usados para fazer a correspondência de equipes para a troca com base em uma compensação dos pontos fortes e fracos de cada uma.

  7. Os pacotes de troca são gerados ao maximizar o retorno dos valores dos jogadores e ao minimizar o custo de se desfazer de jogadores dentro de uma troca. O custo máximo que uma equipe pode assumir equivale ao custo máximo que o parceiro de troca poderia sustentar.

  8. Cada pacote de troca é analisado em relação à equidade e ao valor. A métrica de equidade considera o benefício e o realismo de uma troca proposta para ambos os lados. A métrica de valor fornece uma visão egoísta do valor que você receberá independentemente do ponto de vista do oponente.

  9. Vários filtros de análise e regras de negócios são aplicados aos pacotes de troca para equilibrar a qualidade e o volume da troca. As trocas restantes podem ser vistas pelo consumidor dentro dos aplicativos móveis do ESPN Fantasy Football.

Vejamos mais detalhes sobre como as trocas são produzidas.

Avaliação de mercado do jogador

Cada um dos 450 jogadores principais no futebol americano, com base na porcentagem que possuem em todas as ligas (incluindo todos os kickers e defenses), são incluídos para a avaliação de mercado. Todos os jogadores têm um vetor de características que é gerado ao recuperar dados das APIs da ESPN e do Player Insights with Watson.

Depois que os dados da avaliação inicial dos jogadores são recuperados, os vetores de avaliação dos jogadores são atualizados com as proporções de boom e bust para cada jogador. Em seguida, alguns dos jogadores são filtrados caso não tenham uma projeção mínima para o restante da temporada, o que pode significar que um jogador foi afastado por COVID-19 ou outras situações dinâmicas, como adiamentos de jogos.

Em seguida, determinamos estatísticas derivadas sobre cada um dos jogadores. A avaliação de projeção da temporada completa é calculada ao pegar a função de probabilidade cumulativa da distribuição normal de todos os jogadores para a temporada atual.

Nesse ponto, o valor de mercado amplo de um jogador é armazenado no IBM Cloud Object Storage para consumo pelo aplicativo Node.js do Algorithm Bench.

Quando o consumidor solicita uma troca, informações sobre a liga, a escalação e a concorrência do usuário são usadas para personalizar as avaliações amplas dos jogadores. Usamos o conceito de penalidades cruzadas com base em um parceiro de troca. A escalação do parceiro de troca é analisada para o número de jogadores já disponíveis em determinada posição. A importância de uma posição é reduzida quando há mais jogadores nessa posição na escalação. Por meio de experimentação, três grupos de ponderação foram criados em torno de posições diferentes.

A avaliação personalizada final do jogador inclui boosters e penalidades com base nas regras da liga, na composição da escalação e na concorrência. As avaliações personalizadas são usadas em um algoritmo de bin packing de otimização para gerar trocas.

Custos dos jogadores

Cada troca vem com um custo de oportunidade. Em uma troca, as equipes ganham valor por meio dos jogadores recebidos, mas também enviam jogadores a um oponente. Mensuramos o custo que uma equipe terá se a troca for aceita.

Para iniciar o processo de determinar o custo de cada jogador em uma escalação, determinamos a importância de cada posição para a escalação.

Em seguida, precisamos determinar a contribuição de pontuação relativa que se projeta que cada jogador fornecerá para a pontuação geral da equipe. De forma similar, determinamos a contribuição de pontuação geral que um jogador fará para a equipe inteira.

O custo para um jogador é determinado graças à média das métricas de custo. Também personalizamos os custos com base na escalação, nas regras da liga e na concorrência do jogador.

Emparelhamentos de parceiros de troca

Opcionalmente, o Trade Assistant with Watson oferece a capacidade de emparelhar equipes com base em dissimilaridade. Cada equipe emparelhada tem a oportunidade de compensar os pontos fracos uma da outra ao aceitar as recomendações de troca do Watson. Para cada jogador em uma escalação, é criado um vetor de valor com base em posição. Os vetores incluem estatísticas sobre os jogadores e a equipe.

Todos os valores de avaliação são inseridos para determinar o ponto forte de uma posição em uma equipe. Cada um dos pontos fortes é calculado com base em um modelo de aprendizado de máquina.

Agora que conhecemos os pontos fortes, precisamos determinar os pontos fracos das equipes em termos de custo posicional. Cada posição é resumida com base na composição da escalação atual de uma equipe.

O ponto forte e o ponto fraco de uma equipe em determinada posição são concatenados em todas as posições. Um único vetor descreve os pontos fortes e fracos de cada equipe dentro de uma liga, ícone. Uma métrica semelhante é usada para encontrar equipes que sejam mais dissimilares e tenham probabilidade de compensar os pontos fortes e fracos uma da outra. Optamos por usar a medida de similaridade de cosseno.

Equação matemática

Cada equipe do par é classificada em ordem descendente a partir de 90 graus. As primeiras equipes emparelhadas são usadas como parceiras de troca. O número de parceiros de troca é determinado com base na quantidade prática de tempo que um usuário pode esperar por uma sugestão de troca.

Pacotes de troca

Agora, pacotes de troca podem ser gerados depois que o custo do jogador, a avaliação e as equipes forem emparelhados para a troca. Um algoritmo clássico de bin packing de otimização é usado para otimizar o valor da troca, ao mesmo tempo que minimiza o custo da troca sujeito ao custo máximo que um jogador está disposto a arriscar.

Formalmente, executamos um algoritmo para obter os jogadores propostos para uma troca da equipe oposta ao maximizar a avaliação total. Por exemplo, podemos ter itens com custo e valor. O objetivo é maximizar o valor de cada item e, ao mesmo tempo, minimizar o custo. Em formulações clássicas do problema, são mantidos limites para o custo.

O algoritmo de geração do pacote de troca é executado duas vezes e foca cada equipe dentro do par. Os jogadores resultantes para ambos os lados da troca são construídos dentro de um pacote de troca. Cada pacote de troca é mensurado em termos de equidade e valor. A métrica de equidade fornece uma visão egoísta do valor que você receberá independentemente do ponto de vista do oponente. A equidade é uma métrica que considera o benefício e o realismo de uma troca proposta para ambos os lados. As estimativas ajudam os usuários a fazer um trade-off entre “o que tenho a ganhar” em contraste com “essa troca será aceita”.

A seguir, veremos como o Watson foi treinado.

FEAT e medidas objetivas

A página de destino do Football Error Analysis Tool (FEAT) Figura 3. A página de destino do Football Error Analysis Tool

A geração de pacotes de troca tem muitos trade-offs objetivos que devem ser equilibrados por interpretações humanas subjetivas. Como visto na Figura 3, o Football Error Analysis Tool (FEAT) foi usado em cinco sessões de análise de erro para reunir feedback sobre os pacotes de troca gerados. Durante as sessões, tivemos, no mínimo, cinco avaliadores da ESPN e cinco avaliadores da IBM que classificaram cada conjunto dos pacotes de troca atribuídos a eles. Ao classificar os pacotes, cada análise considerou:

  1. Avaliação de paridade ou equidade da troca: Uma comparação entre o ativo de troca de uma equipe dentro de um pacote de troca.
  2. Probabilidade de troca: A probabilidade de que uma troca será aceita pelos managers de ambas as equipes por meio de um modelo de deep learning.
  3. Índice de complexidade: Uma medida que determina quão complexa uma troca geral será para um proprietário a respeito do custo e das avaliações dos jogadores.
  4. Índice de valor: Uma visão egocêntrica geral do valor retornado em uma troca, tanto por um modelo de deep learning como pela diferença na avaliação dos jogadores.
  5. Capacidade de risco: O risco que um proprietário está disposto a assumir. Por exemplo, definimos o risco como o custo máximo que um proprietário assumirá.

Outros fatores que foram considerados ao classificar as trocas incluem previsão de desempenho do jogador, composição da escalação, lesões, próximos jogos, classificação do próximo oponente, posição atual, marca percebida do jogador e tipo de liga.

Durante a avaliação das informações históricas, cada analista precisou minimizar os preconceitos sobre os jogadores, porque já sabemos o desfecho. Por exemplo, na temporada de 2019, um jogador podia ter uma classificação muito alta na semana 1, mas se lesionou na semana 2 e ficou de fora da temporada. Ao avaliar as trocas na semana 1, a lesão conhecida do jogador na semana 2 precisou ser removida da consideração.

Depois que um usuário seleciona uma semana, uma liga e uma equipe, as informações da escalação e os pacotes de troca gerados ficam disponíveis para visualização. Na visualização da escalação, o inventário de jogadores detalhado da equipe pode ser analisado para se obter uma análise da avaliação, do custo e da importância de cada jogador de futebol americano. Com o contexto da escalação e conforme mostrado na Figura 4, a visualização do pacote de troca exibe até três pacotes de troca para diferentes níveis de risco associados a um único parceiro de troca. Os jogadores que serão enviados e recebidos são exibidos juntamente com suas estatísticas gerais. A avaliação e o custo da movimentação dos jogadores fornecem uma análise descritiva da troca.

Uma visualização das recomendações do pacote de troca do FEAT Figura 4. Uma visualização das recomendações do pacote de troca do FEAT

Cada analista classifica cada uma das trocas para ajudar a ensinar o sistema a discernir entre trocas boas e ruins. Cada avaliação inclui uma classificação entre [1,10] pela perspectiva de ambas as equipes. Opcionalmente, um campo de texto livre permite que cada avaliador insira comentários sobre os padrões gerais das trocas.

Ao longo de vários meses, as pontuações totais das trocas oscilaram entre 6 e 7, sendo 10 o melhor. Eliminamos a maioria das classificações inferiores entre [1,3] ao aplicar 14 filtros com base em regras e padrões analíticos. A Figura 5 mostra a distribuição da pontuação antes da aplicação do pós-processamento.

Classificações totais das trocas no FEAT, em que 1 é o pior e 10 é o melhor Figura 5. Classificações totais das trocas no FEAT, em que 1 é o pior e 10 é o melhor

Agora que temos trocas de alta qualidade, precisamos entregá-las ao consumidor rapidamente.

Demanda orientada pelo consumidor

Os usuários de fantasy football podem acessar pacotes de troca sob demanda. A cada nova solicitação do usuário, é gerado um novo pacote de troca que contém um pacote de troca entre cada equipe na liga. Dentro de cada pacote, podemos ter várias recomendações de troca. Somente as melhores recomendações de troca que sobrevivem fornecem uma diversidade de equidade; as opções de troca de valor são mostradas ao usuário. Para manter o interesse do usuário, o algoritmo precisa executar em menos de cinco segundos, com uma carga de 1.000 solicitações por segundo. O algoritmo executa uma pesquisa profunda e tenta emparelhar todas as equipes com uma equipe de destino para a geração dos pacotes de troca. Se a lógica de emparelhamento exceder cinco segundos, o número de pares de equipes será reduzido.

O trade-off entre o volume e a qualidade da recomendação de troca indica o risco que um proprietário de equipe está disposto a assumir. Em geral, aceitamos um risco médio e aplicamos filtros para manter as trocas de maior qualidade. Para alcançar e dar suporte aos requisitos de tempo de execução, o algoritmo foi implementado em três sites do Red Hat OpenShift Kubernetes Service, com um total de 525 PODs. Cada site tem 10 nós trabalhadores, com 16 núcleos e 32 G de memória. Com seis nós de entrada disponíveis por cluster com quatro núcleos e 16 G, o algoritmo do Trade Assistant retorna os resultados profundos de troca em menos de um segundo. O tráfego é distribuído para cada um dos sites com o Global Traffic Management de modo a reduzir os saltos no tráfego de rede.

O tempo de resposta de cada solicitação de usuário é de aproximadamente 200 milissegundos. A Figura 6 mostra uma latência média de 200 milissegundos. Além disso, a maioria das solicitações de troca retorna de três a quatro trocas.

Latência e número médio de trocas do Trade Assistant with Watson Figura 6. Latência e número médio de trocas do Trade Assistant with Watson

Comece a trocar

Vamos fazer uma troca!

Envolva seus colegas e amigos com propostas de troca do Watson que consideram muitos fatores, além de fornecer a você uma variedade de trocas justas e com base em valor. Na melhor das hipóteses, é possível melhorar sua equipe e adquirir confiança como um negociante justo. Na pior, pode se tornar um #shadytrader subjetivo. Aproveite suas trocas instigantes sob demanda. Até a rodada do campeonato!