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.
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.
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.
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.
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.
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.
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"
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.
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:
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.) |
is_canceled
(Cancelación de reserva):
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.
arrival_date_year
(Año de llegada):
arrival_date_week_number
(Semana del año de
llegada):
arrival_date_day_of_month
(Día del mes de
llegada):
stays_in_weekend_nights
y
stays_in_week_nights
(Noches de fin de semana y noches
entre semana):
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.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.adults
(Número de adultos en la
reserva):
children
(Número de niños en la
reserva):
babies
(Número de bebés en la
reserva):
adr
(Tarifa diaria promedio por
habitación):
hotel
arrival_date_month
deposit_type
market_segment
meal
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.
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.
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.
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.