Stele realiniete: îmbunătățirea sistemului de evaluare IMDb

Publicat: 2022-03-11

Privitorii de filme folosesc uneori clasamente pentru a selecta ce să vizioneze. Odată ce am făcut asta și eu, am observat că multe dintre cele mai bine clasate filme aparțineau aceluiași gen: dramă. Acest lucru m-a făcut să cred că clasamentul ar putea avea un fel de părtinire de gen.

Am fost pe unul dintre cele mai populare site-uri pentru iubitorii de film, IMDb, care acoperă filme din toată lumea și din orice an. Celebrul său clasament se bazează pe o colecție uriașă de recenzii. Pentru această analiză a datelor IMDb, am decis să descarc toate informațiile disponibile acolo pentru a le analiza și a încerca să creez un clasament nou, rafinat, care să ia în considerare o gamă mai largă de criterii.

Sistemul de evaluare IMDb: filtrarea datelor IMDb

Am putut descărca informații despre 242.528 de filme lansate între 1970 și 2019 inclusiv. Informațiile pe care IMDb mi le-a oferit pentru fiecare dintre ele au fost: Rank , Title , ID , Year , Certificate , Rating , Votes , Metascore , Synopsis , Timp de Runtime , Genre , Gross și SearchYear de căutare .

Pentru a avea suficiente informații de analizat, aveam nevoie de un număr minim de recenzii per film, așa că primul lucru pe care l-am făcut a fost să filtrez filmele cu mai puțin de 500 de recenzii. Acest lucru a dus la un set de 33.296 de filme, iar în tabelul următor, am putut vedea o analiză sumară a câmpurilor sale:

Camp Tip Număr Null Rău Median
Rang Factor 0
Titlu Factor 0
ID Factor 0
An Int 0 2003 2006
Certificat Factor 17587
Evaluare Int 0 6.1 6.3
Voturi Int 0 21040 2017
Metascor Int 22350 55.3 56
Rezumat Factor 0
Timp de rulare Int 132 104,9 100
Gen Factor 0
Brut Factor 21415
Caută Anul Int 0 2003 2006

Notă: în R, Factor se referă la șiruri. Rank și Gross sunt așa în setul de date original IMDb, deoarece au, de exemplu, mii de separatori.

Înainte de a începe să perfecționez scorul, a trebuit să analizez în continuare acest set de date. Pentru început, câmpurile Certificate , Metascore și Gross au avut mai mult de 50% din valori nule, așa că nu sunt utile. Clasamentul depinde intrinsec de Rating (variabila de rafinat), prin urmare, nu contine informatii utile. Același lucru este valabil și cu ID -ul, deoarece este un identificator unic pentru fiecare film.

În cele din urmă, Title și Synopsis sunt câmpuri de text scurte. Ar putea fi posibil să le utilizez printr-o tehnică NLP, dar pentru că este o cantitate limitată de text, am decis să nu le iau în considerare pentru această sarcină.

După acest prim filtru, am rămas cu Genre , Rating , Year , Votes , SearchYear și Runtime . În câmpul Genre , au existat mai mult de un gen pentru fiecare film, separate prin virgule. Așa că pentru a surprinde efectul aditiv de a avea mai multe genuri, l-am transformat folosind codificare one-hot. Acest lucru a dus la 22 de câmpuri booleene noi - câte unul pentru fiecare gen - cu o valoare de 1 dacă filmul avea acest gen sau 0 în caz contrar.

Analiza datelor IMDb

Pentru a vedea corelațiile dintre variabile, am calculat matricea de corelație.

O matrice de corelație între toate coloanele originale rămase și noile coloane de gen. Numerele apropiate de zero au ca rezultat spații goale în grilă. Corelațiile negative au ca rezultat puncte roșii și corelațiile pozitive în puncte albastre. Punctele sunt mai mari și mai întunecate, cu atât mai puternică este corelația. (Evidențierile vizuale sunt descrise în textul articolului principal.)

