Estrelas realinhadas: melhorando o sistema de classificação do IMDb
Publicados: 2022-03-11Os observadores de filmes às vezes usam classificações para selecionar o que assistir. Depois de fazer isso, notei que muitos dos filmes mais bem classificados pertenciam ao mesmo gênero: drama. Isso me fez pensar que o ranking poderia ter algum tipo de viés de gênero.
Eu estava em um dos sites mais populares para os amantes do cinema, o IMDb, que cobre filmes de todo o mundo e de qualquer ano. Seu famoso ranking é baseado em uma enorme coleção de comentários. Para essa análise de dados do IMDb, decidi baixar todas as informações disponíveis lá para analisá-las e tentar criar um ranking novo e refinado que considerasse uma gama mais ampla de critérios.
O sistema de classificação do IMDb: filtrando os dados do IMDb
Consegui baixar informações sobre 242.528 filmes lançados entre 1970 e 2019 inclusive. As informações que o IMDb me deu para cada um foram: Rank
, Title
, ID
, Year
, Certificate
, Rating
, Votes
, Metascore
, Synopsis
, Runtime
, Genre
, Gross
e SearchYear
.
Para ter informações suficientes para analisar, eu precisava de um número mínimo de resenhas por filme, então a primeira coisa que fiz foi filtrar filmes com menos de 500 resenhas. Isso resultou em um conjunto de 33.296 filmes, e na tabela a seguir, podemos ver uma análise resumida de seus campos:
Campo | Tipo | Contagem Nula | Quer dizer | Mediana |
---|---|---|---|---|
Classificação | Fator | 0 | ||
Título | Fator | 0 | ||
identificação | Fator | 0 | ||
Ano | Int | 0 | 2003 | 2006 |
Certificado | Fator | 17587 | ||
Avaliação | Int | 0 | 6.1 | 6.3 |
Votos | Int | 0 | 21040 | 2017 |
Metascore | Int | 22350 | 55,3 | 56 |
Sinopse | Fator | 0 | ||
Tempo de execução | Int | 132 | 104,9 | 100 |
Gênero | Fator | 0 | ||
Bruto | Fator | 21415 | ||
PesquisaAno | Int | 0 | 2003 | 2006 |
Nota: Em R, Factor
refere-se a strings. Rank
e Gross
são assim no conjunto de dados original do IMDb devido a ter, por exemplo, milhares de separadores.
Antes de começar a refinar a pontuação, tive que analisar melhor esse conjunto de dados. Para começar, os campos Certificate
, Metascore
e Gross
tinham mais de 50% de valores nulos, então não são úteis. O Rank depende intrinsecamente do Rating (a variável a ser refinada), portanto, não contém nenhuma informação útil. O mesmo acontece com o ID
, pois é um identificador exclusivo para cada filme.
Finalmente, Title
e Synopsis
são campos de texto curto. Poderia ser possível usá-los através de alguma técnica de PNL, mas por ser uma quantidade limitada de texto, decidi não levá-los em consideração para esta tarefa.
Após esse primeiro filtro, fiquei com Genre
, Rating
, Year
, Votes
, SearchYear
e Runtime
. No campo Genre
, houve mais de um gênero por filme, separados por vírgulas. Então, para capturar o efeito aditivo de ter muitos gêneros, eu o transformei usando a codificação one-hot. Isso resultou em 22 novos campos booleanos — um para cada gênero — com valor 1 se o filme tivesse esse gênero ou 0 caso contrário.
Análise de dados do IMDb
Para ver as correlações entre as variáveis, calculei a matriz de correlação.
Aqui, um valor próximo a 1 representa uma forte correlação positiva e valores próximos a -1 uma forte correlação negativa. Por este gráfico, fiz muitas observações:
-
Year
eSearchYear
são absolutamente correlacionados. Isso significa que eles provavelmente têm os mesmos valores e que ter os dois é o mesmo que ter apenas um, então eu mantive apenasYear
. - Alguns campos esperavam correlações positivas, como:
-
Music
comMusical
-
Action
comAdventure
-
Animation
comAdventure
-
- O mesmo para correlações negativas:
-
Drama
vs.Horror
-
Comedy
xHorror
-
Horror
vs.Romance
-
- Relacionado à variável chave (
Rating
) notei:- Tem uma correlação positiva e importante com
Runtime
eDrama
. - Tem menor correlação com
Votes
,Biography
eHistory
. - Tem uma correlação consideravelmente negativa com
Horror
e uma negativa mais baixa comThriller
,Action
,Sci-Fi
eYear
. - Não tem outras correlações significativas.
- Tem uma correlação positiva e importante com
Parecia que dramas longos eram bem avaliados, enquanto filmes de terror curtos não eram. Na minha opinião – eu não tinha os dados para verificar – não se correlacionava com o tipo de filme que gera mais lucros, como os filmes da Marvel ou da Pixar.
Pode ser que as pessoas que votam neste site não sejam o melhor representante do critério geral de pessoas. Faz sentido porque aqueles que dedicam tempo para enviar resenhas no site provavelmente são algum tipo de crítico de cinema com um critério mais específico. De qualquer forma, meu objetivo era remover o efeito de recursos comuns de filmes, então tentei remover esse viés no processo.
Distribuição de gênero no sistema de classificação do IMDb
O próximo passo foi analisar a distribuição de cada gênero ao longo da classificação. Para fazer isso, criei um novo campo chamado Principal_Genre
baseado no primeiro gênero que apareceu no campo Genre
original. Para visualizar isso, fiz um gráfico de violino.
Mais uma vez, pude ver que Drama
se correlaciona com classificações altas e Horror
com baixas. No entanto, este gráfico também revelou outros gêneros com boas pontuações: Biography
e Animation
. O fato de suas correlações não aparecerem na matriz anterior foi provavelmente porque havia poucos filmes com esses gêneros. Então, em seguida, criei um gráfico de barra de frequência por gênero.
Efetivamente, Biography
e Animation
tiveram pouquíssimos filmes, assim como Sport
e Adult
. Por esta razão, eles não estão muito bem correlacionados com Rating
.
Outras variáveis no sistema de classificação do IMDb
Depois disso, comecei a analisar as covariáveis contínuas: Year
, Votes
e Runtime
. No gráfico de dispersão, você pode ver a relação entre Rating
e Year
.
Como vimos anteriormente, Year
parecia ter uma correlação negativa com Rating
: À medida que o ano aumenta, a variação de classificação também aumenta, atingindo valores mais negativos em filmes mais recentes.
Em seguida, fiz o mesmo gráfico para Votes
.
Aqui, a correlação era mais clara: quanto maior o número de votos, maior a classificação. No entanto, a maioria dos filmes não teve tantos votos e, neste caso, Rating
teve uma variação maior.
Por fim, analisei o relacionamento com o Runtime
.
Novamente, temos um padrão semelhante, mas ainda mais forte: tempos de execução mais altos significam classificações mais altas, mas havia muito poucos casos de tempos de execução altos.
Refinamentos do sistema de classificação do IMDb
Depois de toda essa análise, tive uma ideia melhor dos dados com os quais estava lidando, então decidi testar alguns modelos para prever as classificações com base nesses campos. Minha ideia era que a diferença entre minhas melhores previsões de modelo e a Rating
real removeria a influência dos recursos comuns e refletiria as características particulares que tornam um filme melhor do que outros.
Comecei com o modelo mais simples, o linear. Para avaliar qual modelo teve melhor desempenho, observei os erros quadrático médio (RMSE) e absoluto médio (MAE). São medidas padrão para esse tipo de tarefa. Além disso, eles estão na mesma escala que a variável prevista, por isso são fáceis de interpretar.
Neste primeiro modelo, o RMSE foi de 1,03 e o MAE de 0,78. Mas os modelos lineares supõem independência sobre os erros, mediana de zero e variância constante. Se isso estiver correto, o gráfico “valores residuais vs. previstos” deve se parecer com uma nuvem sem estrutura. Então decidi fazer um gráfico para corroborar isso.
Pude ver que até 7 nos valores previstos, tinha uma forma não estruturada, mas após esse valor, tem uma forma de descida linear clara. Consequentemente, as suposições do modelo eram ruins, e também tive um “estouro” nos valores previstos porque, na realidade, o Rating
não pode ser superior a 10.
Na análise de dados anterior do IMDb, com maior quantidade de Votes
, o Rating
melhorou; no entanto, isso aconteceu em alguns casos e por uma enorme quantidade de votos. Isso pode causar distorções no modelo e produzir esse estouro de Rating
. Para verificar isso, avaliei o que aconteceria com esse mesmo modelo, removendo o campo Votes
.

