📙 Fundamentals/ML&DL

🏨 호텔 예약 정보 데이터셋 분석 | 2️⃣ 상관관계 분석

Lento_ 2025. 3. 24. 18:33

👀 INTRO

데이터셋 개요 : 호텔 예약 정보를 포함한 데이터셋

목적 : 예약 취소율에 영향을 미치는 주요 요인을 분석

 

 

1️⃣ 'is_canceled'과의 상관관계

: is_canceled과의 상관관계만 집중적으로 분석하기 위해 전체 상관관계가 아닌 특정 변수(is_canceled)만 추출.

: 내림차순 정렬을 통해 어떤 변수가 가장 큰 영향을 주는지 한눈에 파악 가능.

 

2️⃣ Point-Biserial 상관계수 이용

: Point-Biserial 상관계수를 사용한 이유는 이진 변수(is_canceled)와 연속형 변수(lead_time, total_of_special_requests 등) 사이의 상관관계를 정확하게 측정하고 해석하기 위해서 Point-Biserial 상관계수를 선택하였다.

 

# 'is_canceled'과 'lead_time'의 상관관계

: 양의 상관관계(corr = 0.19)

   lead_time이 길수록 예약이 취소될 확률이 높아짐

 

📊 Insight

- 예약 후 시간이 길수록 일정 변경 가능성 증가 → 고객이 다른 선택지를 고려할 시간이 많아짐

- 짧은 lead_time 일수록 확정된 일정일 가능성 높음 → 취소 가능성 낮아짐

 

🧐 개선방안

1. 장기 예약 고객 대상 리마인드 메시지 & 할인 정책 제공

2. 예약 가능 기간을 3개월 이내로 제한

3. 체크인 날짜가 가까운 예약을 유도하는 프로모션 전략

 

# "stays_in_weekend_nights + stays_in_week_nights"와 "is_canceled"의 상관관계

: 숙박 일수와 예약 취소율 간의 상관관계는 미미하다

 

# "previous_cancellations"와 "is_canceled"의 상관관계

: 양의 상관관계(corr = 0.05)
  previous_cancellations이 증가할수록 예약 취소(is_canceled) 확률이 높아짐

 

📊 Insight

- 특정 고객층은 반복적으로 예약을 했다가 취소하는 경향이 있음. BUT, 그렇다고 반드시 취소하는 것도 아님

- previous_cancellations이 높은 고객일수록 취소율이 급격히 증가

- 이 변수 하나만으로 취소 여부를 결정짓기는 어렵다

- 호텔 입장에서는 반복적인 취소가 운영 효율성에 부정적인 영향을 미칠 수 있음

 

🧐 개선방안

1. 취소 패널티 및 보증금 정책 적용

2. 과거 취소 횟수가 높은 고객을 식별하여 정책 적용

 

# "booking_changes"와 "is_canceled"의 상관관계

: 음의 상관관계(corr = -0.09)
  booking_changes가 증가할수록 is_canceled(예약 취소 확률)이 감소함

 

📊 Insight

(예상) 예약 변경이 많을수록 취소 확률이 높을 것

(실제) 상관관계가 음수(-0.09)이므로 오히려 예약변경이 많을수록 약간 감소한다.

 

# "required_car_parking_spaces"와 "is_canceled"의 상관관계

: 음의 상관관계(corr = -0.18)
required_car_parking_spaces가 증가할수록 예약 취소(is_canceled) 확률이 낮아짐

 

📊 Insight

- required_car_parking_spaces == 0
  취소율이 상대적으로 높음

- required_car_parking_spaces > 0
  취소율이 낮음

-
주차 공간을 요청한 고객 중 대부분 여행 계획이 확정된 고객, 자가용을 이용하는 장거리 여행객, 비즈니스 출장 고객 등의 고객들은 단순 변심으로 인해 취소할 확률이 낮다.

 

# "total_of_special_requests"와 "is_canceled"의 상관관계

: 음의 상관관계(corr = -0.12)
  → total_of_special_requests가 증가할수록 is_canceled(예약 취소 확률)이 낮아짐

 

📊 Insight

- total_of_special_requests == 0
  특별 요청이 없는 고객들의 취소율이 상대적으로 높음

- total_of_special_requests > 0
  특별 요청이 있는 고객들은 예약을 취소할 가능성이 낮음

 

🧐 개선방안

1. 특별 요청을 유도하는 전략 활용

   - ex. "객실 관련 특별 요청이 있으신가요? (침대 타입, 전망, 층수 등)"

2. 재방문을 유도하기 위한 특별 요청 데이터를 활용한 맞춤형 마케팅

 

# 이외의 상관관계 히트맵

 

1. stays_in_week_nights(주중 숙박일) - stays_in_weekend_nights(주말 숙박일) : 0.55
    : 전체 숙박 기간이 길수록 주말과 주중 숙박일 수도 함께 증가하는 경향이 있다.


2. previous_cancellations(이전 취소 횟수) - previous_bookings_not_canceled(이전에 취소 안한 예약 횟수)
    : 과거에 예약 취소를 많이 한 사람은 비취소 예약도 많이 보유한 경향이 있다.


3. previous_bookings_not_canceled(이전에 취소 안한 예약 횟수) - is_repeated_guest(반복 방문 고객) : 0.46
    : 반복 방문 고객일수록 이전에 취소 안한 예약을 많이 보유한 경향이 있다.


4. is_repeated_guest(반복 방문 고객) - previous_cancellations(이전 취소 횟수) : 0.25
    : 반복 방문 고객도 과거에 예약을 취소한 경험이 있을 가능성이 있음.


5. adults, children, babies(투숙 인원) - is_canceled과 상관관계가 거의 없음.


✒️ 느낀점

이번 분석에서는 예약 취소와 관련된 변수들의 상관관계를 확인하고 취소율을 예측할 수 있는 주요 요인을 도출할 수 있었다. 특히, lead_time, previous_cancellations, total_of_special_requests 등의 변수와 is_canceled 간의 관계를 살펴보면서 취소율을 낮출 수 있는 전략을 고민해보기도 했던 것 같다. 그리고 전략을 고민하다보니 데이터를 단순히 보는 것이 아니라 실제로 컬럼들의 관계 속에 숨은 의미를 찾아내는 것이 얼마나 다른 과정인지 깨닫게 되는 활동이었다.

 

처음에는 단순히 변수들 간의 상관관계를 확인하면 취소율에 영향을 주는 요소들을 쉽게 찾을 수 있을 거라고 생각했지만, 데이터가 갖는 복잡성을 고려해야 했다. 또한 데이터를 어떻게 다뤄야할지 고민하는 과정이 길어져 데이터 전처리 과정이 생각보다 오래 걸렸던 것 같다. 잘못된 전처리나 변수 선택이 분석 결과에 큰 영향을 미칠 수 있기 때문에, 이 단계에서 신중하게 접근할 필요가 있다는 점을 다시 한번 체감할 수 있었다.