C. The Statistical Models 568
3. Limitations from Statistical Studies 574
La tabla train es el conjunto de datos que se va a emplear para predecir el primer des- tino de un nuevo usuario y poder hacerles, de este modo, la recomendación. La tabla está compuesta de 15 atributos de entrada y uno de salida, donde la mayoría de las variables de entrada son cualitativas nominales y la variable a predecir es también cualitativa nominal. Como country_destination, el atributo de salida, es cualitativo nominal y tiene más de 2 ca- tegorías, para saber cuál será el primer destino de un nuevo usuario se va a tener que resolver un problema de clasificación multinominal.
Antes de profundizar más en el estudio de las variables, se va a comentar en detalle el efecto que han tenido las decisiones que se han tomado hasta este momento. La reducción de registros no sólo ha supuesto pasar de 213.451 instancias a 88.908, sino que también la va- riable date_first_booking ha dejado de tener campos vacíos y se ha reducido la proporción de nulos en age y first_affiliate_tracked. Además, también ha acarreado la reducción de las categorías del atributo de salida porque, antes de la reducción, había 12 posibles desti- nos contando ”other” (otros) y ”NDF” (not defined ) y, tras la reducción, quedan 11 al haber desechado todos los registros que tenían como país de destino ”NDF”. Por ello, a partir de ahora el objetivo va a ser predecir el próximo destino vacacional entre 11 y no 12 opciones.
Descartar la tabla age_gender también ha tenido efecto en la tabla train porque, si antes se habían agrupado las edades para poder comparar los registros de train con los de age_gender, ahora se deshace este cambio y se mantiene age como número entero. Además,
debido a la política de privacidad de Airbnb de 2019 (recordar que aunque los datos fueron recabados entre 2010-2014 la política de privacidad que se debe aplicar es la vigente en el momento del análisis de los datos (Martínez, 2019)), los menores de 16 años no pueden reservar apartamentos dentro de la web (Airbnb, 2019a). Es por ello que a la variable age de train se le asignará el valor de ”0” tanto a los valores nulos y fuera de rango (en vez de ”null” como sucedía tras categorizar la variable) como a las edades de entre 0 y 15 años. A continuación se presenta el fragmento de la política de privacidad de Airbnb donde se trata lo comentado (Airbnb,2019a):
”2.2 Datos de menores.
Nuestros sitios web y aplicaciones no están dirigidos a menores de 16 años y no recopilamos ninguna información personal directamente de los menores de 16 años. Si usted cree que es- tamos tratando la información personal de un menor de forma inapropiada, nos lo tomaremos muy en serio y le instamos a que se ponga en contacto con nosotros utilizando la información proporcionada en la sección ”Contacto” que aparece a continuación.”
La siguiente tabla resume los cambios comentados hasta ahora para facilitar al lector la comprensión de los mismo.
train
Atributos Formato Variaciones
id String(10)
date_account_created Date timestamp_first_active Date
date_first_booking Date Eliminación de los registros nulos
gender String
age Int Modificación del format,
reducción de nulos y aplicación de la politica de privacidad signup_method String signup_flow Int language String(2) affiliate_channel String affiliate_provider String
first_affiliate_tracked String Reducción de datos nulos signup_app String
first_device_type String first_browser String
country_destination String(2) Reducción de categorías, de 12 a 11 (”NDF” desaparece)
Tabla 13: Modificaciones efectuadas en la tabla train reducida, compuesta de 88.908 registros en vez de 213.451.
Por otro lado, en el estado del arte ya se comentó que se iban a eliminar algunas varia- bles de la base de datos para garantizar la originalidad de la memoria y diferenciar este trabajo de las soluciones que se propusieron en la competición de Kaggle (Kaggle,2019). Las varia- bles que se van a eliminar pertenecen a esta tabla y son signup_method y signup_flow. Esta elección se ha tomado teniendo en cuenta el significado de cada atributo y no mediante algún algoritmo de selección de variables porque muchas de las técnicas de machine learning que se van a aplicar a continuación ya tienen incorporado un proceso de selección de atributos, descartando el mismo algoritmo las variables menos relevantes para el objetivo.
Una vez que se tiene la tabla train completamente filtrada, tanto por el número de regis- tros (para tener datos de calidad) como por las variables (por cuestión de resultados únicos), se procede a la transformación de las variables. En esta parte se va a estudiar cada variable y las formas que hay para enriquecer los datos. Dando comienzo por las variables de tipo fecha, se observa la siguiente tendencia a lo largo del tiempo en las Figuras12,13y14.
Figura 12: Serie temporal de la creación de cuenta de los usuarios en train, donde la tenden- cia indica que cada vez se crean más cuentas.
Figura 14: Serie temporal de la primera reserva de los usuarios en train.
Se puede apreciar que para las tres variables de tipo fecha, date_account_created, timestamp_first_active y date_first_booking, hay una tendencia de que aumente el nú- mero de primeros usuarios que crean una cuenta y reservan a medida que se avanza en el tiempo. Asimismo, en enero de 2012 se percibe un descenso de estas actividades que rápi- damente se recupera en los siguientes meses. Por otro lado, como las tres gráficas son muy parecidas, puede que haya una correlación alta en estas tres variables, correlación que será estudiada más adelante.
Vista la información de esta forma, no es posible conocer, por ejemplo, el mes del año en el que más cuentas se crean, el mes donde más primera actividad hay y el mes en el que se llevan a cabo más reservas. Para dar respuesta a estas preguntas, se han llevado a cabo las tres siguientes figuras.
Figura 15: Gráfica de barras de la distribución mensual de la creación de una cuenta para los usuarios en train, incrementando en el primer semestre del año y disminuyendo ligeramente en el segundo.
Figura 16: Gráfica de barras de la distribución mensual de la primera actividad de los usuarios en train, incrementando en el primer semestre del año y disminuyendo ligeramente en el segundo.
Figura 17: Gráfica de barras de la distribución mensual de la primera reserva de los usuarios en train, incrementando en el primer semestre del año y disminuyendo ligeramente en el segundo.
En las Figuras15,16 y 17 se puede apreciar que en las tres situaciones los meses de mayor cantidad de nuevas cuentas, de primera actividad y de primera reserva son junio, mayo, abril y marzo, es decir, los meses más próximos al verano. Por contrario, los meses de menor actividad son noviembre y diciembre. Además, el número de primeras reservas no decae tanto en julio y agosto como lo hace para la creación de una cuenta y la primera actividad.
Las variables de tipo fecha permiten extraer mucha información acerca del comparta- miento de los usuarios como se ha podido comprobar hasta el momento. Para enriquecer los datos de train, a parte del tratamiento de los valores nulos que se le hizo, se van a definir nuevas variables para extraer toda la información posible de los atributos de tipo fecha. Las nuevas variables, junto a las que ya estaban, se resumen en la Tabla14, resaltando las nuevas con naranja.
train
Atributos Formato (longitud) Descripción
id String(10) Identificador del usuario
date_account_created_2009 Int Diferencia en días
entre la fecha de creación de la cuenta y el 1 de enero de 2009
timestamp_first_active_2009 Int Diferencia en días
entre la fecha de la primera actividad del usuario y el 1 de enero de 2009 date_first_booking_2009 Int Diferencia en días
entre la fecha de la primera reserva y el 1 de enero de 2009
dif_first_active_created Int Diferencia en días entre la creación de la cuenta de Airbnb y su primera actividad
dif_create_first_booking Int Diferencia en días entre la creación de la cuenta de Airbnb y su primera reserva
dif_first_active_booking Int Diferencia en días entre la primera actividad de la cuenta de Airbnb y su primera reserva
month_account_created Int Mes de la fecha en la que se creó la cuenta
month_first_active Int Mes de la fecha de
la primera actividad
month_first_booking Int Mes de la fecha de
la primera reserva
year_month_account_created_2009 Int Diferencia entre el primer día del mes en el que se creó la cuenta y el 1 de enero de 2009
year_month_first_active_2009 Int Diferencia entre el primer día del mes en el que la cuenta tuvo actividad por primera vez y el 1 de enero de 2009
year_month_first_booking_2009 Int Diferencia entre el primer día del mes en el que se reservó por primera vez y el 1 de enero de 2009
gender String Género
age Int Edad
language String(2) Idioma
affiliate_channel String Canal de afiliación (el tipo de marketing de pago) affiliate_provider String Proveedor de afiliación (dónde se desarrolló el marketing: google, . . . ) first_affiliate_tracked String Determina la primera
comercialización con la que interactuó el usuario antes de registrarse
signup_app String Aplicación del registro
first_device_type String Tipo del primer dispositivo
first_browser String Primer navegador
country_destination String(2) País de destino
Tabla 14: Contenido de la tabla train enriquecida, compuesta de 88.908 registros.
En la información teórica relativa al tipo de variable con la que se puede trabajar en los algoritmos de machine learning que se van a aplicar en la Sección 5, se especificada que permiten tanto variables cualitativas como cuantitativas de entrada. Como no comentan nada sobre las variables de tipo fecha, se ha tomado la decisión de convertir estas variables en nú- meros, calculando en cada caso la diferencia en días entre la fecha y el 1 de enero de 2009, al ser éste el comienzo de año más próximo a la fecha mínima entre date_account_created, timestamp_first_active y date_first_booking. Así mismo, se ha calculado la diferencia en- tre estas tres fechas para calcular el tiempo empleado por el usuario entre cada una de las acciones y el mes donde se llevó acabo. Finalmente, se ha calculado la diferencia de inicio de mes de cada una de las acciones y el 1 de enero de 2009 para tener en días el mes y el año en el que la acción tuvo lugar. De este modo, quedan desglosadas las variables de tipo fecha para extraer la máxima información posible y enriquecer la tabla.
En cuanto a los atributos correspondientes a la edad y al sexo, la edad toma valores entre los 16 y los 123 años, habiendo valores nulos, y la media se encuentra en los 29 años con una desviación típica de 20 años. La variable gender consta de cuatro categorías, resumidas en la siguiente tabla.
Variable género de train
Género Número de apariciones
female 31 993
-unknown- 29 018
male 27 721
other 176
Tabla 15: Contenido de la variable gender de la tabla train enriquecida, compuesta de 88.908 registros.
En la Tabla 15 se ve que en train hay más mujeres que hombres, estando como la segunda categoría más frecuente la de género desconocido y hay pocos registros para el sexo ”other”. Para estudiar los atributos de edad y sexo en conjunto, se ha analizando la distribución de la edad por cada género mediante los gráficos que vienen a continuación. Cabe mencionar que la edad se ha agrupado por intervalos sólo para resumir la variable de forma visual y no porque el formato de age sea ese (recordar que la edad primero se agrupó por intervalos para luego deshacer este cambio y dejarlo con el formato de los números enteros).
Figura 19: Gráfica de barras de la distribución del género ”female” en la tabla train.
Figura 20: Gráfica de barras de la distribución del género ”other” en la tabla train.
A partir de las Figuras 18,19, 20 y21 se da a conocer que la mayoría de los usuarios masculinos y femeninos se encuentran en el intervalo de edad entre los 25 y los 39 años. Ade- más, la cantidad de valores nulos es especialmente elevada para el sexo ”unknown” al estar cerca del 20 %, mientras que en el resto de categorías se mantiene por debajo del 2 %. Final- mente, en las cuatro categorías de gender se sigue el mismo patrón: la cantidad de usuarios disminuye a partir de que la edad supera los 50-55 años.
Acerca del resto de variables, salvo el atributo de salida, se resumen tras este párrafo lo más destacable de cada una, completando esta información en el anexo, Sección9. Se ha to- mado esta decisión porque, como son todas cualitativas con alrededor de 10 categorías o más, la carga descriptiva de este apartado es muy grande, derivando este contenido al apéndice. Seguidamente, se exponen los atributos comentados en la Tabla16de forma resumida.
Variables restantes de train
Atributo Número de categorías Categoría más frecuente
language 23 en
affiliate_channel 8 direct
affiliate_provider 17 direct
first_affiliate_tracked 8 untracked
signup_app 4 Web
first_device_type 9 Mac Desktop
first_browser 29 -unknown-
Tabla 16: Contenido de las variables restantes de la tabla train enriquecida, compuesta de 88.908 registros.
Finalmente, a la hora de utilizar un algoritmo de aprendizaje supervisado, es importante que en la fase de entrenamiento del modelo todas las categorías de la variable que se quiere aprender a predecir aparezcan de forma equitativa. De no ser así, el algoritmo que se logra no tendrá una capacidad de predicción equiprobable entre los posibles resultados, teniendo una habilidad de predicción mejor o peor en función de la cantidad de instancias recibidas para cada categoría en la fase de entrenamiento (a mayor cantidad de instancias de una categoría mayor capacidad de predicción).
En cuanto al conjunto de datos train enriquecido, los posibles países de destino son AU (Australia), CA (Canadá), DE (Alemania), ES (España), FR (Francia), GB (Gran Bretaña), IT (Italia), NL (Holanda), PT (Portugal), US (Estados Unidos) y ”other” (otro posible destino). Para que el algoritmo de aprendizaje supervisado que mejor se adapte a los datos pueda predecir igual de bien cada uno de los posibles destinos, en train deberían aparecer con una proporción del 8,33 % cada uno de los posibles destinos. En la Figura22se ve si esto ocurre.
Figura 22: Gráfica de barras con la proporción de la elección de cada destino vacacional de los usuarios en train.
En la figura superior se observa que algo más del 70 % de los usuarios viaja dentro de Estados Unidos, seguido en segundo lugar por el destino ”other” con poco más del 10 % y en tercer lugar Francia al recibir el 6 % de los usuarios. El resto de destinos reciben un 3 % de los usuarios en el caso de Italia, Reino Unido y España, un 2 % Canadá, un 1 % Alemania, Holanda y Australia y menos de un 1 % Portugal.
Es evidente que no todas las categorías del atributo de salida presentan la misma pro- porción, es decir, el conjunto de datos de entrenamiento no está equilibrado. Por consiguiente, el modelo predictivo que se va a llevar a cabo con el conjunto de datos train va a tener una mayor capacidad predictiva para los destinos de Estados Unidos u ”other” que para Australia o Portugal, por ejemplo. Es por ello que, si se quiere igualar la capacidad predictiva del modelo se debería reducir el tamaño de train a 217 instancias por cada variable de salida o destino, siendo 217 la cantidad mínima de instancias que hay entre los posibles destinos. Como la can- tidad de instancias correspondientes a cada variable de salida es resultado de la recopilación directa de datos en un intervalo de tiempo, no se va a modificar porque, si es verdad que los estadounidenses tienen más tendencia a viajar dentro de su país que fuera, el modelo al que se llegará por este planteamiento lo va a representar.