Aici, o valoare apropiată de 1 reprezintă o corelație pozitivă puternică, iar valorile apropiate de -1 o corelație negativă puternică. Prin acest grafic, am făcut multe observații:

  • Year și SearchYear sunt absolut corelate. Aceasta înseamnă că probabil au aceleași valori și că a avea ambele este la fel ca a avea doar una, așa că am păstrat doar Year .
  • Unele domenii se așteptau la corelații pozitive, cum ar fi:
    • Music cu Musical
    • Action cu Adventure
    • Animation cu Adventure
  • Același lucru pentru corelațiile negative:
    • Drama versus Horror
    • Comedy vs Horror
    • Horror vs. Romance
  • Legat de variabila cheie ( Rating ) am observat:
    • Are o corelație pozitivă și importantă cu Runtime și Drama .
    • Are o corelație mai mică cu Votes , Biography și History .
    • Are o corelație considerabil negativă cu Horror și una mai mică cu Thriller , Action , Sci-Fi și Year .
    • Nu are alte corelații semnificative.

Se părea că dramele lungi erau bine cotate, în timp ce filmele scurte de groază nu. După părerea mea — nu aveam datele pentru a verifica — nu se corela cu genul de filme care generează mai multe profituri, precum filmele Marvel sau Pixar.

S-ar putea ca persoanele care votează pe acest site să nu fie cel mai bun reprezentant al criteriului general al oamenilor. Are sens pentru că cei care își fac timp pentru a trimite recenzii pe site sunt probabil un fel de critici de film cu un criteriu mai specific. Oricum, obiectivul meu a fost să elimin efectul caracteristicilor comune ale filmului, așa că am încercat să elimin această părtinire în acest proces.

Distribuția genurilor în sistemul de evaluare IMDb

Următorul pas a fost analizarea distribuției fiecărui gen pe rating. Pentru a face asta, am creat un câmp nou numit Principal_Genre , bazat pe primul Genre care a apărut în câmpul original Gen. Pentru a vizualiza acest lucru, am făcut un grafic de vioară.

Un complot pentru vioară care arată distribuția evaluărilor pentru fiecare gen.

Încă o dată, am putut vedea că Drama se corelează cu ratinguri mari și Horror cu evaluări mai mici. Cu toate acestea, acest grafic a dezvăluit și alte genuri ca având scoruri bune: Biography și Animation . Faptul că corelațiile lor nu au apărut în matricea anterioară a fost probabil pentru că erau prea puține filme cu aceste genuri. Așa că în continuare am creat un grafic cu bare de frecvență pe gen.

Un grafic cu bare care arată câte filme din fiecare gen erau în baza de date. Comedie, Dramă și Acțiune aveau frecvențe în jur de 6.000 sau mai mult; Crima și Groaza au fost peste 2.000; restul erau sub 1.000.

Efectiv, Biography și Animation au avut foarte puține filme, la fel ca Sport și Adult . Din acest motiv, ele nu sunt foarte bine corelate cu Rating .

Alte variabile în sistemul de evaluare IMDb

După aceea, am început să analizez covariabilele continue: Year , Votes și Runtime . În graficul de dispersie, puteți vedea relația dintre Rating și Year .

Un grafic dispersat de rating și ani.

După cum am văzut anterior, Year părea să aibă o corelație negativă cu Rating : Pe măsură ce anul crește, și varianța evaluării crește, atingând valori mai negative la filmele mai noi.

Apoi, am făcut același complot pentru Votes .

Un grafic dispersat de evaluări și voturi.

Aici, corelația a fost mai clară: cu cât numărul de voturi era mai mare, cu atât clasamentul era mai mare. Cu toate acestea, majoritatea filmelor nu au avut atât de multe voturi, iar în acest caz, Rating a avut o variație mai mare.

În cele din urmă, m-am uitat la relația cu Runtime .

Un grafic de dispersie între evaluare și durata de rulare.

