Compresión del Negocio

El sector hotelero es un componente clave en la economía global, impulsado por la alta demanda de servicios de alojamiento en diversas regiones, desde destinos turísticos hasta áreas de negocios. Para los hoteles, maximizar la ocupación de habitaciones es crucial para garantizar la rentabilidad, y lograr esto implica gestionar eficientemente las reservas. Sin embargo, uno de los desafíos más comunes en esta industria son las cancelaciones de reservas, que pueden afectar gravemente tanto los ingresos como la operativa diaria de los establecimientos.

Las cancelaciones, sobre todo las de última hora, generan incertidumbre operativa. Si bien es normal que haya algunas cancelaciones, aquellas que ocurren cerca de la fecha de llegada afectan significativamente la capacidad de un hotel para llenar sus habitaciones, especialmente cuando la demanda es elevada o la capacidad del hotel es limitada. Este tipo de cancelaciones, además, obstaculiza la planificación de recursos como el personal de limpieza, recepción y mantenimiento, lo que puede generar ineficiencias operativas y costos adicionales.

¿Por qué es importante la predicción de cancelaciones para un hotel?

La predicción de cancelaciones se ha convertido en una herramienta crucial para los hoteles, ya que permite identificar con antelación qué reservas tienen mayor probabilidad de ser canceladas. Esto resulta fundamental para minimizar las pérdidas económicas, ya que las habitaciones de hotel son bienes perecederos; es decir, una vez que pasa una noche, la oportunidad de vender esa habitación se pierde de manera irreversible. Al predecir qué reservas están en riesgo de cancelación, el hotel puede actuar con antelación, tomar decisiones estratégicas y, si es necesario, reubicar o modificar las reservas antes de que se confirme la cancelación.

Además, la capacidad de predecir las cancelaciones también mejora la gestión de recursos. Los hoteles dependen de la planificación anticipada para coordinar eficazmente sus operaciones. Si un hotel puede anticipar una cancelación, puede ajustar su personal y otros recursos (como la limpieza o el mantenimiento) de manera más eficiente, evitando tanto la subutilización como la sobrecarga de recursos.

Por último, la predicción de cancelaciones permite una mejor gestión de relaciones con los clientes. Los hoteles pueden intervenir de manera proactiva con los clientes cuya reserva está en riesgo de ser cancelada, ofreciéndoles incentivos, alternativas o ajustes en las condiciones para reducir la probabilidad de que se cancele la reserva, lo cual mejora la satisfacción del cliente y contribuye a una mayor fidelización.

¿Cómo puede afectar esto al negocio?

Las cancelaciones de reservas tienen un impacto directo tanto en los ingresos como en la operativa del hotel. En términos financieros, las cancelaciones tardías representan una pérdida inmediata de ingresos. La incertidumbre que genera la cancelación de una reserva, especialmente cuando ocurre cerca de la fecha de llegada, dificulta la capacidad del hotel para reemplazar la habitación con otro cliente a corto plazo. Esto se convierte en un problema mayor cuando las cancelaciones ocurren en temporadas de alta demanda o cuando el hotel tiene una capacidad limitada.

En el ámbito operativo, las cancelaciones afectan la gestión de recursos humanos y materiales. Los hoteles requieren una programación eficiente de su personal y una logística bien organizada para el mantenimiento de las instalaciones. Cuando una habitación se cancela inesperadamente, se interrumpe la planificación de tareas como la limpieza de habitaciones o la asignación de personal, lo que puede resultar en ineficiencias. Esta ineficiencia operativa no solo aumenta los costos, sino que también puede afectar la calidad del servicio proporcionado a los clientes.

Además, una alta tasa de cancelaciones puede dañar la reputación del hotel. Si las cancelaciones son frecuentes o mal gestionadas, los clientes pueden sentirse desconfiados respecto a las políticas de reservas del hotel, lo que puede impactar negativamente en su percepción del servicio. Esto puede traducirse en una disminución de la fidelidad del cliente y una reducción de los ingresos a largo plazo, ya que los clientes potenciales pueden optar por otros establecimientos con políticas más claras y confiables.

Transformación del Problema en un Análisis de Datos

