Hito 3 Hito 2 Hito 1 Home

Hito 2: Caracterización y análisis de películas de IMDB

CC5206 Semestre Primavera 2021

Integrantes: Alan Acevedo, Camila Labarca, Franco Miranda, Julia Paredes

Grupo: 4

Profesores: Andrés Abeliuk, Hernán Sarmiento

Auxiliares: Alison Fernández, Cinthia Sánchez

Fecha de entrega: 10 de noviembre de 2021

Introducción

En la última década, el mercado de las películas y series ha crecido enormemente gracias a los avances tecnológicos y a plataformas online como Netflix, Hulu, Amazon, Disney+, entre otras. Este tema puede ser bastante interesante de analizar ya que prácticamente todas las personas están familiarizadas con éste ámbito.

El objetivo de este proyecto es aplicar distintas técnicas de minería de datos para realizar un estudio sobre un dataset obtenido de la Internet Movie Database que contiene información sobre películas. Los resultados le podrían ser de bastante utilidad a aspirantes en el mundo del cine, pues les daría una amplia imagen de la industria cinematográfica, y junto con ello entender su comportamiento.

Mejoras al Hito 1

Las mejoras que se realizarán al Hito 1 son principalmente 2. La primera, es que no solo se tendrá en cuenta la información de las películas, sino que también de los actores, directores y escritores que participaron en ellas, por lo que a la tabla que se había obtenido en el Hito 1 se le agregará esta información. Y la segunda, es que habiendo actualizado el dataset se refinarán las preguntas planteadas al final del Hito 1.

Dataset

Se trabajó con el dataset de IMDB, el cual está distribuido en 7 tablas en formato TSV, de las cuales se ocuparán cinco.

La tabla title_basics contiene varios atributos de interés sobre títulos:

La tabla title_ratings contiene dos atributos interesantes:

La tabla title_crew contiene dos atributos de interés:

La tabla title_principals tiene cinco atributos relevantes:

La tabla name_basics contiene cinco atributos importantes:

Se importan las librerías necesarias.

Se importan los datasets necesarios.

Luego, los atributos que correspondan se cambian a categóricos o a númericos

title_basics tiene 8.246.400 filas.

Para ver cuántos elementos sin valores asignados hay en las tablas se usa la siguiente línea:

La columna runtimeMinutes tiene 5.920.699 valores no asignados, lo que corresponde a un gran porcentaje del total de filas. También hay 971.886 valores nulos en startYear. Estos atributos son de interés y podrían ser usados en el estudio, por lo que se hará una limpieza del dataset.

Se realizará un estudio de los datos relacionados a películas, por lo que se filtrará para quitar los títulos de tipo documental o cortometraje, y además solo se considerarán las películas con géneros válidos.

El nuevo dataframe tiene 516.492 filas.

Ahora se puede volver a ver cuantos elementos tienen valores no asignados.

Después de la limpieza de valores nulos, title_basics tiene 340.916 filas. Sigue siendo un número importante de datos que pueden ser estudiados por lo que no es necesario considerar los valores nulos.

Como ya se filtró según la columna titleType, ésta se elimina del dataframe. Además, endYear es siempre \N para las películas, por lo que no entregan información y se eliminan del dataframe. Por último se elimina la columna originalTitle ya que no es de interés (es el nombre de la película en el idioma original).

Se hace un join de las tablas only_movies y title_ratings para que cada película tenga su valoración promedio y cantidad de valoraciones.

Columnas nuevas

Se crea una nueva tabla que será el join de movies y title_crew por la variable tconst, el identificador de cada película.

Se tiene que trabajar un poco para que aparezcan los nombres de los directores.

Como se obtuvieron los nombres de los directores para cada película, basta unir esta tabla con la original.

Se hace el mismo proceso anterior para los escritores.

Se unen las tablas y se elimina una columna innecesaria

Falta vincular los actores con sus películas. Para ello, se debe trabajar de una forma distinta pues el formato de la tabla en donde se encuentran los actores es distinto al resto.

Se muestran todos los actores para una película en concreto, por lo tanto, hay que juntar las tablas, eliminar las filas con algún NA (ya sea de director, escritor o actor) y con esto se tiene toda la información.

Se puede ver que efectivamente no hay filas con algún valor nulo.

No hay nulos en ninguna columna, por lo que el dataframe está completamente limpio.

Luego de haber limpiado el dataset, se puede hacer un summary para analizar si hay algún dato inconsistente.

