Stars Realigned : Améliorer le système de notation IMDb

Publié: 2022-03-11

Les spectateurs de films utilisent parfois des classements pour sélectionner ce qu'ils veulent regarder. Une fois que j'ai fait cela moi-même, j'ai remarqué que bon nombre des films les mieux classés appartenaient au même genre : le drame. Cela m'a fait penser que le classement pourrait avoir une sorte de biais de genre.

J'étais sur l'un des sites les plus populaires pour les cinéphiles, IMDb, qui couvre des films du monde entier et de toutes les années. Son célèbre classement est basé sur une énorme collection de critiques. Pour cette analyse de données IMDb, j'ai décidé de télécharger toutes les informations disponibles pour les analyser et essayer de créer un nouveau classement affiné qui prendrait en compte un plus large éventail de critères.

Le système de notation IMDb : filtrer les données d'IMDb

J'ai pu télécharger des informations sur 242 528 films sortis entre 1970 et 2019 inclus. Les informations qu'IMDb m'a données pour chacun étaient les suivantes : Rank , Title , ID , Year , Certificate , Rating , Votes , Metascore , Synopsis , Runtime , Genre , Gross et SearchYear .

Pour avoir suffisamment d'informations à analyser, j'avais besoin d'un nombre minimum de critiques par film, donc la première chose que j'ai faite a été de filtrer les films avec moins de 500 critiques. Cela a abouti à un ensemble de 33 296 films, et dans le tableau suivant, nous avons pu voir une analyse récapitulative de ses champs :

Champ Taper Compte nul Signifier Médian
Rang Facteur 0
Titre Facteur 0
identifiant Facteur 0
An Int 0 2003 2006
Certificat Facteur 17587
Notation Int 0 6.1 6.3
Votes Int 0 21040 2017
Métascore Int 22350 55.3 56
Synopsis Facteur 0
Durée Int 132 104,9 100
Genre Facteur 0
Brut Facteur 21415
RechercheAnnée Int 0 2003 2006

Remarque : Dans R, Factor fait référence aux chaînes. Le Rank et le Gross sont ainsi dans l'ensemble de données IMDb d'origine en raison de la présence, par exemple, de milliers de séparateurs.

Avant de commencer à affiner le score, j'ai dû analyser plus en profondeur cet ensemble de données. Pour commencer, les champs Certificate , Metascore et Gross avaient plus de 50 % de valeurs nulles, ils ne sont donc pas utiles. Le rang dépend intrinsèquement de la note (la variable à affiner), il ne contient donc aucune information utile. Il en va de même pour ID en ce sens qu'il s'agit d'un identifiant unique pour chaque film.

Enfin, Title et Synopsis sont des champs de texte courts. Il pourrait être possible de les utiliser via une technique de PNL, mais comme il s'agit d'une quantité limitée de texte, j'ai décidé de ne pas les prendre en compte pour cette tâche.

Après ce premier filtre, il me restait Genre , Rating , Year , Votes , SearchYear et Runtime . Dans le champ Genre , il y avait plus d'un genre par film, séparés par des virgules. Donc, pour capturer l'effet additif d'avoir de nombreux genres, je l'ai transformé en utilisant un encodage à chaud. Cela a abouti à 22 nouveaux champs booléens - un pour chaque genre - avec une valeur de 1 si le film avait ce genre ou 0 sinon.

Analyse des données IMDb

Pour voir les corrélations entre les variables, j'ai calculé la matrice de corrélation.