El problema de las cancelaciones de reservas en un hotel se puede abordar mediante un análisis de datos para predecir qué reservas tienen mayor probabilidad de ser canceladas. Para esto, transformaremos el problema en una tarea de clasificación binaria, donde el objetivo es predecir si una reserva será cancelada o no, basándonos en diversas características de la reserva y el cliente.

Utilizaremos un modelo de regresión logística, que es ideal para problemas de clasificación binaria. Este modelo nos permitirá no solo predecir si una reserva será cancelada, sino también calcular la probabilidad de cancelación, lo cual es crucial para tomar decisiones informadas y proactivas.

Proceso de Transformación

El primer paso será recopilar datos históricos sobre las reservas del hotel, utilizando para ello la base de datos Hotel Booking Demand disponible en Kaggle. Esta base de datos incluye características clave de las reservas, como el canal de reserva, la fecha de la reserva, la duración de la estancia, el número de personas, el precio, y las políticas de cancelación, entre otras. A continuación, estos datos se prepararán mediante limpieza, manejo de valores faltantes y codificación de variables categóricas, para que el modelo pueda procesar la información de manera eficiente.

Con los datos listos, entrenaremos el modelo de regresión logística. Este modelo aprenderá a partir de las características de las reservas pasadas y sus resultados (cancelada o no cancelada), generando una fórmula matemática que podrá predecir la probabilidad de cancelación de nuevas reservas. La salida será una probabilidad entre 0 y 1, indicando la probabilidad de que una reserva se cancele.

Una vez entrenado el modelo, se evaluará su rendimiento usando métricas como la precisión y el recall, para asegurarse de que las predicciones sean confiables. Finalmente, el modelo se podrá implementar para predecir las cancelaciones de reservas en tiempo real, lo que permitirá al hotel tomar decisiones más informadas, como ajustar precios o contactar a clientes con alta probabilidad de cancelación.

Beneficios

Este enfoque de análisis de datos permitirá al hotel reducir las pérdidas económicas causadas por cancelaciones imprevistas, optimizar el uso de recursos operativos y mejorar la experiencia del cliente mediante intervenciones proactivas. Al predecir las cancelaciones de manera anticipada, el hotel podrá gestionar mejor las operaciones y tomar decisiones estratégicas para aumentar su rentabilidad.

Comprensión de los Datos

Estructura del Conjunto de Datos

El conjunto de datos está compuesto por:

## Número de filas (observaciones): 119390
## Número de columnas (variables): 32

Estas variables se dividen según su tipo de dato en:

## Cantidad de variables numéricas: 18

Que incluyen información como el número de noches reservadas, el número de acompañantes, el tiempo de antelación con el que se realizó la reserva, la tarifa diaria promedio, entre otras.

## Cantidad de variables categóricas: 14

Que representan atributos como el tipo de hotel, el país de procedencia del cliente, el canal de distribución, el estado de la reserva y el tipo de cliente.

A continuación se listan las variables incluidas en el dataset:

## Variables del dataset:
##  [1] "hotel"                          "is_canceled"                   
##  [3] "lead_time"                      "arrival_date_year"             
##  [5] "arrival_date_month"             "arrival_date_week_number"      
##  [7] "arrival_date_day_of_month"      "stays_in_weekend_nights"       
##  [9] "stays_in_week_nights"           "adults"                        
## [11] "children"                       "babies"                        
## [13] "meal"                           "country"                       
## [15] "market_segment"                 "distribution_channel"          
## [17] "is_repeated_guest"              "previous_cancellations"        
## [19] "previous_bookings_not_canceled" "reserved_room_type"            
## [21] "assigned_room_type"             "booking_changes"               
## [23] "deposit_type"                   "agent"                         
## [25] "company"                        "days_in_waiting_list"          
## [27] "customer_type"                  "adr"                           
## [29] "required_car_parking_spaces"    "total_of_special_requests"     
## [31] "reservation_status"             "reservation_status_date"

Variable Objetivo

La variable que se desea predecir es is_canceled, la cual toma el valor:

  • 1 si la reserva fue cancelada.

  • 0 si la reserva se concretó.

Esta variable será tratada como una variable binaria, lo que justifica el uso de un modelo de regresión logística en el desarrollo posterior del proyecto.

Descripción y Análisis de Variables

