Prevendo o trem do hype dos videogames – Brincando com o Naïve Bayesian Learning

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Rcrastinate, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

tl; dr

Usando um classificador Naïve Bayesiano e um conjunto de dados de 1515 classificações de videogame, estou prevendo qual desenvolvedor provavelmente fará um jogo com propriedades específicas (metascore, classificação ESRB, gênero, plataforma) no futuro.

Um classificador Naïve Bayes é um método muito simples para prever resultados categoriais. Um aplicativo conhecido é a classificação de texto, prevendo especialmente se um texto é spam. Aqui, o classificador tenta usar as informações sobre a ocorrência de certas palavras para nos informar se uma mensagem de email é spam ou não. Se eu entendo o método corretamente, ele é chamado de “ingênuo” porque faz algumas suposições simplificadas sobre os dados que está classificando, especialmente que todos os eventos (ou valores de um determinado recurso) são independentes um do outro (ou seja, dos valores de outros recursos) . Portanto, negligencia todas as correlações possíveis entre os diferentes recursos. Isso torna o método muito rápido, mesmo quando há muitos recursos usados ​​para previsão.

Obviamente, o método pode ser aplicado a outros dados além de e-mails. Então, eu queria experimentá-lo com o conjunto de dados de videogames que eu investiguei antes. O conjunto de dados está disponível no Kaggle. Ainda tenho que ganhar alguma experiência com a metodologia. Se você tiver alguma sugestão sobre como melhorar essa análise, entre em contato.

eu vou restringir o conjunto de dados para desenvolvedores com pelo menos dez entradas no conjunto de dados original. Note que estes não são necessariamente jogos, porque alguns jogos aparecem mais de uma vez porque existem entradas separadas para as diferentes plataformas (PC, PS4, Switch, …).

library(data.table)
games = 10]),]
# Exclude empty developers
games 
## [1] 1515
length(unique(games$developer))
## [1] 82

Ficamos com 1515 jogos de 82 desenvolvedores.

Leia Também  Todo mundo é mais rico que você?

O classificador Naïve Bayesiano precisa dados categoriais. Quero incluir o metascore na análise, então estou binning isto:

  • Metascore 0 – 60 recebe o rótulo “Aaargh!”.
  • Metascore 61 – 75 recebe o rótulo “Meh”.
  • Metascore 76 – 85 recebe o rótulo “ESTÁ BEM.”.
  • Metascore 86 e acima recebe o rótulo “OMG Hype!”.

Obviamente, o binning pode ter uma grande influência nos resultados. Então, se você quiser tentar por si mesmo, brinque com os pontos de corte.

games$metascore2 
Aaargh!117
meh609
ESTÁ BEM.615
OMG Hype!174

Eu estou usando a função naive_bayes() de {naivebayes} pacote para treinar o modelo em todos os dados. Observe que estou definindo o laplace parâmetro para 1. Estou fazendo isso porque existem combinações vazias de recursos nos dados. Por exemplo, a From Software nunca fez um jogo de esportes (e também, a EA Sports nunca fez um “OMG Hype!” jogos). Portanto, essa parte dos cálculos de probabilidade é 0, o que leva o termo inteiro a 0 após a multiplicação. A correção de Laplace cuida para que haja pelo menos uma probabilidade mínima (nesse caso, é um caso que está sendo adicionado), também para combinações vazias. E quem sabe, talvez a From Software decida fazer um jogo de esportes como o “Dark Souls Golf 2022” ou algo assim.

suppressPackageStartupMessages(library(naivebayes))

nb.model 

Pode entrar nb.model agora para ver as probabilidades das combinações bidirecionais nos dados. Estou poupando-lhe esta mesa extremamente grande aqui. Você também pode fazer plot(nb.model) para obter vários gráficos em estilo mosaico que visualizam as combinações entre os desenvolvedores e todos os preditores.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Agora, para prever novos dados, precisaremos de um quadro de dados com valores para os recursos de previsão. Por exemplo, se quisermos ver qual desenvolvedor é mais provável de produzir um jogo de RPG sensacional e com classificação M para PC, apresentaremos o seguinte new.data quadro de dados.

new.data 

Agora podemos usar esse quadro de dados no predict() função. Essa função (assim como nos modelos lineares) pega o modelo – no nosso caso, o classificador Bayes – e os novos dados.

predict(nb.model, new.data)
## [1] From Software
## 82 Levels: 10tons Arc System Works Arkane Studios Atlus ... Zen Studios

Como você pode ver, o modelo From Software (os criadores da aclamada série Dark Souls) baseado no new.data nós fornecemos. Também podemos obter as probabilidades quando fornecemos o type = "prob" argumento. Isso retorna probabilidades para todos dos desenvolvedores que estão no conjunto de dados. Queremos apenas ver os três primeiros.

pred 

Manipulando new.data, podemos obter previsões para todas as combinações possíveis. Podemos até deixar de fora alguns dos preditores. Mas R nos alertará sobre isso. Por exemplo: quem tem maior probabilidade de fazer um jogo esportivo de boa qualidade?

new.data 
## Warning: predict.naive_bayes(): Only 2 feature(s) out of 4 defined in the naive_bayes object "nb.model" are used for prediction.
dotchart(pred[order(pred[,1], decreasing = T),][1:10])

E realmente muito bom?

new.data 
## Warning: predict.naive_bayes(): Only 2 feature(s) out of 4 defined in the naive_bayes object "nb.model" are used for prediction.
dotchart(pred[order(pred[,1], decreasing = T),][1:10])

É interessante ver como é provável que a EA Sports, Konami e Visual Concepts façam um jogo de esportes. No entanto, é mais provável que a EA Sports faça um com uma meta-pontuação dentro do ESTÁ BEM. bin e Conceitos visuais são mais propensos a fazer um no OMG Hype! bin. A Konami ocupa o segundo lugar em ambas as previsões.

Leia Também  Entendendo a aritmética de incorporação de palavras: Por que não há uma resposta única para "Rei - homem + mulher =?"

Que tal um último teste? Vamos supor que queremos um jogo de estratégia com classificação M realmente bom para PC …

new.data 

OK, Firaxis, vamos lá!

Se você quiser fazer suas próprias previsões, poderá fazer o download do conjunto de dados, executar o código e adaptar o new.data objetar ao seu gosto. Deixe-me saber se você tiver quaisquer perguntas ou comentários.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha seu sabor: e-mail, Twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br