Din nou, avem un model similar, dar chiar mai puternic: timpi de execuție mai mari înseamnă evaluări mai mari, dar au existat foarte puține cazuri pentru durate mari.

Îmbunătățiri ale sistemului de evaluare IMDb

După toată această analiză, am avut o idee mai bună asupra datelor cu care aveam de-a face, așa că am decis să testez câteva modele pentru a prezice ratingurile pe baza acestor câmpuri. Ideea mea a fost că diferența dintre cele mai bune predicții ale mele de model și Rating reală ar elimina influența caracteristicilor comune și ar reflecta caracteristicile particulare care fac un film mai bun decât alții.

Am început cu cel mai simplu model, cel liniar. Pentru a evalua ce model a funcționat mai bine, am observat erorile rădăcină pătrată medie (RMSE) și erorile absolute medii (MAE). Sunt măsuri standard pentru acest tip de sarcină. De asemenea, ele sunt la aceeași scară cu variabila prezisă, deci sunt ușor de interpretat.

În acest prim model, RMSE a fost 1,03 și MAE 0,78. Dar modelele liniare presupun independență față de erori, o mediană de zero și varianță constantă. Dacă acest lucru este corect, graficul „valori reziduale vs. prezise” ar trebui să arate ca un nor fără structură. Așa că m-am hotărât să-l grafic pentru a confirma asta.

Graficul de dispersie a valorilor reziduale vs. prezise.

Am putut vedea că până la 7 în valorile prezise, ​​avea o formă nestructurată, dar după această valoare, are o formă clară de coborâre liniară. În consecință, presupunerile modelului au fost proaste și, de asemenea, am avut un „debordare” asupra valorilor prezise pentru că, în realitate, Rating nu poate fi mai mare de 10.

În analiza anterioară a datelor IMDb, cu o cantitate mai mare de Votes , Rating sa îmbunătățit; totuși, acest lucru s-a întâmplat în câteva cazuri și pentru un număr uriaș de voturi. Acest lucru ar putea cauza distorsiuni în model și poate produce acest depășire a Rating . Pentru a verifica acest lucru, am evaluat ce s-ar întâmpla cu același model, eliminând câmpul Votes .

Graficul de dispersie a valorilor reziduale vs. prezise atunci când câmpul Voturi este eliminat.

Asta a fost mult mai bine! Avea o formă mai clară, nestructurată, fără valori prezise de preaplin. Câmpul Votes depinde și de activitatea recenzenților și nu este o caracteristică a filmelor, așa că am decis să renunț și la acest câmp. Erorile după eliminarea acestuia au fost 1,06 pe RMSE și 0,81 pe MAE — puțin mai rău, dar nu atât de mult, și am preferat să am presupuneri și o selecție de caracteristici mai bune decât o performanță puțin mai bună pe setul meu de antrenament.

Analiza datelor IMDb: Cât de bine funcționează alte modele?

Următorul lucru pe care l-am făcut a fost să încerc diferite modele pentru a analiza care au funcționat mai bine. Pentru fiecare model, am folosit tehnica de căutare aleatorie pentru a optimiza valorile hiperparametrului și validarea încrucișată de 5 ori pentru a preveni părtinirea modelului. In tabelul urmator sunt estimate erorile obtinute:

Model RMSE MAE
Retea neurala 1,044596 0,795699
Amplificare 1,046639 0,7971921
Arborele de inferență 1,05704 0,8054783
GAM 1,0615108 0,8119555
Model liniar 1,066539 0,8152524
Reg. Linear Penalizat 1,066607 0,8153331
KNN 1,066714 0,8123369
Creasta Bayesiană 1,068995 0,8148692
SVM 1,073491 0,8092725

După cum puteți vedea, toate modelele funcționează similar, așa că am folosit unele dintre ele pentru a analiza puțin mai multe date. Am vrut să știu influența fiecărui câmp asupra ratingului. Cel mai simplu mod de a face acest lucru este prin observarea parametrilor modelului liniar. Dar pentru a evita distorsiunile asupra lor anterior, am scalat datele și apoi am reantrenat modelul liniar. Greutățile au fost ca în imaginea de aici.