A continuación, se presenta una tabla con la descripción de las principales variables del conjunto de datos, su tipo y su significado en el contexto del análisis de cancelaciones:

Resumen estadístico y descripción de las variables
variable tipo faltantes estadisticas descripcion
is_canceled numeric 0 Min: 0 Max: 1 Media: 0.370416282770751 SD: 0.482918226592599 Indica si la reserva fue cancelada (1 = cancelada, 0 = no cancelada)
lead_time numeric 0 Min: 0 Max: 737 Media: 104.01141636653 SD: 106.863097047988 Días entre la reserva y la fecha de llegada
arrival_date_year numeric 0 Min: 2015 Max: 2017 Media: 2016.15655415026 SD: 0.707475944520355 Año de llegada del cliente
arrival_date_week_number numeric 0 Min: 1 Max: 53 Media: 27.1651729625597 SD: 13.6051383554977 Número de la semana del año en que se hace la llegada
arrival_date_day_of_month numeric 0 Min: 1 Max: 31 Media: 15.7982410587151 SD: 8.78082947057834 Día del mes en que se realiza la llegada
stays_in_weekend_nights numeric 0 Min: 0 Max: 19 Media: 0.927598626350616 SD: 0.998613494597877 Número de noches de fin de semana reservadas
stays_in_week_nights numeric 0 Min: 0 Max: 50 Media: 2.50030153279169 SD: 1.90828561504791 Número de noches de la semana reservadas
adults numeric 0 Min: 0 Max: 55 Media: 1.856403383868 SD: 0.579260998832755 Número de adultos en la reserva
children numeric 4 Min: 0 Max: 10 Media: 0.10388990333875 SD: 0.398561444786442 Número de niños en la reserva
babies numeric 0 Min: 0 Max: 10 Media: 0.00794873942541252 SD: 0.0974361913012644 Número de bebés en la reserva
is_repeated_guest numeric 0 Min: 0 Max: 1 Media: 0.0319122204539744 SD: 0.175767145410657 Indica si el cliente es un huésped repetido (1 = sí, 0 = no)
previous_cancellations numeric 0 Min: 0 Max: 26 Media: 0.0871178490660859 SD: 0.844336384154511 Número de cancelaciones anteriores realizadas por el cliente
previous_bookings_not_canceled numeric 0 Min: 0 Max: 72 Media: 0.137096909288885 SD: 1.49743684770768 Número de reservas previas no canceladas realizadas por el cliente
booking_changes numeric 0 Min: 0 Max: 21 Media: 0.221124047240137 SD: 0.652305572674772 Número de cambios de reserva realizados
days_in_waiting_list numeric 0 Min: 0 Max: 391 Media: 2.32114917497278 SD: 17.5947208787762 Número de días en la lista de espera
adr numeric 0 Min: -6.38 Max: 5400 Media: 101.831121534467 SD: 50.5357902855487 Tarifa diaria promedio por habitación
required_car_parking_spaces numeric 0 Min: 0 Max: 8 Media: 0.0625177988106206 SD: 0.245291147467494 Número de espacios de estacionamiento requeridos
total_of_special_requests numeric 0 Min: 0 Max: 5 Media: 0.571362760700226 SD: 0.792798422809411 Número total de solicitudes especiales realizadas por el cliente
hotel character 0 City Hotel : 79330, Resort Hotel : 40060 Tipo de hotel (Resort o City Hotel)
arrival_date_month character 0 April : 11089, August : 13877, December : 6780, February : 8068, January : 5929, July : 12661, June : 10939, March : 9794, May : 11791, November : 6794, October : 11160, September : 10508 Mes de llegada del cliente
meal character 0 BB : 92310, FB : 798, HB : 14463, SC : 10650, Undefined : 1169 Tipo de comida reservada (por ejemplo, BB, HB, etc.)
country character 0 N/A País de origen del cliente
market_segment character 0 Aviation : 237, Complementary : 743, Corporate : 5295, Direct : 12606, Groups : 19811, Offline TA/TO : 24219, Online TA : 56477, Undefined : 2 Segmento de mercado de la reserva (por ejemplo, agencia, corporativo, etc.)
distribution_channel character 0 Corporate : 6677, Direct : 14645, GDS : 193, TA/TO : 97870, Undefined : 5 Canal de distribución (por ejemplo, web, agencia de viajes, etc.)
reserved_room_type character 0 A : 85994, B : 1118, C : 932, D : 19201, E : 6535, F : 2897, G : 2094, H : 601, L : 6, P : 12 Tipo de habitación reservada
assigned_room_type character 0 A : 74053, B : 2163, C : 2375, D : 25322, E : 7806, F : 3751, G : 2553, H : 712, I : 363, K : 279, L : 1, P : 12 Tipo de habitación asignada
deposit_type character 0 No Deposit : 104641, Non Refund : 14587, Refundable : 162 Tipo de depósito (sin depósito, con depósito, etc.)
agent character 0 N/A Número de agente que realizó la reserva
company character 0 N/A Número de compañía que realizó la reserva
customer_type character 0 Contract : 4076, Group : 577, Transient : 89613, Transient-Party : 25124 Tipo de cliente (nuevo o recurrente)
reservation_status character 0 Canceled : 43017, Check-Out : 75166, No-Show : 1207 Estado final de la reserva (por ejemplo, completada, cancelada, etc.)