Isso foi muito melhor! Ele tinha uma forma mais clara, não estruturada, sem valores previstos de estouro. O campo Votes
também depende da atividade do revisor e não é uma característica dos filmes, então decidi abandonar esse campo também. Os erros após removê-lo foram 1,06 no RMSE e 0,81 no MAE - um pouco pior, mas não tanto, e eu preferia ter melhores suposições e seleção de recursos do que um desempenho um pouco melhor no meu conjunto de treinamento.
Análise de dados do IMDb: como funcionam outros modelos?
A próxima coisa que fiz foi tentar modelos diferentes para analisar qual teve melhor desempenho. Para cada modelo, usei a técnica de busca aleatória para otimizar os valores dos hiperparâmetros e validação cruzada de 5 vezes para evitar o viés do modelo. Na tabela a seguir estão os erros estimados obtidos:
Modelo | RMSE | MAE |
---|---|---|
Rede neural | 1.044596 | 0,795699 |
Impulsionando | 1.046639 | 0,7971921 |
Árvore de inferência | 1,05704 | 0,8054783 |
GAM | 1.0615108 | 0,8119555 |
Modelo linear | 1.066539 | 0,8152524 |
Reg Linear Penalizada | 1.066607 | 0,8153331 |
KNN | 1.066714 | 0,8123369 |
Cordilheira Bayesiana | 1,068995 | 0,8148692 |
SVM | 1.073491 | 0,8092725 |
Como você pode ver, todos os modelos têm desempenho semelhante, então usei alguns deles para analisar um pouco mais de dados. Eu queria saber a influência de cada campo sobre a classificação. A maneira mais simples de fazer isso é observando os parâmetros do modelo linear. Mas para evitar distorções neles anteriormente, eu dimensionei os dados e depois treinei novamente o modelo linear. Os pesos foram como na foto aqui.
Neste gráfico, fica claro que duas das variáveis mais importantes são Horror
e Drama
, onde a primeira tem um impacto negativo na classificação e a segunda positiva. Há também outros campos que impactam positivamente – como Animation
e Biography
– enquanto Action
, Sci-Fi
e Year
impactam negativamente. Além disso, Principal_Genre
não tem um impacto considerável, então é mais importante quais gêneros um filme possui do que qual é o principal.
Com o modelo aditivo generalizado (GAM), pude ver também um impacto mais detalhado para as variáveis contínuas, que neste caso foi o Year
.
Aqui temos algo mais interessante. Embora fosse verdade que, para filmes recentes, a classificação tendia a ser mais baixa, o efeito não era constante. Ele tem o valor mais baixo em 2010 e, em seguida, parece “recuperar”. Seria intrigante descobrir o que aconteceu depois daquele ano na produção cinematográfica que poderia ter produzido essa mudança.
O melhor modelo foram as redes neurais, que apresentaram os menores RMSE e MAE, mas como você pode ver, nenhum modelo atingiu o desempenho perfeito. Mas isso não era uma má notícia em termos do meu objetivo. A informação disponível permite-me estimar um pouco bem o desempenho, mas não é suficiente. Há algumas outras informações que não consegui do IMDb que estão fazendo com que o Rating
seja diferente da pontuação esperada com base em Genre
, Runtime
e Year
. Pode ser a atuação do ator, roteiros de filmes, fotografia ou muitas outras coisas.
Do meu ponto de vista, essas outras características são o que realmente importa na escolha do que assistir. Não me importo se um determinado filme é um drama, ação ou ficção científica. Quero que tenha algo especial, algo que me faça divertir, me faça aprender alguma coisa, me faça refletir sobre a realidade, ou apenas me entretenha.
Então, criei uma classificação nova e refinada pegando a classificação do IMDb e subtraindo a classificação prevista do melhor modelo. Ao fazer isso, eu estava removendo o efeito de Genre
, Runtime
e Year
e mantendo essas outras informações desconhecidas que são muito mais importantes para mim.
Alternativa ao sistema de classificação do IMDb: os resultados finais
Vamos ver agora quais são os 10 melhores filmes pela minha nova classificação vs. pela classificação real do IMDb:
IMDb
Título | Gênero | Classificação IMDb | Classificação refinada |
---|---|---|---|
Ko para tamo peva | Aventura, Comédia, Drama | 8,9 | 1,90 |
Dipu Número 2 | Aventura, Família | 8,9 | 3.14 |
El señor de los anillos: El retorno do rei | Aventura, Drama, Fantasia | 8,9 | 2,67 |
El señor de los anillos: La comunidad del anillo | Aventura, Drama, Fantasia | 8,8 | 2,55 |
Anbe Sivam | Aventura, Comédia, Drama | 8,8 | 2,38 |
Hababam Sinifi Tatilde | Aventura, Comédia, Drama | 8,7 | 1,66 |
El señor de los anillos: Las dos torres | Aventura, Drama, Fantasia | 8,7 | 2,46 |
Chamada de Mudras | Aventura, Drama, Romance | 8,7 | 2,34 |
Interesse | Aventura, Drama, Ficção Científica | 8.6 | 2,83 |
Voltar ao futuro | Aventura, Comédia, Ficção Científica | 8,5 | 2,32 |
Minha
Título | Gênero | Classificação IMDb | Classificação refinada |
---|---|---|---|
Dipu Número 2 | Aventura, Família | 8,9 | 3.14 |
Interesse | Aventura, Drama, Ficção Científica | 8.6 | 2,83 |
El señor de los anillos: El retorno do rei | Aventura, Drama, Fantasia | 8,9 | 2,67 |
El señor de los anillos: La comunidad del anillo | Aventura, Drama, Fantasia | 8,8 | 2,55 |
Kolah ghermezi vai pesar khale | Aventura, Comédia, Família | 8.1 | 2,49 |
El señor de los anillos: Las dos torres | Aventura, Drama, Fantasia | 8,7 | 2,46 |
Anbe Sivam | Aventura, Comédia, Drama | 8,8 | 2,38 |
Los caballeros de la mesa cuadrada | Aventura, Comédia, Fantasia | 8.2 | 2,35 |
Chamada de Mudras | Aventura, Drama, Romance | 8,7 | 2,34 |
Voltar ao futuro | Aventura, Comédia, Ficção Científica | 8,5 | 2,32 |
Como você pode ver, o pódio não mudou radicalmente. Isso era esperado porque o RMSE não era tão alto, e aqui estamos vendo o topo. Vamos ver o que aconteceu com os 10 piores:
IMDb
Título | Gênero | Classificação IMDb | Classificação refinada |
---|---|---|---|
Holnap tortent - A nagy bulvarfilm | Comédia, Mistério | 1 | -4,86 |
Cumali Ceber: Allah Seni Alsin | Comédia | 1 | -4,57 |
Badang | Comédia, Fantasia | 1 | -4,74 |
Aaaaaaaaa!!! Kosmiczna nominacja | Comédia | 1.1 | -4,52 |
Americano orgulhoso | Drama | 1.1 | -5,49 |
Casacos Marrons: Guerra da Independência | Ação, Ficção Científica, Guerra | 1.1 | -3,71 |
O fim de semana que vive | Comédia, Terror, Mistério | 1.2 | -4,53 |
Bolívar: o herói | Animação, Biografia | 1.2 | -5,34 |
A Ascensão do Morcego Negro | Ação, Ficção Científica | 1.2 | -3,65 |
Hatsukoi | Drama | 1.2 | -5,38 |
Minha
Título | Gênero | Classificação IMDb | Classificação refinada |
---|---|---|---|
Americano orgulhoso | Drama | 1.1 | -5,49 |
Papai Noel e o Coelhinho do Sorvete | Família, Fantasia | 1.3 | -5,42 |
Hatsukoi | Drama | 1.2 | -5,38 |
Reis | Biografia, Drama | 1,5 | -5,35 |
Bolívar: o herói | Animação, Biografia | 1.2 | -5,34 |
Hanum & Rangga: Fé e a Cidade | Drama, Romance | 1.2 | -5,28 |
Depois da última temporada | Animação, Drama, Ficção Científica | 1,7 | -5,27 |
Barschel - Mord em Genf | Drama | 1,6 | -5,23 |
Rasshu raifu | Drama | 1,5 | -5,08 |
Kamifusen | Drama | 1,5 | -5,08 |
A mesma coisa aconteceu aqui, mas agora podemos ver que mais dramas aparecem no caso refinado do que no IMDb, o que mostra que alguns dramas podem ser superestimados apenas por serem dramas.
Talvez o pódio mais interessante de se ver sejam os 10 filmes com a maior diferença entre a pontuação do sistema de classificação do IMDb e a minha refinada. Esses filmes são os que têm mais peso em suas características desconhecidas e tornam o filme muito melhor (ou pior) do que o esperado por seus recursos conhecidos.
Título | Classificação IMDb | Classificação refinada | Diferença |
---|---|---|---|
Kanashimi no beradonna | 7.4 | -0,71 | 8.11 |
Jesucristo Superstar | 7.4 | -0,69 | 8.09 |
Pink Floyd A Muralha | 8.1 | 0,03 | 8.06 |
Tenshi no tamago | 7.6 | -0,42 | 8.02 |
Jibon Theke Neya | 9.4 | 1,52 | 7,87 |
El baile | 7,8 | 0,00 | 7,80 |
Papai Noel e os Três Ursos | 7.1 | -0,70 | 7,80 |
La alegre historia de Scrooge | 7,5 | -0,24 | 7,74 |
Piel de asno | 7 | -0,74 | 7,74 |
1776 | 7.6 | -0,11 | 7,71 |
Se eu fosse um diretor de cinema e tivesse que produzir um novo filme, depois de fazer toda essa análise de dados do IMDb, eu poderia ter uma ideia melhor de que tipo de filme fazer para ter uma melhor classificação no IMDb. Seria um longo drama de biografia animada que seria um remake de um filme antigo – por exemplo, Amadeus. Provavelmente isso garantiria um bom ranking no IMDb, mas não tenho certeza sobre os lucros…
O que você acha dos filmes que se classificam nesta nova medida? Você gosta deles? Ou prefere os originais? Deixe-me saber nos comentários abaixo!