Análise dos dados de partidas usando a API do site e Python
Crédito: autor Legenda: Sistema London, abertura amada por uns e odiada por outros tantos

Análise dos dados de partidas usando a API do site e Python

Avatar de itteram
| 0

Introdução

A despeito do efeito da série Gambito da Rainha em popularizar o xadrez, a quarentena globalmente imposta já havia contribuído para o aumento no número de usuários online do jogo, conforme mostrado em um artigo escrito pelo fundador do chess.com em novembro. Eu fui um dos milhares que contribuiu para a subida abrupta da curva em março. Na verdade, minha conta já havia sido criada em 2015 quando havia decidido aprender o jogo, que sempre tive curiosidade. Depois de aprender as regras básicas e apanhar seguidas vezes em partidas blitz, acabei desencanando do jogo para focar em me formar e conseguir um estágio. Cinco anos depois e com tempo livre na pandemia, decidi tentar de novo. Tirei a poeira do livro do Bobby Fischer que tinha comprado e nunca aberto e segui para mais uma tentativa. Dessa vez fiquei fascinado e continuo firme na busca pela subida do rating algumas centenas de partidas depois e mais alguns livros comprados.

Ao descobrir recentemente que o chess.com possui um pacote em Python que faz o link com uma API desenvolvida para acesso de alguns dados públicos dos jogos, decidi explorar tais dados e ver o que eles mostram do meu desempenho e onde posso melhorar como jogador.

Sobre os dados

O grande desafio de trabalhar com os dados da API do site é fazer o parsing deles. Isto é, sair de algo medonho como isso:

1*rMxQk2f_lwfHanIXt4559Q.png

                                                                                                                                                                                                 Exemplo de dicionário com os jogos oriundo da API do chess.com

Para algo mais estruturado, como isso:

1*6RqpSFnPSh4Jrx3D7oo0dw.png

Dados da API após parsing e transformados em um dataframe para análise exploratória

Os notebooks utilizados na análise podem ser encontrados no meu github, juntamente com a descrição das dificuldades de se trabalhar com os dados em sua forma bruta. São dois notebooks e o readme do repositório explica como navegar entre eles. Para os entusiastas, o notebook contém parsing dos dados, utilização de regex, criação de um dataframe a partir dos dados brutos, manipulação de dataframe (criação de variáveis e feature engineering básico) e análise exploratória visual básica usando seaborn e matplotlib.

Análise exploratória dos dados

A análise será focada no meu usuário do site para os dados do mês de dezembro de 2020. Eu jogo basicamente dois tipos de jogo: rápidas, de 10 minutos ou 15 minutos + 10 segundos e blitz (grande maioria de 5 minutos). Meu intuito com essa análise é descobrir onde estão meus pontos fracos para trabalhar para melhorá-los. 

Para entender meu desempenho nos tipos de jogos, temos a evolução do rating ao longo do mês para cada um deles:

1*QJKQLS9zIFFV6syco8q6PQ.png
Evolução do rating para partidas rápidas

1*pBeiS5YIKQ5Nrm7GQIj1qQ.png
                                                                                                                                                                                                                                  Evolução do rating para partidas blitz


A comparação dos dois gráficos mostra algo que é bastante comum (na minha experiência) para quem é capivara: uma diferença razoável de rating entre os 2 tipos de jogos. As partidas blitz são bem mais rápidas e é muito comum vitórias e derrotas simplesmente por que o tempo acabou para um dos lados, por exemplo em jogos em que se chega em uma posição fechada e que exige um tempo elevado de análise para fazer os lances. No meu caso específico isso me parece especialmente verdade: eu atingi uma crescente com tendência de estabilização em 1200 de rating nas rápidas mas tenho um desempenho completamente caótico e instável em blitz na faixa de 940 de rating.

Esse gráfico, porém, já é disponibilizado pelo site, em uma versão até mais interativa. O intuito de usar a API é aprofundar mais na análise. O gráfico a seguir tem o desempenho estratificado por cor e por tipo de jogo para as partidas rápidas:

1*GRbwv7RNRxunvVDAjSSVfQ.png

                                                Desempenho nas partidas blitz do usuário itteram no chess.com em dezembro

Chama a atenção o desempenho de pretas em partidas de 10 minutos, em que tenho mais vitórias do que derrotas. Apesar desse desempenho melhor, analisei as aberturas mais jogadas de pretas e o percentual de derrota para cada uma. Fiz isso pois de brancas eu andei experimentando com aberturas diferentes para ver com qual me adaptava melhor. De pretas eu sempre jogo a 1...c5 contra 1.e4 e contra 1.d4, 1...Nf6. O gráfico a seguir mostra o desempenho das aberturas; por exemplo, a abertura que mais joguei de pretas foi o “Indian Game” (a ordem com que as aberturas aparecem no gráfico de cima para baixo reflete a ordem de partidas mais jogadas) conforme esperado, em que perdi apenas 5% das partidas. Em compensação, a abertura “Queen’s Gambit Declined: Marshall Defense” foi a que tive, disparado, o pior desempenho.

1*d5pSGSIcbVat45FOaf1Iow.png
                                                                                                                                                                          Aberturas mais utilizadas nas derrotas com as peças pretas em partidas de 10 minutos e percentual de derrota

Curiosamente as duas aberturas mencionadas são respostas a 1.d4. A diferença é que a que possuo pior desempenho na verdade é uma transposição do Sistema London que surge após as brancas jogarem Bf4 numa posição inicial de Gambito da Dama Recusado:

1*00zJjSYt69d3IN2qYRnF0Q.png

Eu sempre me senti desconfortável jogando nesta posição e tinha uma suspeita de que seria uma das piores aberturas, mas surpreendeu ver a comprovação com os dados de 66% de derrotas no período analisado.

Analisando as partidas de blitz um fato que surpreendeu foi ter mais derrotas de brancas do que de pretas:

1*sCYgQCjICKlMbU-tSPQVPw.png
                                                                                                                                                                                                                     Desempenho nas partidas blitz do usuário itteram em dezembro

Analisando o desempenho das aberturas fica bem claro a necessidade de trabalhar na abertura italiana:

1*sL7xh0kdjsMGusQkBtakHg.png
                                                                                                                                                                                      Aberturas mais utilizadas nas derrotas com as peças pretas em partidas blitz e percentual de derrota


Não é à toa que das 5 aberturas mais jogadas as 4 primeiras são variações da mesma abertura, com percentual alto de derrotas. Se olharmos o top 10 (partidas blitz tem uma massa de dados maior) podemos ver que a quantidade de partidas são similares no geral. Portanto o desempenho de fato precisa ser trabalho para as aberturas do gráfico.

1*kMXHeM3FJ3iYxxtyFWQgSA.png
                                                                                                                                                                                                  Quantidade de partidas blitz jogadas por abertura para o mês de dezembro no chess.com

A API do chess.com fornece informações interessantes para se realizar uma análise exploratória dos dados públicos dos jogos. Um lado negativo do processo gerador dos dados é que partidas de campeonatos que são criados na plataforma não registram a abertura jogada. Há também espaço para melhoria no dataframe criado para incluir outras informações ou criar novas variáveis a partir das existentes. Mas o trabalho apresentado serve de pontapé inicial para eventuais usuários interessados neste tipo de análise.