Análisis de las Variables Numéricas

  1. is_canceled (Cancelación de reserva):
    • La media de esta variable es de 0.37, lo que significa que aproximadamente el 37% de las reservas fueron canceladas. Esta es una tasa relativamente alta, lo que podría indicar que los clientes cancelan las reservas con frecuencia o que la política de cancelación es flexible. La desviación estándar de 0.48 también muestra que no hay una gran variabilidad en esta variable, lo que refuerza que la cancelación es una característica relativamente constante en el conjunto de datos.
  2. lead_time (Anticipación de la reserva):
    • La media de 104 días sugiere que, en promedio, las reservas se hacen con alrededor de tres meses de anticipación. Sin embargo, el valor máximo de 737 días (aproximadamente 2 años) es un valor atípico, lo que sugiere que algunas reservas son realizadas con una anticipación extremadamente larga. Podría ser interesante investigar si estos casos corresponden a reservas corporativas o a eventos especiales con mucho tiempo de antelación.

      La desviación estándar alta de 106.86 indica que hay una gran variabilidad en cuanto a la anticipación de las reservas, lo que podría ser un indicio de que los clientes toman decisiones muy diferentes en cuanto a la planificación de sus viajes.

  3. arrival_date_year (Año de llegada):
    • Los valores en este caso son muy concentrados alrededor del 2016, ya que la media está en 2016.16 y la desviación estándar es mínima (0.71). Esto indica que la mayoría de las reservas son recientes, dentro de un rango de 2015 a 2017. Esto podría indicar que el conjunto de datos proviene de un periodo específico de tiempo, lo cual no es raro en conjuntos de datos de reservas de hoteles.
  1. arrival_date_week_number (Semana del año de llegada):
    • La media de 27.17 indica que las llegadas están bastante distribuidas a lo largo del año. No obstante, el rango de 1 a 53 y la desviación estándar de 13.61 sugieren que hay algunas reservas en semanas inusuales (por ejemplo, la semana 53, que solo aparece cada 4 años). Puede ser útil investigar si estas reservas corresponden a clientes que están reservando fuera de los períodos pico.
  1. arrival_date_day_of_month (Día del mes de llegada):
    • La media de 15.8 indica que la mayoría de las llegadas ocurren hacia la mitad del mes. Sin embargo, dado que el rango va de 1 a 31 y la desviación estándar es relativamente grande (8.78), esto sugiere que hay llegadas distribuidas por todo el mes, con algunos picos o concentraciones hacia los primeros y últimos días.
  1. stays_in_weekend_nights y stays_in_week_nights (Noches de fin de semana y noches entre semana):
    • La variable stays_in_weekend_nights tiene una media baja de 0.93, lo que indica que la mayoría de las reservas no incluyen noches de fin de semana. Esto puede reflejar que los clientes prefieren reservar para estancias más cortas, tal vez por motivos laborales o de negocio. También se observa una alta desviación estándar en esta variable, lo que sugiere que hay algunos clientes que reservan estancias largas durante los fines de semana, mientras que otros no se quedan en fin de semana.
    • La variable stays_in_week_nights tiene una media de 2.5, lo que muestra que, en promedio, las reservas son para estancias de 2 a 3 noches durante la semana. Esto tiene sentido en el contexto de reservas de corta duración, pero el rango de 0 a 50 noches (con una desviación estándar de 1.91) sugiere que hay algunas reservas excepcionales con una duración mucho mayor de lo esperado. Esto puede indicar reservas para grupos grandes o estancias prolongadas, pero vale la pena investigar si estos valores extremos corresponden a clientes corporativos o eventos especiales.
  1. adults (Número de adultos en la reserva):
    • La media de 1.86 es consistente con el hecho de que muchas reservas son para viajeros individuales o parejas. Sin embargo, el valor máximo de 55 adultos en una sola reserva es un valor extremo que probablemente esté relacionado con reservas de grupos grandes o eventos, lo cual es una ocurrencia poco frecuente.
  1. children (Número de niños en la reserva):
    • La media de 0.10 es baja, lo que indica que pocas reservas incluyen niños. Sin embargo, el mínimo es 0 (lo que es esperado) y el máximo es 10. Este rango sugiere que algunas reservas son para familias grandes. La desviación estándar de 0.40 también indica que, aunque la mayoría de las reservas no incluyen niños, algunas de ellas incluyen grupos familiares más grandes.
  1. babies (Número de bebés en la reserva):
    • La media de 0.01 es muy baja, lo cual tiene sentido, ya que las reservas que incluyen bebés deben ser una proporción menor. Sin embargo, al igual que con los niños, el valor máximo de 10 bebés parece un valor atípico y podría indicar errores o entradas incorrectas de datos. Es algo muy poco probable que una reserva incluya tal cantidad de bebés, por lo que podría ser interesante revisar si esos registros son correctos.
  1. adr (Tarifa diaria promedio por habitación):
    • La media de 101.83 es un valor razonable, pero el mínimo de -6.38 es un valor extraño. Este valor negativo podría indicar un error de registro o un descuento o ajuste muy inusual en el precio. De igual forma, el máximo de 5400 es un valor extremadamente alto, lo cual podría estar relacionado con eventos especiales o precios de lujo para ciertas habitaciones. La gran desviación estándar (50.54) sugiere una gran variabilidad en los precios de las habitaciones.

