Estrellas realineadas: mejorando el sistema de calificación de IMDb

Publicado: 2022-03-11

Los espectadores de películas a veces usan clasificaciones para seleccionar qué ver. Una vez que hice esto yo mismo, noté que muchas de las películas mejor clasificadas pertenecían al mismo género: drama. Esto me hizo pensar que el ranking podría tener algún tipo de sesgo de género.

Estaba en uno de los sitios más populares para los amantes del cine, IMDb, que cubre películas de todo el mundo y de cualquier año. Su famoso ranking se basa en una gran colección de reseñas. Para este análisis de datos de IMDb, decidí descargar toda la información disponible allí para analizarla e intentar crear una clasificación nueva y refinada que considerara una gama más amplia de criterios.

El sistema de calificación de IMDb: filtrado de datos de IMDb

Pude descargar información de 242.528 películas estrenadas entre 1970 y 2019 inclusive. La información que me dio IMDb para cada uno fue: Rank , Title , ID , Year , Certificate , Rating , Votes , Metascore , Synopsis , Tiempo de Runtime , Genre , Gross y Año de SearchYear .

Para tener suficiente información para analizar, necesitaba un número mínimo de reseñas por película, así que lo primero que hice fue filtrar las películas con menos de 500 reseñas. Esto dio como resultado un conjunto de 33.296 películas, y en la siguiente tabla, pudimos ver un análisis resumido de sus campos:

Campo Escribe Recuento nulo Significar Mediana
Rango Factor 0
Título Factor 0
IDENTIFICACIÓN Factor 0
Año En t 0 2003 2006
Certificado Factor 17587
Clasificación En t 0 6.1 6.3
Votos En t 0 21040 2017
Metascore En t 22350 55.3 56
Sinopsis Factor 0
tiempo de ejecución En t 132 104.9 100
Género Factor 0
Bruto Factor 21415
Año de búsqueda En t 0 2003 2006

Nota: En R, Factor se refiere a cadenas. Rank y Gross son así en el conjunto de datos original de IMDb debido a que tienen, por ejemplo, miles de separadores.

Antes de comenzar a refinar la puntuación, tuve que analizar más a fondo este conjunto de datos. Para empezar, los campos Certificate , Metascore y Gross tenían más del 50 % de valores nulos, por lo que no son útiles. El Rank depende intrínsecamente del Rating (la variable a refinar), por lo tanto, no contiene ninguna información útil. Lo mismo ocurre con el ID , ya que es un identificador único para cada película.

Finalmente, Title y Synopsis son campos de texto cortos. Podría ser posible usarlos a través de alguna técnica de PNL, pero debido a que es una cantidad limitada de texto, decidí no tomarlos en cuenta para esta tarea.

Después de este primer filtro, me quedé con Genre , Rating , Year , Votes , SearchYear y Runtime . En el campo Genre , había más de un género por película, separados por comas. Entonces, para capturar el efecto aditivo de tener muchos géneros, lo transformé usando una codificación one-hot. Esto dio como resultado 22 nuevos campos booleanos, uno para cada género, con un valor de 1 si la película tenía este género o 0 en caso contrario.

Análisis de datos de IMDb

Para ver las correlaciones entre variables, calculé la matriz de correlación.

Una matriz de correlación entre todas las columnas originales restantes y las columnas del nuevo género. Los números cercanos a cero dan como resultado espacios en blanco en la cuadrícula. Las correlaciones negativas dan como resultado puntos rojos y las positivas, puntos azules. Los puntos son más grandes y más oscuros cuanto más fuerte es la correlación. (Los aspectos destacados visuales se describen en el texto del artículo principal).

Aquí, un valor cercano a 1 representa una fuerte correlación positiva y valores cercanos a -1 una fuerte correlación negativa. Por este gráfico, hice muchas observaciones:

  • Year y SearchYear están absolutamente correlacionados. Esto significa que probablemente tengan los mismos valores y que tener ambos es lo mismo que tener solo uno, así que mantuve solo Year .
  • Algunos campos esperaban correlaciones positivas, tales como:
    • Music con Musical
    • Action con Adventure
    • Animation con Adventure
  • Lo mismo para las correlaciones negativas:
    • Drama contra Horror
    • Comedy contra Horror
    • Horror contra Romance
  • Relacionado con la variable clave ( Rating ) noté:
    • Tiene una correlación positiva e importante con Runtime y Drama .
    • Tiene una menor correlación con Votes , Biography e History .
    • Tiene una correlación negativa considerablemente con Horror y una negativa menor con Thriller , Action , Sci-Fi y Year .
    • No tiene otras correlaciones significativas.

