Stelle riallineate: miglioramento del sistema di valutazione IMDb

Pubblicato: 2022-03-11

Gli osservatori di film a volte usano le classifiche per selezionare cosa guardare. Dopo averlo fatto io stesso, ho notato che molti dei film meglio classificati appartenevano allo stesso genere: il dramma. Questo mi ha fatto pensare che la classifica potesse avere una sorta di pregiudizio di genere.

Ero su uno dei siti più popolari per gli amanti del cinema, IMDb, che copre film di tutto il mondo e di qualsiasi anno. La sua famosa classifica si basa su una vasta raccolta di recensioni. Per questa analisi dei dati di IMDb, ho deciso di scaricare tutte le informazioni disponibili lì per analizzarle e provare a creare una nuova classifica raffinata che prendesse in considerazione una gamma più ampia di criteri.

Il sistema di valutazione IMDb: filtraggio dei dati di IMDb

Sono stato in grado di scaricare informazioni su 242.528 film usciti tra il 1970 e il 2019 inclusi. Le informazioni che IMDb mi ha fornito per ciascuna di esse sono state: Rank , Title , ID , Year , Certificate , Rating , Votes , Metascore , Synopsis , Runtime , Genre , Gross e SearchYear .

Per avere informazioni sufficienti da analizzare, avevo bisogno di un numero minimo di recensioni per film, quindi la prima cosa che ho fatto è stata filtrare i film con meno di 500 recensioni. Ciò ha prodotto un set di 33.296 film e nella tabella successiva potremmo vedere un'analisi riepilogativa dei suoi campi:

Campo Tipo Conteggio nullo Significare Mediano
Classifica Fattore 0
Titolo Fattore 0
ID Fattore 0
Anno int 0 2003 2006
Certificato Fattore 17587
Valutazione int 0 6.1 6.3
Voti int 0 21040 2017
Metapunteggio int 22350 55.3 56
Sinossi Fattore 0
Tempo di esecuzione int 132 104.9 100
Genere Fattore 0
Schifoso Fattore 21415
Cerca Anno int 0 2003 2006

Nota: in R, Factor si riferisce alle stringhe. Rank e Gross sono così nel set di dati IMDb originale a causa della presenza, ad esempio, di migliaia di separatori.

Prima di iniziare a perfezionare il punteggio, ho dovuto analizzare ulteriormente questo set di dati. Per cominciare, i campi Certificate , Metascore e Gross avevano più del 50% di valori null, quindi non sono utili. Il ranking dipende intrinsecamente dal Rating (la variabile da affinare), quindi non contiene alcuna informazione utile. Lo stesso vale per l' ID in quanto è un identificatore univoco per ogni film.

Infine, Title e Synopsis sono campi di testo brevi. Potrebbe essere possibile usarli attraverso alcune tecniche di PNL, ma poiché si tratta di una quantità limitata di testo, ho deciso di non tenerne conto per questo compito.

Dopo questo primo filtro, sono rimasto con Genre , Rating , Year , Votes , Anno di ricerca e SearchYear di Runtime . Nel campo Genre c'era più di un genere per film, separati da virgole. Quindi, per catturare l'effetto additivo di avere molti generi, l'ho trasformato usando la codifica one-hot. Ciò ha prodotto 22 nuovi campi booleani, uno per ogni genere, con un valore di 1 se il film aveva questo genere o 0 in caso contrario.

Analisi dei dati IMDb

Per vedere le correlazioni tra le variabili, ho calcolato la matrice di correlazione.