Análisis de las Variables Categóricas

  1. hotel

    • Las City Hotels representan 79,330 reservas y los Resort Hotels 40,060. Los patrones de cancelación pueden variar: los resorts son más estacionales, lo que puede aumentar las cancelaciones en temporada baja.
  2. arrival_date_month

    • Meses como agosto (13,877) y julio (12,661) concentran mayor demanda. En meses como enero (5,929) o noviembre (6,794), las cancelaciones podrían aumentar por menor ocupación o cambios en los planes de viaje.
  3. deposit_type

    • El 84% de las reservas no requieren depósito (No Deposit), mientras que solo un 12% son Non Refund. Las cancelaciones puden ser menos comunes cuando hay penalización.
  4. market_segment

    • Online TA domina con 56,477 reservas, seguido por Offline TA/TO (24,219) y Groups (19,811). Los segmentos grupales y en línea tienden a mostrar más cancelaciones, por su flexibilidad y volumen.
  5. meal

    • La mayoría elige BB (desayuno incluido) con 92,310 reservas, mientras que opciones más completas como HB (14,463) o FB (798) son menos comunes. Los clientes que pagan más por comida podrían estar menos dispuestos a cancelar.

Análisis univariado

En esta etapa se analiza cada variable de forma individual con el objetivo de entender su distribución, identificar valores atípicos y detectar posibles problemas en los datos. Esto es esencial para preparar correctamente las variables antes de evaluar su relación con la cancelación de reservas y construir modelos predictivos más robustos.

Análisis bivariado

En esta etapa se analiza la relación entre las variables y la variable objetivo is_canceled. Esto ayuda a identificar patrones significativos que puedan influir en la cancelación de reservas, lo que es crucial para mejorar la precisión de los modelos predictivos y tomar decisiones informadas en la gestión de reservas.

Gráfico de correlaciones (heatmap)