En startYear se muestran años desde 1906 hasta el año actual, no existen películas en años futuros por lo que está correcta esta columna. En runtimeMinutes existen películas con 1 minuto de duración y con más de 43 mil minutos de duración, estos valores posiblemente sean outliers y entonces se pueden trabajar sin problemas. Los valores de la columna averageRating se mueven entre 1 y 10 lo que es consistente. Por último, la columna numVotes se mueve entre valores positivos y entonces es consistente.

A partir de ahora solo se trabajará con esta tabla, por lo cual se reemplazará la variable movies y se liberará la memoria ocupada por la importación de las otras tablas.

En la tabla movies hay una columna “genres” que lista hasta 3 géneros de una misma película, éstos se pueden separar para hacer más sencillo el estudio. Se considerará el primer género como el principal.

Ahora se analizarán las películas exitosas y películas muy malas. Para ello, se mostrarán los deciles que corresponden a rating y número de votos. Con ello, se definirá una película exitosa la que esté sobre el decil 9 en ambas categorías, y una película muy mala será aquella bajo el decil 1 para rating.

Vistos los deciles, se define una película exitosa como toda película que tiene un rating promedio de al menos 7.5 y una cantidad de votos mayor o igual a 2481. También, se define una película muy mala como toda película que tenga un rating inferior o igual a 4.3

A partir de esto, se puede ver qué porcentaje de películas del total puede considerarse exitosa.

Solo el 1.67% de películas puede considerarse exitosa, que corresponde a un porcentaje muy bajo, lo que puede hablar de que es muy difícil crear una película y que ésta sea exitosa.

También, se puede ver qué porcentaje del total de películas corresponde a películas muy malas.

Un 10.77% de las películas es muy mala, un porcentaje bastante mayor al de películas exitosas, lo que habla de que es mucho más sencillo crear una película muy mala a una que tenga éxito.

Se puede analizar cuantas películas exitosas y cuantas muy malas tienen contenido explícito:

Hay muchas películas malas en comparación a las exitosas que tienen contenido explícito, lo que puede significar que las películas con contenido explícito tienen mayor probabilidad de no tener éxito. Esto puede deberse a la misma razón mencionada anteriormente, es decir, que estas películas están hechas para un público más pequeño y específico, por lo que no serán bien recibidas por todos y todas.

Luego de realizar el análisis anterior, se puede consultar sobre un top 10 de películas mejor y peor calificadas a partir de 1970, esto último para solo considerar películas contemporáneas.

Podemos notar que tanto en las mejores como en las peores hay muchas películas de los últimos años. Esto podría deberse a que en los últimos años se han votado las películas que han salido y esos datos se han guardado en el dataset de forma correcta, lo que puede no haber sido así para películas más antiguas.

A continuación se definen funciones que pueden ser útiles para el análisis de los datos.

Luego de haber definido las funciones, se pueden realizar algunas consultas interesantes, como ver qué porcentaje de películas exitosas o muy malas corresponde a cierto género.

Porcentaje de películas de un género que son exitosas.

Porcentaje de películas de un género que son muy malas.

Comparando ambos resultados, lo primero que se destaca es que no hay películas para adultos exitosas y sí lo hay en películas muy malas, lo que confirma lo dicho en un punto anterior. También, en ambos casos el género “Drama” es el que más aparece, seguido por “Comedy”, y por "Romance" en las películas exitosas y “Action” en las películas malas, esto puede dar a entender que se realizan muchas películas de estos géneros porque son géneros populares, y por ende hay muchas que son tanto exitosas como muy malas. Se puede notar que hay un alto porcentaje de películas del género “Romance” que son exitosas, sin embargo este número disminuye bastante en las películas muy malas, lo mismo ocurre con “Crime”.

Se realizará un gráfico de densidad que mostrará cómo se distribuyen los rating para todas las películas.

Analizando el gráfico junto con el promedio y desviación estándar para el rating, se puede notar que el gráfico se asemeja bastante a una distribución normal con media 6 y desviación estándar 1.28. El valor de la densidad aumenta levemente hasta llegar a su máximo, para luego caer rápidamente, esto significa que hay muy poca cantidad de películas con rating sobre el promedio en comparación a películas con rating bajo el promedio.

Se crearán boxplots de ratings para géneros utilizando dos métodos. Primero, se creará un boxplot si es que la película es de un único género, y segundo, en caso de que el título esté asociado a más de un género, se creará un boxplot solo considerando el primer género de la lista, esto para ver si hay mayores diferencias a cuando el género es único o no. Se analizará para los géneros “Action”, “Drama” y “Comedy” y se diferenciará por contenido explícito.

