Stars Realigned : Améliorer le système de notation IMDb
Publié: 2022-03-11Les 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.
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
etSearchYear
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é queYear
. - Certains domaines s'attendaient à des corrélations positives, telles que :
-
Music
avecMusical
-
Action
avecAdventure
-
Animation
avecAdventure
-
- Idem pour les corrélations négatives :
-
Drama
contreHorror
-
Comedy
contreHorror
-
Horror
contreRomance
-
- En ce qui concerne la variable clé (
Rating
), j'ai remarqué :- Il a une corrélation positive et importante avec
Runtime
etDrama
. - Il a une corrélation plus faible avec les
Votes
, laBiography
et l'History
. - Il a une corrélation considérablement négative avec
Horror
et une corrélation négative plus faible avecThriller
,Action
,Sci-Fi
etYear
. - Il n'y a pas d'autres corrélations significatives.
- Il a une corrélation positive et importante avec
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.
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.
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
.
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
.
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
.
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.
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
.

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.
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
.
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!