Uno de los hallazgos más relevantes es la correlación positiva moderada entre el lead_time (tiempo de anticipación) y la variable de cancelación. Con una correlación de 0.29, esto sugiere que a medida que aumenta el tiempo de anticipación de una reserva, también lo hace la probabilidad de que sea cancelada. Es probable que los clientes que realizan reservas con muchos meses de antelación cambien sus planes, lo que incrementa el riesgo de cancelación. Este dato es clave, ya que permite a los hoteles tomar medidas proactivas para gestionar esas reservas con mayor antelación, ofreciendo incentivos para mantener la reserva o hacer ajustes en la política de cancelación.

Otra variable con correlación moderada es previous_cancellations (cancelaciones previas), con una correlación de 0.11. Este valor indica que los clientes que han cancelado reservas en el pasado tienen más probabilidades de cancelar nuevamente. Esta es una observación importante, ya que sugiere que un comportamiento repetitivo de cancelación puede ser un predictor confiable de futuras cancelaciones. A través de este análisis, los hoteles pueden identificar y monitorear a estos clientes, implementando estrategias de fidelización o condiciones más estrictas en sus reservas.

La variable required_car_parking_spaces (espacios de estacionamiento requeridos) muestra una correlación negativa moderada de -0.20 con la cancelación. Esto implica que los clientes que requieren espacio de estacionamiento tienen menos probabilidades de cancelar. Este hallazgo podría reflejar que los clientes que buscan estos servicios adicionales están más comprometidos con su estancia y, por lo tanto, menos inclinados a cancelar sus reservas. Los hoteles que ofrecen estacionamiento pueden usar este dato para crear paquetes o incentivos que promuevan la permanencia de los clientes.

Adicionalmente, total_of_special_requests (solicitudes especiales) presenta una correlación negativa de -0.23. A mayor número de solicitudes especiales, menor es la probabilidad de cancelación. Esto sugiere que los clientes que hacen solicitudes especiales, como habitaciones específicas o servicios adicionales, tienden a estar más comprometidos con su reserva y, por lo tanto, tienen menos probabilidades de cancelarla. Este es un dato útil para los hoteles, ya que las solicitudes especiales pueden ser una indicación de un cliente más comprometido.

Aunque algunas variables cumplen con las expectativas, hay algunas que resultan sorprendentes. Por ejemplo, adr (tarifa diaria promedio) tiene una correlación muy baja de 0.05 con la cancelación, lo que indica que la relación entre la tarifa y la probabilidad de cancelación no es significativa. Esto desafía la intuición, ya que se podría suponer que los clientes que pagan tarifas más altas tendrían menos incentivos para cancelar. Sin embargo, los datos sugieren que factores como la flexibilidad de la reserva o las políticas de cancelación podrían tener un impacto más significativo que la tarifa misma.

Además, las variables relacionadas con la duración de la estancia, como stays_in_weekend_nights y stays_in_week_nights, tienen correlaciones muy bajas, cerca de cero (-0.00 y 0.02, respectivamente), lo que sugiere que la duración de la estancia no es un factor relevante a la hora de predecir cancelaciones. Este hallazgo es contrario a la expectativa común de que los clientes que reservan estancias más largas puedan estar más comprometidos con sus planes. Sin embargo, los datos no muestran una relación significativa entre la duración de la estancia y la cancelación.

Conclusión

El análisis de las correlaciones ha permitido identificar varios factores clave que influyen en la probabilidad de cancelación de una reserva. Variables como el tiempo de anticipación de la reserva, el historial de cancelaciones previas, y las solicitudes especiales son importantes para predecir la cancelación de una reserva. Por otro lado, algunos factores que comúnmente se asumirían relevantes, como la tarifa diaria o la duración de la estancia, tienen una correlación casi nula con las cancelaciones.

Estos hallazgos permiten a los hoteles tomar decisiones informadas sobre cómo gestionar las reservas y reducir las cancelaciones. Las políticas de cancelación podrían adaptarse para aquellos con un historial de cancelaciones, o bien, ofrecer incentivos para mantener las reservas de aquellos que las hagan con mucha antelación. Además, los hoteles podrían beneficiarse de identificar a los clientes que hacen solicitudes especiales, ya que estos tienden a ser más comprometidos con sus reservas.