Inteligencia en Red
Curso 2021/22
Bike Sharing
Julio Villena Román
jvillena@[Link]
1
Bike Sharing
1. Objetivos
El objetivo de la práctica es abordar un análisis del servicio de alquiler de bicicletas
públicas (Bike Sharing), un escenario de aprendizaje supervisado, empleando la
herramienta RapidMiner.
2. Contexto: Capital Bikeshare
En este ejercicio se utilizan los datos de una de las competiciones ofrecidas en Kaggle
en 2015, sobre la predicción de la demanda en alquiler de bicicletas públicas
([Link] Aunque los datos proporcionados
son del programa Capital Bikeshare de Washington, D.C. en Estados Unidos, este mismo
análisis se podría llevar a cabo en España, en las diferentes ciudades donde existe el
servicio de bicicletas públicas y cuyos datos están disponibles como datos abiertos de la
ciudad, por ejemplo, en Madrid, Zaragoza, Bilbao, Málaga, Gijón, etc.
Inicialmente, en 2008, el Distrito de Columbia fue el primero en los Estados Unidos en
poner en funcionamiento un sistema de alquiler de bicicletas. Se llamó SmartBike D.C. y
ofrecía 120 bicis repartidas en 10 estaciones en el centro de la ciudad de Washington
D.C. Aproximadamente 1600 personas se unieron entonces a SmartBike D.C. durante
los dos primeros años. Tiempo después, el condado de Arlington estaba trabajando en
su propio sistema de alquiler de bicis. Finalmente, en mayo de 2010, el condado de
Arlington y Washington, D.C. revisaron las propuestas y eligieron el que actualmente es
el sistema Capital Bikeshare ([Link]
En agosto de 2012, la ciudad de Alexandria lanzó ocho estaciones uniéndose así a la
comunidad Capital Bikeshare. Un año más tarde, en mayo de 2013, el condado de
Montgomery se convirtió en el último miembro en unirse al programa Capital Bikeshare.
Juntos, el Distrito de Columbia, el condado de Arlington, Alexandria y el condado de
Montgomery son los orgullosos responsables de traer un sistema de transporte
expansionista y pluri-jurisdiccional a la región.
El sistema Capital Bikeshare pertenece a las jurisdicciones participantes y es dirigido por
Motivate, una compañía de Brooklyn que dirige otros muchos sistemas de alquiler de
bicis.
Actualmente, Capital Bikeshare pone a disposición de los ciudadanos más de 3000
bicicletas que pueden alquilar en cualquiera de las más de 350 estaciones.
Existen cuatro posibles tarifas entre las que los usuarios pueden elegir según más les
convenga. Pueden unirse por un día, tres días, un mes o un año. Todas ellas tienen una
cuota inicial fija y, además, deben pagar una cantidad extra dependiente del tiempo de
uso siendo la primera media hora de cada viaje gratis.
Los usuarios que eligen las tarifas de uno o tres días reciben un código de cinco dígitos
que deben introducir en las consolas de las estaciones cuando quieran extraer una
bicicleta mientras que los usuarios con tarifas mensuales o anuales reciben una tarjeta
mediante la cual pueden alquilar bicicletas.
2
3. Descripción de los datos
La página de descarga de datos ([Link]
en Kaggle proporciona dos conjuntos de datos, uno de entrenamiento y otro de
evaluación. En esta práctica vamos utilizar el conjunto de entrenamiento, ya descargado
en formato CSV como “Bike [Link]”, que se compone de los siguientes atributos:
1. datetime - hourly date + timestamp
2. season
1 = spring, 2 = summer, 3 = fall, 4 = winter
3. holiday - whether the day is considered a holiday
4. workingday - whether the day is neither a weekend nor holiday
5. weather
1: Clear, Few clouds, Partly cloudy, Partly cloudy
2: Mist + Cloudy, Mist + Broken clouds, Mist + Few clouds, Mist
3: Light Snow, Light Rain + Thunderstorm, Light Rain + Scattered clouds
4: Heavy Rain + Ice Pallets + Thunderstorm + Mist, Snow + Fog
6. temp - temperature in Celsius
7. atemp - "feels like" temperature in Celsius
8. humidity - relative humidity
9. windspeed - wind speed
10. casual - number of non-registered user rentals initiated
11. registered - number of registered user rentals initiated
12. count - number of total rentals
Nuestro objetivo de análisis va a ser predecir la demanda (el número de alquileres) en
el servicio de alquiler de bicicletas públicas, lo que permitiría optimizar su gestión
(ajustando oferta-demanda). La variable “count” es el número total de alquileres, la
suma de usuarios esporádicos (“casual”) y registrados (“registered”).
4. Primer paso: Preparación de los datos
En primer lugar, hay que importar los datos en RapidMiner, con “Import Data”, como
hiciste en la anterior práctica. Puedes utilizar los valores por defecto, ya que detecta
correctamente el tipo date_time de la columna de fecha y los valores integer/real del
resto de variables numéricas.
Intuitivamente, resulta sensato pensar que la demanda depende de la meteorología (días
con mal tiempo llaman menos a desplazarse en bicicleta), de si es día laborable o no
(diferente tipo de uso para ir al trabajo o de ocio), según el momento del año (mes o
estación) y, por supuesto, de la hora del día (por la noche habrá menos demanda que
por el día).
Aunque sí hay variables sobre la meteorología o el tipo de día laborable o festivo, sin
embargo, no existen las variables “month” ni “hour” como tales, sino que están
codificadas en la variable “datetime”, así que es conveniente procesar los datos para
extraer dichas variables.
3
Para ello vamos a emplear la herramienta “Turbo Prep” de RapidMiner, accesible desde
la barra de botones superior, que permite hacer manipulaciones de los datos de manera
muy sencilla y potente.
Aquí hay una guía introductoria para aprender a manejarla:
[Link]
Selecciona el conjunto de datos importado para empezar a trabajar sobre él.
“Transform” permite renombrar variables, cambiar su tipo, filtrar valores, etc.
“Cleanse” sirve para limpiar variables, normalizar, discretizar…
“Generate” sirve para generar atributos nuevos.
“Pivot” sirve para hacer agrupaciones elaboradas de atributos, y “Merge” permite
combinar varios conjuntos de datos.
Nosotros vamos a usar “Generate”:
1. Pulsa “Generate”
2. En “Name” (nombre de la nueva columna), escribe:
month
3. En “Formula”, escribiendo o arrastrando desde las variables, “Functions”, o
“Constants”, pon:
date_get([datetime], DATE_UNIT_MONTH)+1
4. En “Preview” debes ver el valor correcto de la nueva columna. Debe extraerse el
valor del mes de la variable “datetime”.
5. Si es correcto, pulsa “COMMIT GENERATE” para guardar los cambios.
Haz lo mismo otra vez, usando “Generate” para crear la variable “hour” extrayendo el
campo DATE_UNIT_HOUR de la variable “datetime”.
Cuando tengas ambas variables, selecciona “EXPORT” (en el icono de los puntos
suspensivos, arriba a la derecha) para guardar el conjunto de datos transformado en el
repositorio. Puedes sobreescribir si quieres el conjunto original que importaste
anteriormente.
4
5. Segundo paso: Análisis exploratorio de datos
Una vez que se dispone de los datos, el siguiente paso de cualquier proyecto de análisis
es realizar un análisis exploratorio de los datos, estudiando las variables determinando
su significado, los estadísticos básicos -máx, min, media, etc.-, su histograma, un análisis
de calidad -valores missing-, y la dependencia entre variables.
En este análisis, primero vamos a utilizar como objetivo la variable “count”, el número
total de alquileres, independientemente de que sean usuarios registrados o usuarios
esporádicos. Realiza los siguientes análisis, mediante la funcionalidad de estadísticas
(“Statistics”) y de visualización (“Visualizations”) de la vista de resultados de RapidMiner:
• Valores mínimos, medios y máximos e histograma de la variable “count” → ¿Es
un servicio muy demandado?
• Análisis por horas (“hour” vs “count”) → ¿La demanda depende de la hora del
día?
• Análisis por meses del año → ¿La demanda depende del mes del año?
• Análisis de días laborables vs festivos → ¿Influye en la demanda?
• Análisis por temperatura → ¿Influye la temperatura en la demanda?
• Análisis por meteorología (“weather”) → ¿El tiempo influye?
Y ahora, realiza este mismo análisis con las dos variables “casual” y “registered”,
determinando si el comportamiento de la demanda de cada tipo de usuario es diferente
según las variables anteriores.
Las siguientes figuras anticipan que efectivamente la demanda depende del tipo de
usuario del que se trate.
5
Para analizar la dependencia entre variables (sobre todo, entre las variables de entrada
y la/s variable/s objetivo/s), se utiliza habitualmente el análisis de correlación, para lo
cual puedes preparar el siguiente proceso sencillo en RapidMiner:
6. Tercer paso: Predicción de la demanda
Por último, entrena un modelo de predicción de la demanda (variable “count”), utilizando
el proceso base de entrenamiento y validación basado en separación en conjuntos de
training/test que ya conoces de la anterior práctica.
Obviamente no puedes usar para predecir las variables “registered” ni “casual”, puesto
que la cuenta total es dependiente de forma trivial de las otras dos.
Utiliza diferentes algoritmos y compáralos utilizando el error relativo como métrica. Es
decir, el objetivo es determinar el algoritmo que predice la variable “count” en función
de las variables de entrada (no tienes por qué usar todas) con menor error relativo.
Además, analiza la diferencia de error relativo al predecir “registered” y “casual” con el
mejor algoritmo. Es decir, ¿qué es más fácil, predecir la cuenta total o bien las variables
por separado?
7. Evaluación
Esta práctica se realiza por parejas.
Entregable: informe con el análisis realizado, los resultados de los diferentes modelos
y las conclusiones obtenidas.
Calificación:
• 0 puntos: no llega mínimamente a los requisitos exigidos.
• 1 punto: análisis superficial, parcial, poco elaborado.
6
• 3 puntos: análisis completo del escenario, análisis exploratorio, modelos de
predicción y análisis de conclusiones, cumpliendo con calidad los requisitos de la
práctica.