Une matrice de corrélation entre toutes les colonnes originales restantes et les nouvelles colonnes de genre. Les nombres proches de zéro entraînent des espaces vides dans la grille. Les corrélations négatives se traduisent par des points rouges et les corrélations positives par des points bleus. Plus la corrélation est forte, plus les points sont gros et foncés. (Les points forts visuels sont décrits dans le texte principal de l'article.)

Ici, une valeur proche de 1 représente une forte corrélation positive, et des valeurs proches de -1 une forte corrélation négative. Par ce graphique, j'ai fait de nombreuses observations:

  • Year et SearchYear sont absolument corrélés. Cela signifie qu'ils ont probablement les mêmes valeurs et qu'avoir les deux revient à n'en avoir qu'un, donc je n'ai gardé que Year .
  • Certains domaines s'attendaient à des corrélations positives, telles que :
    • Music avec Musical
    • Action avec Adventure
    • Animation avec Adventure
  • Idem pour les corrélations négatives :
    • Drama contre Horror
    • Comedy contre Horror
    • Horror contre Romance
  • En ce qui concerne la variable clé ( Rating ), j'ai remarqué :
    • Il a une corrélation positive et importante avec Runtime et Drama .
    • Il a une corrélation plus faible avec les Votes , la Biography et l' History .
    • Il a une corrélation considérablement négative avec Horror et une corrélation négative plus faible avec Thriller , Action , Sci-Fi et Year .
    • Il n'y a pas d'autres corrélations significatives.

Il semblait que les longs drames étaient bien notés, contrairement aux courts métrages d'horreur. À mon avis—je n'avais pas les données pour le vérifier—il n'y avait pas de corrélation avec le genre de films qui génèrent plus de profits, comme les films Marvel ou Pixar.

Il se pourrait que les personnes qui votent sur ce site ne soient pas les meilleurs représentants du critère people général. C'est logique parce que ceux qui prennent le temps de soumettre des critiques sur le site sont probablement une sorte de critiques de cinéma avec un critère plus précis. Quoi qu'il en soit, mon objectif était de supprimer l'effet des fonctionnalités courantes du film, j'ai donc essayé de supprimer ce biais dans le processus.

Distribution des genres dans le système de notation IMDb

L'étape suivante consistait à analyser la répartition de chaque genre sur la note. Pour ce faire, j'ai créé un nouveau champ appelé Principal_Genre basé sur le premier genre apparu dans le champ Genre d'origine. Pour visualiser cela, j'ai fait un graphique de violon.

Un graphique de violon montrant la distribution des notes pour chaque genre.

Une fois de plus, j'ai pu voir que Drama est en corrélation avec des notes élevées et l' Horror avec des notes plus basses. Cependant, ce graphique a également révélé d'autres genres comme ayant de bons scores : Biography et Animation . Si leurs corrélations n'apparaissaient pas dans la matrice précédente, c'est probablement parce qu'il y avait trop peu de films avec ces genres. Ensuite, j'ai créé un graphique à barres de fréquence par genre.

Un graphique à barres indiquant le nombre de films de chaque genre dans la base de données. La comédie, le drame et l'action avaient des fréquences d'environ 6 000 ou plus; Le crime et l'horreur étaient supérieurs à 2 000 ; les autres étaient inférieurs à 1 000.

Effectivement, Biography and Animation avait très peu de films, tout comme Sport et Adult . Pour cette raison, ils ne sont pas très bien corrélés avec Rating .

Autres variables du système de notation IMDb

Après cela, j'ai commencé à analyser les covariables continues : Year , Votes et Runtime . Dans le nuage de points, vous pouvez voir la relation entre Rating et Year .

Un nuage de points de notation et d'années.

Comme nous l'avons vu précédemment, l' Year semblait avoir une corrélation négative avec la Rating : à mesure que l'année augmente, la variance de la notation augmente également, atteignant des valeurs plus négatives sur les films plus récents.

Ensuite, j'ai fait le même tracé pour Votes .

Un nuage de points des notes et des votes.

Ici, la corrélation était plus claire : plus le nombre de votes était élevé, plus le classement était élevé. Cependant, la plupart des films n'avaient pas autant de votes et, dans ce cas, la Rating avait un écart plus important.

Enfin, j'ai regardé la relation avec Runtime .

Un nuage de points entre la note et le temps d'exécution.

Encore une fois, nous avons un schéma similaire mais encore plus fort : des durées d'exécution plus élevées signifient des notes plus élevées, mais il y avait très peu de cas pour des durées d'exécution élevées.

Améliorations du système de notation IMDb

Après toute cette analyse, j'avais une meilleure idée des données avec lesquelles j'avais affaire, alors j'ai décidé de tester quelques modèles pour prédire les cotes en fonction de ces champs. Mon idée était que la différence entre mes meilleures prédictions de modèle et la Rating réelle supprimerait l'influence des caractéristiques communes et refléterait les caractéristiques particulières qui rendent un film meilleur que les autres.

J'ai commencé avec le modèle le plus simple, le modèle linéaire. Pour évaluer quel modèle fonctionnait le mieux, j'ai observé les erreurs quadratiques moyennes (RMSE) et absolues moyennes (MAE). Ce sont des mesures standard pour ce genre de tâche. De plus, ils sont sur la même échelle que la variable prédite, ils sont donc faciles à interpréter.

Dans ce premier modèle, RMSE était de 1,03 et MAE de 0,78. Mais les modèles linéaires supposent une indépendance sur les erreurs, une médiane de zéro et une variance constante. Si cela est correct, le graphique "valeurs résiduelles vs valeurs prédites" devrait ressembler à un nuage sans structure. J'ai donc décidé de le représenter graphiquement pour corroborer cela.

Nuage de points des valeurs résiduelles par rapport aux valeurs prédites.

J'ai pu voir que jusqu'à 7 dans les valeurs prédites, il avait une forme non structurée, mais après cette valeur, il a une forme de descente linéaire claire. Par conséquent, les hypothèses du modèle étaient mauvaises, et aussi, j'ai eu un "débordement" sur les valeurs prédites car en réalité, Rating ne peut pas être supérieur à 10.

Dans la précédente analyse de données IMDb, avec un plus grand nombre de Votes , la Rating s'est améliorée ; cependant, cela s'est produit dans quelques cas et pour un grand nombre de votes. Cela pourrait provoquer des distorsions dans le modèle et produire ce débordement de Rating . Pour vérifier cela, j'ai évalué ce qui se passerait avec ce même modèle, en supprimant le champ Votes .

Nuage de points des valeurs résiduelles et prédites lorsque le champ Votes est supprimé.

C'était bien mieux ! Il avait une forme plus claire et non structurée sans valeurs de débordement prévues. Le champ Votes dépend également de l'activité des critiques et n'est pas une caractéristique des films, j'ai donc décidé de supprimer également ce champ. Les erreurs après l'avoir supprimée étaient de 1,06 sur RMSE et de 0,81 sur MAE - un peu pire, mais pas tellement, et j'ai préféré avoir de meilleures suppositions et une sélection de fonctionnalités plutôt qu'une performance un peu meilleure sur mon ensemble d'entraînement.

Analyse de données IMDb : comment fonctionnent les autres modèles ?

La prochaine chose que j'ai faite a été d'essayer différents modèles pour analyser ceux qui fonctionnaient le mieux. Pour chaque modèle, j'ai utilisé la technique de recherche aléatoire pour optimiser les valeurs d'hyperparamètres et la validation croisée 5 fois pour éviter les biais du modèle. Dans le tableau suivant figurent les erreurs estimées obtenues :

Modèle RMSE MAE
Réseau neuronal 1.044596 0,795699
Booster 1.046639 0.7971921
Arbre d'inférence 1.05704 0.8054783
MAG 1.0615108 0.8119555
Modèle linéaire 1.066539 0.8152524
Reg Linéaire Pénalisé 1.066607 0.8153331
KN 1.066714 0.8123369
Crête bayésienne 1.068995 0.8148692
SVM 1.073491 0.8092725

Comme vous pouvez le voir, tous les modèles fonctionnent de la même manière, j'en ai donc utilisé certains pour analyser un peu plus de données. Je voulais connaître l'influence de chaque champ sur la note. La façon la plus simple de le faire est d'observer les paramètres du modèle linéaire. Mais pour éviter les distorsions sur eux auparavant, j'avais mis à l'échelle les données, puis reformé le modèle linéaire. Les poids étaient comme sur la photo ici.

Un graphique à barres des pondérations linéaires du modèle allant de près de -0,25 pour Horror à près de 0,25 pour Drama.

Dans ce graphique, il est clair que deux des variables les plus importantes sont Horror et Drama , où la première a un impact négatif sur la note et la seconde un effet positif. Il existe également d'autres domaines qui ont un impact positif, comme l' Animation et la Biography , tandis que l' Action , Sci-Fi et l' Year ont un impact négatif. De plus, Principal_Genre n'a pas un impact considérable, il est donc plus important de savoir quels genres un film a que lequel est le principal.

Avec le modèle additif généralisé (GAM), je pouvais également voir un impact plus détaillé pour les variables continues, qui dans ce cas était l' Year .

Un graphique de l'année par rapport à s (année) à l'aide du modèle additif généralisé. La valeur s(Année) suit une courbe commençant près de 0,6 pour 1970, descendant en dessous de 0 en 2010 et augmentant à nouveau près de 0 en 2019.

Ici, nous avons quelque chose de plus intéressant. S'il était vrai que pour les films récents, la note avait tendance à être inférieure, l'effet n'était pas constant. Il a la valeur la plus basse en 2010, puis il semble se « récupérer ». Il serait intéressant de découvrir ce qui s'est passé après cette année dans la production cinématographique qui aurait pu produire ce changement.

Le meilleur modèle était les réseaux de neurones, qui avaient les RMSE et MAE les plus bas, mais comme vous pouvez le voir, aucun modèle n'a atteint des performances parfaites. Mais ce n'était pas une mauvaise nouvelle par rapport à mon objectif. Les informations disponibles me permettent d'estimer assez bien les performances, mais ce n'est pas suffisant. Il y a d'autres informations que je n'ai pas pu obtenir d'IMDb qui font que Rating diffère du score attendu en fonction de Genre , Runtime et Year . Il peut s'agir de performances d'acteurs, de scénarios de films, de photographies ou de bien d'autres choses.

De mon point de vue, ces autres caractéristiques sont ce qui compte vraiment dans le choix de ce qu'il faut regarder. Peu m'importe si un film donné est un drame, de l'action ou de la science-fiction. Je veux qu'il ait quelque chose de spécial, quelque chose qui me fasse passer un bon moment, me fasse apprendre quelque chose, me fasse réfléchir à la réalité ou me divertisse tout simplement.

J'ai donc créé une nouvelle note affinée en prenant la note IMDb et en soustrayant la note prédite du meilleur modèle. En faisant cela, je supprimais l'effet de Genre , Runtime et Year et conservais cette autre information inconnue qui est beaucoup plus importante pour moi.

Alternative au système de notation IMDb : les résultats finaux

Voyons maintenant quels sont les 10 meilleurs films selon ma nouvelle note par rapport à la vraie note IMDb :

IMDb

Titre Genre Classement IMDb Note raffinée
Ko à tamo peva Aventure, Comédie, Drame 8.9 1,90
Dipu Numéro 2 Aventure,Famille 8.9 3.14
El senor de los anillos : El retorno del rey Aventure, Drame, Fantastique 8.9 2,67
El senor de los anillos : La communauté de l'anillo Aventure, Drame, Fantastique 8.8 2,55
Anbé Sivam Aventure, Comédie, Drame 8.8 2.38
Hababam Sinifi Tatilde Aventure, Comédie, Drame 8.7 1,66
El senor de los anillos : Las dos torres Aventure, Drame, Fantastique 8.7 2.46
Appel des mudras Aventure, Drame, Romance 8.7 2.34
intéressant Aventure, Drame, Science-fiction 8.6 2,83
Retour au futur Aventure, Comédie, Science-fiction 8.5 2.32

Mien

Titre Genre Classement IMDb Note raffinée
Dipu Numéro 2 Aventure,Famille 8.9 3.14
intéressant Aventure, Drame, Science-fiction 8.6 2,83
El senor de los anillos : El retorno del rey Aventure, Drame, Fantastique 8.9 2,67
El senor de los anillos : La communauté de l'anillo Aventure, Drame, Fantastique 8.8 2,55
Kolah ghermezi va pesar khale Aventure, Comédie, Familial 8.1 2.49
El senor de los anillos : Las dos torres Aventure, Drame, Fantastique 8.7 2.46
Anbé Sivam Aventure, Comédie, Drame 8.8 2.38
Los caballeros de la mesa cuadrada Aventure, Comédie, Fantastique 8.2 2.35
Appel des mudras Aventure, Drame, Romance 8.7 2.34
Retour au futur Aventure, Comédie, Science-fiction 8.5 2.32

Comme vous pouvez le voir, le podium n'a pas radicalement changé. C'était prévu car le RMSE n'était pas si élevé, et ici nous surveillons le sommet. Voyons ce qui s'est passé avec les 10 derniers :

IMDb

Titre Genre Classement IMDb Note raffinée
Holnap tortent - Un nagy bulvarfilm Comédie,Mystère 1 -4.86
Cumali Ceber : Allah Seni Alsin La comédie 1 -4,57
Badang Comédie, Fantastique 1 -4,74
Yoyreek !!! Kosmiczna nominacja La comédie 1.1 -4.52
Fier Américain Drame 1.1 -5.49
Browncoats: Guerre d'Indépendance Action, Science-fiction, Guerre 1.1 -3,71
Le week-end ça vit Comédie, Horreur, Mystère 1.2 -4.53
Bolivar : le héros Animation, Biographie 1.2 -5.34
L'ascension de la chauve-souris noire Action,Science-Fiction 1.2 -3.65
Hatsukoi Drame 1.2 -5.38

Mien

Titre Genre Classement IMDb Note raffinée
Fier Américain Drame 1.1 -5.49
Père Noël et le lapin de glace Famille, Fantaisie 1.3 -5.42
Hatsukoi Drame 1.2 -5.38
Réis Biographie,Drame 1.5 -5.35
Bolivar : le héros Animation, Biographie 1.2 -5.34
Hanum & Rangga : La foi et la ville Drame, Romance 1.2 -5.28
Après la dernière saison Animation, Drame, Science-fiction 1.7 -5.27
Barschel - Mord à Genève Drame 1.6 -5.23
Rasshu raifu Drame 1.5 -5.08
Kamifuse Drame 1.5 -5.08

La même chose s'est produite ici, mais maintenant nous pouvons voir que plus de drames apparaissent dans le cas raffiné que dans IMDb, ce qui montre que certains drames pourraient être surclassés simplement parce qu'ils sont des drames.

Le podium le plus intéressant à voir est peut-être celui des 10 films avec la plus grande différence entre le score du système de notation IMDb et le mien. Ces films sont ceux qui ont le plus de poids sur leurs caractéristiques inconnues et rendent le film bien meilleur (ou pire) que prévu pour ses caractéristiques connues.

Titre Classement IMDb Note raffinée Différence
Kanashimi no beradonna 7.4 -0,71 8.11
Jesucristo Superstar 7.4 -0,69 8.09
Pink Floyd The Wall 8.1 0,03 8.06
Tenshi no tamago 7.6 -0,42 8.02
Jibon Theke Neya 9.4 1.52 7,87
Le baile 7.8 0,00 7,80
Père Noël et les trois ours 7.1 -0,70 7,80
La alegre historia de Scrooge 7.5 -0,24 7,74
Piel d'asno 7 -0,74 7,74
1776 7.6 -0,11 7.71

Si j'étais réalisateur et que je devais produire un nouveau film, après avoir fait toute cette analyse de données IMDb, je pourrais avoir une meilleure idée du type de film à faire pour avoir un meilleur classement IMDb. Ce serait un long drame biographique animé qui serait un remake d'un vieux film, par exemple, Amadeus. Cela assurerait probablement un bon classement IMDb, mais je ne suis pas sûr des bénéfices…

Que pensez-vous des films qui se classent dans cette nouvelle mesure ? Vous les aimez ? Ou préférez-vous les originaux? Faites-le moi savoir dans les commentaires ci-dessous!