Un grafic cu bare cu greutățile modelului liniar variind de la aproape -0,25 pentru Horror până la aproape 0,25 pentru Drama.

În acest grafic, este clar că două dintre cele mai importante variabile sunt Horror și Drama , unde prima are un impact negativ asupra ratingului, iar a doua este pozitiv. Există și alte domenii care au un impact pozitiv, cum ar fi Animation și Biography , în timp ce Action , Sci-Fi și Year au un impact negativ. Mai mult, Principal_Genre nu are un impact considerabil, așa că este mai important ce genuri are un film decât care este principalul.

Cu modelul aditiv generalizat (GAM), am putut observa și un impact mai detaliat pentru variabilele continue, care în acest caz a fost Year .

Un grafic al Anului vs. s(Anul) folosind modelul aditiv generalizat. Valoarea s (Anul) urmează o curbă care începe aproape de 0,6 pentru 1970, atingând nivelul minim sub 0 în 2010 și crescând până la aproape 0 din nou până în 2019.

Aici, avem ceva mai interesant. Deși era adevărat că pentru filmele recente, ratingul tinde să fie mai mic, efectul nu a fost constant. Are cea mai scăzută valoare în 2010 și apoi pare să se „recupereze”. Ar fi intrigant să aflăm ce s-a întâmplat după acel an în producția de filme care ar fi putut produce această schimbare.

Cel mai bun model au fost rețelele neuronale, care aveau cel mai mic RMSE și MAE, dar după cum puteți vedea, niciun model nu a atins performanța perfectă. Dar aceasta nu a fost o veste rea în ceea ce privește obiectivul meu. Informațiile disponibile îmi permit să estimez performanța oarecum bine, dar nu sunt suficiente. Există și alte informații pe care nu le-am putut obține de la IMDb, care fac ca Rating să difere de scorul așteptat în funcție de Genre , Timp de Runtime și Year . Poate fi interpretarea unui actor, scenarii de film, fotografie sau multe alte lucruri.

Din punctul meu de vedere, aceste alte caracteristici sunt cele care contează cu adevărat în alegerea ce să vizionezi. Nu-mi pasă dacă un anumit film este o dramă, acțiune sau science fiction. Îmi doresc să aibă ceva special, ceva care să mă facă să mă distrez, să învăț ceva, să reflectez la realitate sau pur și simplu să mă distreze.

Așa că am creat o evaluare nouă, rafinată, luând ratingul IMDb și scăzând ratingul prezis pentru cel mai bun model. Făcând acest lucru, am eliminat efectul Genre , Runtime și Year și am păstrat aceste alte informații necunoscute care sunt mult mai importante pentru mine.

Alternativa sistemului de evaluare IMDb: Rezultatele finale

Să vedem acum care sunt cele mai bune 10 filme după noua mea evaluare față de ratingul real IMDb:

IMDb

Titlu Gen Evaluare IMDb Evaluare rafinată
Ko to tamo peva Aventură, comedie, dramă 8.9 1,90
Dipu Numărul 2 Aventură, familie 8.9 3.14
El señor de los anillos: El retorno del rey Aventură, dramă, fantezie 8.9 2,67
El señor de los anillos: La comunidad del anillo Aventură, dramă, fantezie 8.8 2,55
Anbe Sivam Aventură, comedie, dramă 8.8 2.38
Hababam Sinifi Tatilde Aventură, comedie, dramă 8.7 1,66
El señor de los anillos: Las dos torres Aventură, dramă, fantezie 8.7 2.46
Chemarea lui Mudras Aventură, Dramă, Romantism 8.7 2.34
Interestelar Aventură, Dramă, Sci-Fi 8.6 2,83
Volver al futuro Aventură, Comedie, Sci-Fi 8.5 2.32

A mea