Parecía ser que los dramas largos estaban bien calificados, mientras que las películas de terror cortas no. En mi opinión, no tenía los datos para verificarlo, no se correlacionaba con el tipo de películas que generan más ganancias, como las películas de Marvel o Pixar.

Puede ser que las personas que votan en este sitio no sean los mejores representantes del criterio general de personas. Tiene sentido porque aquellos que se toman el tiempo de enviar reseñas en el sitio son probablemente algún tipo de críticos de cine con un criterio más específico. De todos modos, mi objetivo era eliminar el efecto de las características comunes de las películas, así que traté de eliminar este sesgo en el proceso.

Distribución de géneros en el sistema de calificación de IMDb

El siguiente paso fue analizar la distribución de cada género sobre el rating. Para hacer eso, creé un nuevo campo llamado Principal_Genre basado en el primer género que apareció en el campo Genre original. Para visualizar esto, hice un gráfico de violín.

Un diagrama de violín que muestra la distribución de calificaciones para cada género.

Una vez más, pude ver que Drama se correlaciona con calificaciones altas y Horror con calificaciones más bajas. Sin embargo, este gráfico también reveló otros géneros con buenas puntuaciones: Biography y Animation . El hecho de que sus correlaciones no aparecieran en la matriz anterior probablemente se debió a que había muy pocas películas con estos géneros. A continuación, creé un gráfico de barras de frecuencia por género.

Un gráfico de barras que muestra cuántas películas de cada género había en la base de datos. Comedia, Drama y Acción tenían frecuencias alrededor de 6000 o más; Crimen y Terror superaron los 2.000; el resto eran menos de 1.000.

Efectivamente, Biography y Animation tuvieron muy pocas películas, al igual que Sport y Adult . Por esta razón, no están muy bien correlacionados con Rating .

Otras variables en el sistema de calificación de IMDb

Después de eso, comencé a analizar las covariables continuas: Year , Votes y Runtime . En el diagrama de dispersión, puede ver la relación entre Rating y Year .

Un diagrama de dispersión de calificación y años.

Como vimos anteriormente, el Year parecía tener una correlación negativa con la Rating : a medida que aumenta el año, la variación de la calificación también aumenta, alcanzando valores más negativos en las películas más nuevas.

A continuación, hice el mismo gráfico para Votes .

Un diagrama de dispersión de calificaciones y votos.

Aquí, la correlación fue más clara: cuanto mayor sea el número de votos, mayor será la clasificación. Sin embargo, la mayoría de las películas no tuvieron tantos votos y, en este caso, la Rating tuvo una variación mayor.

Por último, observé la relación con Runtime .

Un gráfico de dispersión entre la calificación y el tiempo de ejecución.

Nuevamente, tenemos un patrón similar pero aún más fuerte: los tiempos de ejecución más altos significan calificaciones más altas, pero hubo muy pocos casos de tiempos de ejecución altos.

Refinamientos del sistema de calificación de IMDb

Después de todo este análisis, tenía una mejor idea de los datos con los que estaba trabajando, así que decidí probar algunos modelos para predecir las calificaciones en función de estos campos. Mi idea era que la diferencia entre las predicciones de mi mejor modelo y la Rating real eliminaría la influencia de las características comunes y reflejaría las características particulares que hacen que una película sea mejor que otras.

Empecé con el modelo más simple, el lineal. Para evaluar qué modelo funcionó mejor, observé los errores de la raíz cuadrada media (RMSE) y la media absoluta (MAE). Son medidas estándar para este tipo de tareas. Además, están en la misma escala que la variable predicha, por lo que son fáciles de interpretar.

En este primer modelo, el RMSE fue de 1,03 y el MAE de 0,78. Pero los modelos lineales suponen independencia sobre los errores, mediana cero y varianza constante. Si esto es correcto, el gráfico de "valores residuales frente a valores predichos" debería verse como una nube sin estructura. Así que decidí graficarlo para corroborar eso.

Gráfico de dispersión de valores residuales frente a predichos.

Pude ver que hasta 7 en los valores predichos, tenía una forma no estructurada, pero después de este valor, tiene una forma de descenso lineal clara. En consecuencia, las suposiciones del modelo eran malas, y además, tuve un “desbordamiento” de los valores predichos porque en realidad, el Rating no puede ser más de 10.

En el anterior análisis de datos de IMDb, con una mayor cantidad de Votes , el Rating mejoró; sin embargo, esto sucedió en algunos casos y por una gran cantidad de votos. Esto podría causar distorsiones en el modelo y producir este desbordamiento de Rating . Para comprobar esto, evalué lo que sucedería con este mismo modelo, eliminando el campo Votes .