Una matrice di correlazione tra tutte le restanti colonne originali e le nuove colonne di genere. I numeri vicini allo zero generano spazi vuoti nella griglia. Le correlazioni negative danno luogo a punti rossi e le correlazioni positive a punti blu. I punti sono più grandi e più scuri più forte è la correlazione. (I punti salienti visivi sono descritti nel testo dell'articolo principale.)

Qui, un valore vicino a 1 rappresenta una forte correlazione positiva e valori vicini a -1 una forte correlazione negativa. Con questo grafico, ho fatto molte osservazioni:

  • Year e Anno SearchYear sono assolutamente correlati. Ciò significa che probabilmente hanno gli stessi valori e che averli entrambi equivale ad averne uno solo, quindi ho mantenuto solo Year .
  • Alcuni campi si aspettavano correlazioni positive, come ad esempio:
    • Music con Musical
    • Action con Adventure
    • Animation con Adventure
  • Lo stesso per le correlazioni negative:
    • Drama contro Horror
    • Comedy contro Horror
    • Horror vs. Romance
  • In relazione alla variabile chiave ( Rating ) ho notato:
    • Ha una correlazione positiva e importante con Runtime e Drama .
    • Ha una correlazione più bassa con Votes , Biography e History .
    • Ha una correlazione considerevolmente negativa con l' Horror e una più bassa negativa con Thriller , Action , Sci-Fi e Year .
    • Non ha altre correlazioni significative.

Sembrava che i drammi lunghi fossero ben valutati, mentre i film horror brevi non lo erano. Secondo me - non avevo i dati per verificarlo - non era correlato al tipo di film che generano più profitti, come i film Marvel o Pixar.

Potrebbe essere che le persone che votano su questo sito non siano i migliori rappresentanti del criterio generale delle persone. Ha senso perché coloro che si prendono il tempo per inviare recensioni sul sito sono probabilmente una sorta di critici cinematografici con un criterio più specifico. Ad ogni modo, il mio obiettivo era rimuovere l'effetto delle funzionalità cinematografiche comuni, quindi ho cercato di rimuovere questa distorsione nel processo.

Distribuzione del genere nel sistema di classificazione IMDb

Il passo successivo è stato quello di analizzare la distribuzione di ciascun genere rispetto alla valutazione. Per fare ciò, ho creato un nuovo campo chiamato Principal_Genre basato sul primo genere apparso nel campo Genre originale. Per visualizzare questo, ho creato un grafico di violino.

Una trama di violino che mostra la distribuzione dei voti per ciascun genere.

Ancora una volta, ho potuto vedere che il Drama correlato con valutazioni alte e l' Horror con valutazioni inferiori. Tuttavia, questo grafico ha rivelato anche altri generi con buoni punteggi: Biography e Animation . Il fatto che le loro correlazioni non apparissero nella matrice precedente era probabilmente perché c'erano troppo pochi film con questi generi. Quindi ho creato un grafico della barra di frequenza per genere.

Un grafico a barre che mostra quanti film di ogni genere erano presenti nel database. Commedia, Drama e Azione avevano frequenze intorno a 6.000 o superiori; Crime and Horror erano superiori a 2.000; il resto erano meno di 1.000.

In effetti, Biography e Animation avevano pochissimi film, così come Sport e Adult . Per questo motivo non sono molto ben correlati con il Rating .

Altre variabili nel sistema di rating IMDb

Successivamente, ho iniziato ad analizzare le covariabili continue: Year , Votes e Runtime . Nel grafico a dispersione, puoi vedere la relazione tra Rating e Year .

Un grafico a dispersione di valutazione e anni.

Come abbiamo visto in precedenza, Year sembrava avere una correlazione negativa con Rating : all'aumentare dell'anno, aumenta anche la varianza di rating, raggiungendo valori più negativi sui film più recenti.

Successivamente, ho realizzato la stessa trama per Votes .

Un grafico a dispersione di voti e voti.

Qui la correlazione era più chiara: più alto era il numero dei voti, più alta era la classifica. Tuttavia, la maggior parte dei film non ha avuto così tanti voti e, in questo caso, la Rating ha avuto una variazione maggiore.

Infine, ho esaminato il rapporto con Runtime .

Un grafico a dispersione tra valutazione e runtime.

Anche in questo caso, abbiamo uno schema simile ma ancora più forte: tempi di autonomia più elevati significano valutazioni più elevate, ma ci sono stati pochissimi casi per tempi di autonomia elevati.

Perfezionamenti del sistema di valutazione IMDb

Dopo tutta questa analisi, avevo un'idea migliore dei dati con cui avevo a che fare, quindi ho deciso di testare alcuni modelli per prevedere le valutazioni in base a questi campi. La mia idea era che la differenza tra le mie migliori previsioni del modello e la Rating reale rimuovesse l'influenza delle caratteristiche comuni e riflettesse le caratteristiche particolari che rendono un film migliore di altri.

Ho iniziato con il modello più semplice, quello lineare. Per valutare quale modello ha funzionato meglio, ho osservato gli errori root-mean-square (RMSE) e mean absolute (MAE). Sono misure standard per questo tipo di attività. Inoltre, sono sulla stessa scala della variabile prevista, quindi sono facili da interpretare.

In questo primo modello, RMSE era 1,03 e MAE 0,78. Ma i modelli lineari presuppongono l'indipendenza dagli errori, una mediana pari a zero e una varianza costante. Se ciò è corretto, il grafico "valori residui rispetto a quelli previsti" dovrebbe apparire come una nuvola senza struttura. Quindi ho deciso di rappresentarlo graficamente per confermarlo.

Grafico a dispersione dei valori residui rispetto a quelli previsti.

Ho potuto vedere che fino a 7 nei valori previsti aveva una forma non strutturata, ma dopo questo valore ha una chiara forma di discesa lineare. Di conseguenza, le ipotesi del modello erano pessime e inoltre ho avuto un "overflow" sui valori previsti perché in realtà il Rating non può essere superiore a 10.

Nella precedente analisi dei dati IMDb, con un maggior numero di Votes , il Rating è migliorato; tuttavia, ciò è avvenuto in pochi casi e per un'enorme quantità di voti. Ciò potrebbe causare distorsioni nel modello e produrre questo overflow della Rating . Per verificare questo, ho valutato cosa sarebbe successo con questo stesso modello, rimuovendo il campo Votes .

Grafico a dispersione dei valori residui rispetto a quelli previsti quando il campo Voti viene rimosso.

Questo era molto meglio! Aveva una forma più chiara e non strutturata senza valori previsti dall'overflow. Il campo Votes dipende anche dall'attività dei revisori e non è una caratteristica dei film, quindi ho deciso di abbandonare anche questo campo. Gli errori dopo averlo rimosso erano 1,06 su RMSE e 0,81 su MAE, un po' peggio, ma non così tanto, e ho preferito avere supposizioni e funzionalità migliori rispetto a prestazioni leggermente migliori sul mio set di allenamento.

Analisi dei dati IMDb: come funzionano gli altri modelli?

La prossima cosa che ho fatto è stata provare diversi modelli per analizzare quale funzionava meglio. Per ogni modello, ho utilizzato la tecnica di ricerca casuale per ottimizzare i valori dell'iperparametro e la convalida incrociata 5 volte per prevenire la distorsione del modello. Nella tabella seguente sono riportati gli errori stimati ottenuti:

Modello RMSE MAE
Rete neurale 1.044596 0,795699
Potenziamento 1.046639 0.7971921
Albero di inferenza 1.05704 0.8054783
GAM 1.0615108 0.8119555
Modello lineare 1.066539 0.8152524
Reg. lineare penalizzato 1.066607 0.8153331
KNN 1.066714 0.8123369
cresta bayesiana 1.068995 0.8148692
SVM 1.073491 0.8092725

Come puoi vedere, tutti i modelli si comportano in modo simile, quindi ne ho usati alcuni per analizzare un po' più di dati. Volevo conoscere l'influenza di ciascun campo sulla valutazione. Il modo più semplice per farlo è osservare i parametri del modello lineare. Ma per evitare distorsioni su di essi in precedenza, avevo ridimensionato i dati e quindi riqualificato il modello lineare. I pesi erano come nella foto qui.

Un grafico a barre di pesi del modello lineare che vanno da quasi -0,25 per Horror a quasi 0,25 per Drama.

In questo grafico è chiaro che due delle variabili più importanti sono Horror e Drama , dove la prima ha un impatto negativo sul rating e la seconda un positivo. Ci sono anche altri campi che hanno un impatto positivo, come Animation e Biography , mentre Action , Sci-Fi e Year hanno un impatto negativo. Inoltre, Principal_Genre non ha un impatto considerevole, quindi è più importante quali generi ha un film rispetto a quale sia il principale.

Con il modello additivo generalizzato (GAM), ho potuto vedere anche un impatto più dettagliato per le variabili continue, che in questo caso era l' Year .

Un grafico di Year vs. s(Year) utilizzando il modello additivo generalizzato. Il valore s(Year) segue una curva che inizia vicino a 0,6 per il 1970, scendendo al di sotto di 0 nel 2010 e aumentando di nuovo vicino a 0 entro il 2019.

Qui abbiamo qualcosa di più interessante. Sebbene fosse vero che per i film recenti la valutazione tendeva a essere più bassa, l'effetto non era costante. Ha il valore più basso nel 2010 e poi sembra "riprendersi". Sarebbe interessante scoprire cosa è successo dopo quell'anno nella produzione cinematografica che potrebbe aver prodotto questo cambiamento.

Il modello migliore erano le reti neurali, che avevano RMSE e MAE più bassi, ma come puoi vedere, nessun modello ha raggiunto prestazioni perfette. Ma questa non era una cattiva notizia in termini di mio obiettivo. Le informazioni disponibili mi consentono di stimare le prestazioni in modo piuttosto buono, ma non sono sufficienti. Ci sono altre informazioni che non sono riuscito a ottenere da IMDb che fanno sì che la Rating differisca dal punteggio previsto in base a Genre , tempo di Runtime e Year . Può essere la performance dell'attore, le sceneggiature di film, la fotografia o molte altre cose.

Dal mio punto di vista, queste altre caratteristiche sono ciò che conta davvero nella scelta di cosa guardare. Non mi interessa se un determinato film è un dramma, d'azione o di fantascienza. Voglio che abbia qualcosa di speciale, qualcosa che mi faccia divertire, mi faccia imparare qualcosa, mi faccia riflettere sulla realtà o semplicemente mi diverta.

Quindi ho creato un nuovo rating raffinato prendendo il rating IMDb e sottraendo il rating previsto del miglior modello. In questo modo, rimuovevo l'effetto di Genre , Runtime e Year e conservavo quest'altra informazione sconosciuta che è molto più importante per me.

Alternativa al sistema di valutazione IMDb: i risultati finali

Vediamo ora quali sono i 10 migliori film in base alla mia nuova valutazione rispetto alla reale valutazione di IMDb:

IMDb

Titolo Genere Valutazione IMDb Valutazione raffinata
Ko a tamo peva Avventura, Commedia, Drammatico 8.9 1.90
Dipu numero 2 Avventura, famiglia 8.9 3.14
El senor de los anillos: El retorno del rey Avventura, Drammatico, Fantasia 8.9 2.67
El senor de los anillos: La comunidad del anillos Avventura, Drammatico, Fantasia 8.8 2.55
Anbe Sivam Avventura, Commedia, Drammatico 8.8 2.38
Hababam Sinifi Tatilde Avventura, Commedia, Drammatico 8.7 1.66
El senor de los anillos: Las dos torres Avventura, Drammatico, Fantasia 8.7 2.46
Mudra chiamata Avventura, Drammatico, Romantico 8.7 2.34
Interessante Avventura, Drammatico, Fantascienza 8.6 2.83
Voler al futuro Avventura, commedia, fantascienza 8.5 2.32

Il mio

Titolo Genere Valutazione IMDb Valutazione raffinata
Dipu numero 2 Avventura, famiglia 8.9 3.14
Interessante Avventura, Drammatico, Fantascienza 8.6 2.83
El senor de los anillos: El retorno del rey Avventura, Drammatico, Fantasia 8.9 2.67
El senor de los anillos: La comunidad del anillos Avventura, Drammatico, Fantasia 8.8 2.55
Kolah ghermezi va pesar khale Avventura, commedia, famiglia 8.1 2.49
El senor de los anillos: Las dos torres Avventura, Drammatico, Fantasia 8.7 2.46
Anbe Sivam Avventura, Commedia, Drammatico 8.8 2.38
Los caballeros de la mesa cuadrada Avventura, Commedia, Fantasia 8.2 2.35
Mudra chiamata Avventura, Drammatico, Romantico 8.7 2.34
Voler al futuro Avventura, commedia, fantascienza 8.5 2.32

Come puoi vedere, il podio non è cambiato radicalmente. Questo era previsto perché l'RMSE non era così alto e qui stiamo guardando il massimo. Vediamo cosa è successo con gli ultimi 10:

IMDb

Titolo Genere Valutazione IMDb Valutazione raffinata
Holnap tortent - Un brutto film bulvar Commedia, Mistero 1 -4.86
Cumali Ceber: Allah Seni Alsin Commedia 1 -4.57
Badang Commedia, Fantasia 1 -4.74
Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Kosmiczna nominacja Commedia 1.1 -4.52
orgoglioso americano Dramma 1.1 -5.49
Giacche marroni: guerra d'indipendenza Azione, Fantascienza, Guerra 1.1 -3.71
Il fine settimana che vive Commedia, Horror, Mistero 1.2 -4.53
Bolivar: l'eroe Animazione, Biografia 1.2 -5.34
L'ascesa del pipistrello nero Azione, fantascienza 1.2 -3.65
Hatsukoi Dramma 1.2 -5.38

Il mio

Titolo Genere Valutazione IMDb Valutazione raffinata
orgoglioso americano Dramma 1.1 -5.49
Babbo Natale e il coniglietto gelato Famiglia, Fantasia 1.3 -5.42
Hatsukoi Dramma 1.2 -5.38
Reis Biografia, Drammatico 1.5 -5.35
Bolivar: l'eroe Animazione, Biografia 1.2 -5.34
Hanum & Rangga: La fede e la città Drammatico, Romantico 1.2 -5.28
Dopo la scorsa stagione Animazione, Drammatico, Fantascienza 1.7 -5.27
Barschel - Mord a Genf Dramma 1.6 -5.23
Rashu raifu Dramma 1.5 -5.08
Kamifusen Dramma 1.5 -5.08

La stessa cosa è successa qui, ma ora possiamo vedere che nel caso raffinato compaiono più drammi che in IMDb, il che dimostra che alcuni drammi potrebbero essere sopravvalutati solo per essere drammi.

Forse il podio più interessante da vedere è quello dei 10 film con la maggiore differenza tra il punteggio del sistema di valutazione di IMDb e il mio raffinato. Questi film sono quelli che hanno più peso sulle loro caratteristiche sconosciute e rendono il film molto migliore (o peggiore) del previsto per le sue caratteristiche note.

Titolo Valutazione IMDb Valutazione raffinata Differenza
Kanashimi non 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
El baile 7.8 0.00 7.80
Babbo Natale e i tre orsi 7.1 -0,70 7.80
L'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 fossi un regista e dovessi produrre un nuovo film, dopo aver fatto tutta questa analisi dei dati di IMDb, potrei avere un'idea migliore di che tipo di film fare per avere una migliore classifica di IMDb. Sarebbe un lungo dramma biografico animato che sarebbe un remake di un vecchio film, ad esempio Amadeus. Probabilmente questo assicurerebbe un buon ranking di IMDb, ma non sono sicuro dei profitti…

Cosa ne pensi dei film che si classificano in questa nuova misura? Ti piacciono? O preferisci quelli originali? Fammi sapere nei commenti qui sotto!