Boxplots para “Action”

En este caso, no se ven cambios respecto a cuando “Action” es el género principal de una película o no.

Boxplots para “Drama”

En este caso, si la película no es para adultos no se ven cambios, pero de serlo, la distribución cambia, ésta se traslada un poco hacia abajo, lo que significa que el primer, segundo y tercer cuartil de ratings son más bajos.

Boxplots para “Comedy”

En este último caso se ven cambios tanto si la película es para adultos como si no. Cuando no es para adultos, el tercer cuartil se desplaza un poco para abajo y hay más outliers superiores, mientras que cuando es para adultos, el boxplot se desplaza bastante hacia abajo, y se puede concluir lo mismo que para el género anterior.

Se pueden realizar gráficos de dispersión para analizar la relación entre ciertas variables. En particular, se analizará la relación entre rating y duración, y rating y cantidad de votos para los géneros “Action”, “Drama”, “Comedy”.

Gráficos de dispersión entre rating y duración.

Luego de realizar el gráfico de dispersión entre rating y duración de las películas para los 3 géneros, se puede notar que los 3 son bastante similiares, aunque en el caso de "Drama" hay varios puntos con un rating relativamente alto que tienen mayor duración. Para ninguno de los 3 casos parece haber una relación clara entre las variables.

Gráficos de duración entre rating y cantidad de votos.

Con los gráficos de dispersión entre rating y cantidad de votos se puede ver una clara tendencia, a partir del rating 5.0 aproximadamente comienza a haber un mayor número de votos, lo cual hace sentido, pues si una película es bien calificada más gente se verá interesada en seguir votándola.

Con los valores numéricos del dataset se puede crear una matriz de correlación. Para ver si el título de la película tiene alguna correlación con otra variable se usará el largo del título.

La mayor correlación que existe es entre el rating y el número de votos, lo que es consistente con lo dicho anteriormente, pero aun así sigue siendo un valor extremadamente pequeño (ni siquiera 0.1). Entonces, se puede decir que todas las variables son prácticamente independientes entre sí.

Reformulación de preguntas y problemas

Luego de haber agregado las columnas correspondientes a directores, escritores y actores para cada una de las películas, ahora se reformularán las preguntas y problemas. Para estas preguntas se definió éxito como la valoración y popularidad como la cantidad de votos.

Propuesta experimental

Pre-procesamiento de los datos

Se etiqueta el rating promedio en cuatro categorías, donde 0 es "Horrible" y 3 es "Muy Bueno":

Luego, se etiquetan los directores y géneros. Para ello, se crea una tabla en donde, si una película tiene m directores y n géneros, esa fila se separará en m*n filas en la nueva tabla.

Finalmente, se juntan estas etiquetas con las etiquetas de rating.

Clasificación de datos

Pregunta 1

Luego de haber etiquetado los datos necesarios, se clasificarán los datos utilizando varios métodos y calculando su precision, recall y F1-Score. Si alguno de estos valores entrega un valor mayor o igual a un 80% se dirá que sí se puede predecir.

La idea a seguir será realizar un cierto número de tests con distintos training set, y el valor de precision, recall y F1-Score será el promedio de todos los valores calculados.

Luego de probar con distintos clasificadores, es evidente que no es posible predecir el éxito de una película en base a sus directores y su género, pues el mejor resultado no pasa del 50%.

Contribución de cada miembro

Alan Acevedo:

Hito 1: Obtención y limpieza de datos. Presentación.

Hito 2: Preprocesamiento de los datos. Propuestas experimentales. Corregir hito 1 según feedback.

Camila Labarca:

Hito 1: Gráficos de dispersión, largo de titulo para matriz de correlación, formulación de preguntas y problemas. Presentación.

Hito 2: Preprocesamiento de los datos. Propuestas experimentales. Corregir hito 1 según feedback.

Franco Miranda:

Hito 1: Análisis de mejores y peores películas . Funciones para gráficos. Preguntas y problemas. Presentación.

Hito 2: Preprocesamiento de los datos. Diseño de clasificadores. Propuestas experimentales. Corregir hito 1 según feedback.

Julia Paredes:

Hito 1: Análisis y exploración de datos, formulación de preguntas y problemas. Presentación.

Hito 2: Traducción preprocesamiento de datos hito 1 de R a python. Diapositivas. Propuestas experimentales. Corregir hito 1 según feedback.