Diagrama de dispersión de valores residuales frente a valores pronosticados cuando se elimina el campo Votos.

¡Esto fue mucho mejor! Tenía una forma más clara, no estructurada, sin valores previstos de desbordamiento. El campo Votes también depende de la actividad de los revisores y no es una característica de las películas, por lo que decidí descartar este campo también. Los errores después de eliminarlo fueron 1,06 en RMSE y 0,81 en MAE, un poco peor, pero no tanto, y preferí tener mejores suposiciones y selección de funciones que un rendimiento un poco mejor en mi conjunto de entrenamiento.

Análisis de datos de IMDb: ¿Qué tan bien funcionan otros modelos?

Lo siguiente que hice fue probar diferentes modelos para analizar cuál funcionaba mejor. Para cada modelo, utilicé la técnica de búsqueda aleatoria para optimizar los valores de los hiperparámetros y la validación cruzada de 5 veces para evitar el sesgo del modelo. En la siguiente tabla se muestran los errores estimados obtenidos:

Modelo RMSE MAE
Red neuronal 1.044596 0.795699
impulsar 1.046639 0.7971921
Árbol de inferencia 1.05704 0.8054783
GAM 1.0615108 0.8119555
Modelo lineal 1.066539 0.8152524
Reg. lineal penalizado 1.066607 0.8153331
KNN 1.066714 0.8123369
Cresta bayesiana 1.068995 0.8148692
MVS 1.073491 0.8092725

Como puede ver, todos los modelos funcionan de manera similar, así que usé algunos de ellos para analizar un poco más de datos. Quería saber la influencia de cada campo sobre la calificación. La forma más sencilla de hacerlo es observando los parámetros del modelo lineal. Pero para evitar distorsiones en ellos anteriormente, escalé los datos y luego volví a entrenar el modelo lineal. Los pesos eran como se muestra aquí.

Un gráfico de barras de pesos de modelos lineales que van desde casi -0,25 para Terror hasta casi 0,25 para Drama.

En este gráfico, queda claro que dos de las variables más importantes son Horror y Drama , donde la primera tiene un impacto negativo en la calificación y la segunda positiva. También hay otros campos que tienen un impacto positivo, como Animation y Biography , mientras que Action , Sci-Fi y Year tienen un impacto negativo. Además, Principal_Genre no tiene un impacto considerable, por lo que es más importante qué géneros tiene una película que cuál es el principal.

Con el modelo aditivo generalizado (GAM), también pude ver un impacto más detallado para las variables continuas, que en este caso fue el Year .

Un gráfico de Year vs. s(Year) utilizando el modelo aditivo generalizado. El valor s(Año) sigue una curva que comienza cerca de 0,6 para 1970, toca fondo por debajo de 0 en 2010 y aumenta hasta cerca de 0 nuevamente en 2019.

Aquí tenemos algo más interesante. Si bien era cierto que para las películas recientes, la calificación tendía a ser más baja, el efecto no fue constante. Tiene el valor más bajo en 2010 y luego parece “recuperarse”. Sería intrigante descubrir qué sucedió después de ese año en la producción de películas que pudo haber producido este cambio.

El mejor modelo fueron las redes neuronales, que tenían el RMSE y el MAE más bajos, pero como puede ver, ningún modelo alcanzó un rendimiento perfecto. Pero esto no era una mala noticia en términos de mi objetivo. La información disponible me permite estimar algo bien el rendimiento, pero no es suficiente. Hay otra información que no pude obtener de IMDb que hace que la Rating difiera de la puntuación esperada según el Genre , el tiempo de Runtime y el Year . Puede ser la actuación de un actor, guiones de películas, fotografía o muchas otras cosas.

Desde mi perspectiva, estas otras características son las que realmente importan al seleccionar qué ver. No me importa si una película dada es un drama, acción o ciencia ficción. Quiero que tenga algo especial, algo que me haga pasar un buen rato, me haga aprender algo, me haga reflexionar sobre la realidad, o simplemente me entretenga.

Así que creé una calificación nueva y refinada tomando la calificación de IMDb y restando la calificación predicha del mejor modelo. Al hacer esto, estaba eliminando el efecto de Genre , Tiempo de Runtime y Year y manteniendo esta otra información desconocida que es mucho más importante para mí.

Alternativa del sistema de calificación de IMDb: los resultados finales

Veamos ahora cuáles son las 10 mejores películas según mi nueva calificación versus la calificación real de IMDb:

IMDb