Titlu Gen Evaluare IMDb Evaluare rafinată
Dipu Numărul 2 Aventură, familie 8.9 3.14
Interestelar Aventură, Dramă, Sci-Fi 8.6 2,83
El señor de los anillos: El retorno del rey Aventură, dramă, fantezie 8.9 2,67
El señor de los anillos: La comunidad del anillo Aventură, dramă, fantezie 8.8 2,55
Kolah ghermezi va pesar khale Aventură, Comedie, Familie 8.1 2.49
El señor de los anillos: Las dos torres Aventură, dramă, fantezie 8.7 2.46
Anbe Sivam Aventură, comedie, dramă 8.8 2.38
Los caballeros de la mesa cuadrada Aventură, comedie, fantezie 8.2 2.35
Chemarea lui Mudras Aventură, Dramă, Romantism 8.7 2.34
Volver al futuro Aventură, Comedie, Sci-Fi 8.5 2.32

După cum puteți vedea, podiumul nu s-a schimbat radical. Acest lucru era de așteptat pentru că RMSE nu era atât de mare, iar aici ne uităm la vârf. Să vedem ce s-a întâmplat cu cei 10 de jos:

IMDb

Titlu Gen Evaluare IMDb Evaluare rafinată
Holnap tortent - Un film bulvar nagy Comedie, mister 1 -4,86
Cumali Ceber: Allah Seni Alsin Comedie 1 -4,57
Badang Comedie, Fantezie 1 -4,74
Yyyreek!!! Kosmiczna nominacja Comedie 1.1 -4,52
Mândru american Dramă 1.1 -5,49
Maronii: Războiul de Independență Acțiune, Sci-Fi, Război 1.1 -3,71
Weekend-ul Trăiește Comedie, groază, mister 1.2 -4,53
Bolivar: el erou Animație, biografie 1.2 -5,34
Rise of the Black Bat Acțiune, Sci-Fi 1.2 -3,65
Hatsukoi Dramă 1.2 -5,38

A mea

Titlu Gen Evaluare IMDb Evaluare rafinată
Mândru american Dramă 1.1 -5,49
Moș Crăciun și iepurașul de înghețată Familie, Fantezie 1.3 -5,42
Hatsukoi Dramă 1.2 -5,38
Reis Biografie, dramă 1.5 -5,35
Bolivar: el erou Animație, biografie 1.2 -5,34
Hanum & Rangga: Faith & The City Dramă, romantism 1.2 -5,28
După sezonul trecut Animație, Dramă, Sci-Fi 1.7 -5,27
Barschel - Mord în Genf Dramă 1.6 -5,23
Rasshu raifu Dramă 1.5 -5.08
Kamifusen Dramă 1.5 -5.08

Același lucru s-a întâmplat și aici, dar acum putem vedea că în cazul rafinat apar mai multe drame decât în ​​cele IMDb, ceea ce arată că unele drame ar putea fi supra-comandate doar pentru că sunt drame.

Poate cel mai interesant podium de văzut sunt cele 10 filme cu cea mai mare diferență între scorul sistemului de rating IMDb și cel rafinat al meu. Aceste filme sunt cele care au mai multă greutate pe caracteristicile lor necunoscute și fac filmul mult mai bun (sau mai rău) decât se aștepta pentru caracteristicile sale cunoscute.

Titlu Evaluare IMDb Evaluare rafinată Diferență
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
El baile 7.8 0,00 7,80
Moș Crăciun și cei trei urși 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

Dacă aș fi regizor de film și ar trebui să produc un film nou, după ce am făcut toată această analiză a datelor IMDb, aș putea avea o idee mai bună despre ce fel de film să fac pentru a avea un clasament IMDb mai bun. Ar fi o lungă dramă de biografie animată, care ar fi un remake al unui film vechi, de exemplu, Amadeus. Probabil că asta ar asigura un clasament bun IMDb, dar nu sunt sigur de profituri...

Ce părere aveți despre filmele care se încadrează în această nouă măsură? Iti plac? Sau le preferi pe cele originale? Anunță-mă în comentariile de mai jos!