Título Género Calificación de IMDb Calificación refinada
Ko a tamo peva Aventura, Comedia, Drama 8.9 1,90
dipu número 2 Aventura,Familia 8.9 3.14
El señor de los anillos: El retorno del rey Aventura,Drama,Fantasía 8.9 2.67
El señor de los anillos: La comunidad del anillo Aventura,Drama,Fantasía 8.8 2.55
anbe sivam Aventura, Comedia, Drama 8.8 2.38
Hababam Sinifi Tatilde Aventura, Comedia, Drama 8.7 1.66
El señor de los anillos: Las dos torres Aventura,Drama,Fantasía 8.7 2.46
Mudras llamando Aventura,Drama,Romance 8.7 2.34
interesar Aventura,Drama,Ciencia ficción 8.6 2.83
volver al futuro Aventura, Comedia, Ciencia Ficción 8.5 2.32

Mío

Título Género Calificación de IMDb Calificación refinada
dipu número 2 Aventura,Familia 8.9 3.14
interesar Aventura,Drama,Ciencia ficción 8.6 2.83
El señor de los anillos: El retorno del rey Aventura,Drama,Fantasía 8.9 2.67
El señor de los anillos: La comunidad del anillo Aventura,Drama,Fantasía 8.8 2.55
Kolah ghermezi va a pesar khale Aventura,Comedia,Familia 8.1 2.49
El señor de los anillos: Las dos torres Aventura,Drama,Fantasía 8.7 2.46
anbe sivam Aventura, Comedia, Drama 8.8 2.38
Los caballeros de la mesa cuadrada Aventura, Comedia, Fantasía 8.2 2.35
Mudras llamando Aventura,Drama,Romance 8.7 2.34
volver al futuro Aventura, Comedia, Ciencia Ficción 8.5 2.32

Como podéis ver, el podio no cambió radicalmente. Esto era de esperar porque el RMSE no era tan alto, y aquí estamos viendo el tope. Veamos qué pasó con los 10 últimos:

IMDb

Título Género Calificación de IMDb Calificación refinada
Holnap tortent - Un bulvarfilm nagy Comedia, Misterio 1 -4.86
Cumali Ceber: Allah Seni Alsin Comedia 1 -4.57
Badang Comedia,Fantasía 1 -4.74
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ Kosmiczna nominacja Comedia 1.1 -4.52
Americano orgulloso Drama 1.1 -5.49
Casacas marrones: guerra de independencia Acción, ciencia ficción, guerra 1.1 -3.71
El fin de semana que vive Comedia, Terror, Misterio 1.2 -4.53
Bolívar: el héroe Animación,Biografía 1.2 -5.34
El ascenso del murciélago negro Acción, ciencia ficción 1.2 -3.65
hatsukoi Drama 1.2 -5.38

Mío

Título Género Calificación de IMDb Calificación refinada
Americano orgulloso Drama 1.1 -5.49
Santa y el conejito de los helados Familia,Fantasía 1.3 -5.42
hatsukoi Drama 1.2 -5.38
reyes Biografía,Drama 1.5 -5.35
Bolívar: el héroe Animación,Biografía 1.2 -5.34
Hanum y Rangga: Fe y la ciudad Drama,Romance 1.2 -5.28
Después de la última temporada Animación,Drama,Ciencia ficción 1.7 -5.27
Barschel - Mord en Genf Drama 1.6 -5.23
Rasshu raifu Drama 1.5 -5.08
Kamifusen Drama 1.5 -5.08

Aquí sucedió lo mismo, pero ahora podemos ver que aparecen más dramas en el caso refinado que en IMDb, lo que muestra que algunos dramas podrían estar sobrevalorados solo por ser dramas.

Tal vez el podio más interesante para ver son las 10 películas con la mayor diferencia entre el puntaje del sistema de clasificación de IMDb y el mío refinado. Estas películas son las que tienen más peso en sus características desconocidas y hacen que la película sea mucho mejor (o peor) de lo esperado por sus características conocidas.

Título Calificación de IMDb Calificación refinada Diferencia
Kanashimi no beradonna 7.4 -0.71 8.11
Jesucristo superestrella 7.4 -0.69 8.09
Pink Floyd la pared 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
Santa y los tres osos 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

Si yo fuera un director de cine y tuviera que producir una nueva película, después de hacer todo este análisis de datos de IMDb, podría tener una mejor idea de qué tipo de película hacer para tener una mejor clasificación en IMDb. Sería un largo drama biográfico animado que sería una nueva versión de una película antigua, por ejemplo, Amadeus. Probablemente esto aseguraría una buena clasificación en IMDb, pero no estoy seguro de las ganancias...

¿Qué opinas de las películas que se clasifican en esta nueva medida? ¿Te gustan? ¿O prefieres los originales? ¡Déjame saber abajo en los comentarios!