본문 바로가기

데이터 분석

16. 랜덤 포레스트

728x90

데이터: hotel.csv

 

1. hotel 데이터셋

  • hotel: 호텔 종류
  •  is_canceled: 취소 여부
  •  lead_time: 예약 시점으로부터 체크인 될 때까지의 기간(얼마나 미리 예약했는지)
  •  arrival_date_year: 예약 연도
  •  arrival_date_month: 예약 월
  •  arrival_date_week_number: 예약 주
  •  arrival_date_day_of_month: 예약 일
  •  stays_in_weekend_nights: 주말을 끼고 얼마나 묶었는지
  •  stays_in_week_nights: 평일을 끼고 얼마나 묶었는지
  •  adults: 성인 인원수
  •  children: 어린이 인원수
  •  babies: 아기 인원수
  •  meal: 식사 형태
  •  country: 지역
  •  distribution_channel: 어떤 방식으로 예약했는지
  •  is_repeated_guest: 예약한적이 있는 고객인지
  •  previous_cancellations: 몇번 예약을 취소했었는지
  •  previous_bookings_not_canceled: 예약을 취소하지 않고 정상 숙박한 횟수
  •  reserved_room_type: 희망한 룸타입
  •  assigned_room_type: 실제 배정된 룸타입
  •  booking_changes: 예약 후 서비스가 몇번 변경되었는지
  •  deposit_type: 요금 납부 방식
  •  days_in_waiting_list: 예약을 위해 기다린 날짜
  •  customer_type: 고객 타입
  •  adr: 특정일에 높아지거나 낮아지는 가격
  •  required_car_parking_spaces: 주차공간을 요구했는지
  •  total_of_special_requests: 특별한 별도의 요청사항이 있는지
  •  reservation_status_date: 예약한 날짜
  •  name: 이름
  •  email: 이메일
  •  phone-number: 전화번호
  •  credit_card: 카드번호

 

📌필요없는 columns 제거

 

 

 

📌'calendar'모듈 이용하기

 

'order=months' 로 x좌표를 월 순서대로 정렬하기

 

 

 

 

✔️corr() : 열들 간의 상관계수를 계산한다.

  • 상관계수의 범위: -1에서 1사이. 1: 완벽한 양의 상관관계, -1: 완벽한 음의 상관관계, 0: 상관관계 없음.
  • 데이터프레임의 각 열에 대한 계산: 열들이 숫자형 데이터여야 함.
  • NaN 값 처리: NaN 값이 포함된 열은 상관계수 계산에서 제외되거나 NaN으로 반환될 수 있다.

 

 

결측값 제거

 

📌 'is_canceled' 예측하기

 

 

2. 앙상블(ensemble) 모델

  • 여러개의 머신러닝 모델을 이용해 최적의 답을 찾아내는 기법을 사용하는 모델
  • 보팅(Voting)

  • 배깅(Bagging)

  • 부스팅(Boosting)

  • 스태킹(Stacking)

 

 

3. 랜덤 포레스트(Random Forest)

  • 머신러닝에서 많이 사용되는 앙상블 기법 중 하나이며, 결정 나무를 기반으로 함
  • 학습을 통해 구성해 놓은 결정 나무로부터 분류 결과를 취합해서 결론을 얻는 방식
  • 랜덤 포레스트의 트리는 원본 데이터에서 무작위로 선택된 샘플을 기반으로 학습함
  • 각 트리가 서로 다른 데이터셋으로 학습되어 다양한 트리가 생성되며 모델의 다양성이 증가함
  • 분류와 회귀 문제에 모두 사용할 수 있으며, 특히 데이터가 많고 복잡한 경우에 매우 효과적인 모델
  • 성능은 꽤 우수한 편이나 오버피팅 하는 경향이 있음

 

✔️ 'is_canceled' 에 대해 0과 1 두가지 클래스이므로 각 클래스에 속할 확률을 나타내는 배열을 반환한다.

 

 

 

 

4. 머신러닝/딥러닝에서 모델의 성능을 평가하는데 사용하는 측정값

  • Accuracy: 올바른 예측의 비율
  • Precision: 모델에서 수행한 총 긍정 예측 수에 대한 참 긍정 예측의 비율
  • Recall: 실제 긍정 사례의 총 수에 대한 참 긍정 예측의 비율
  • F1 Score: 정밀도와 재현율의 조화 평균이며, 정밀도와 재현율 간의 균형을 맞추기 위한 단일 메트릭으로 사용
  • AUC-ROC Curve: 참양성률(TPR)과 가양성률(FPR)간의 균형을 측정

 

 

 

 

📌 'n_estimators=120' : 120개의 결정 트리를 사용하여 랜덤 포레스트를 구성한다.

 

 

5. 하이퍼 파라미터 최적의 값 찾기

  • GridSearchCV: 원하는 모든 하이퍼 파라미터를 적용하여 최적의 값을 찾음
  • RandomizedSearchCV: 원하는 하이퍼 파라미터를 지정하고 n_iter값을 설정하여 해당 수 만큼 random하게 조합하여 최적의 값을 찾음

 

 

✔️ GridSearchCV를 사용

📌 'rank_test_score': 테스트 점수의 순위

 

 

 

✔️ RandomizedSearchCV를 사용

 

 

6. 피처 중요도(Feature Importance)

  • 결정 나무에서 노드를 분기할 때 해당 피처가 클래스를 나누는데 얼마나 영향을 미쳤는지 표기하는 척도
  • 0에 가까우면 클래스를 구분하는데 해당 피처의 영향이 거의 없다는 뜻이며, 1에 가까우면 해당 피처가 클래스를 나누는데 영향을 많이 줬다는 의미

 

 

728x90

'데이터 분석' 카테고리의 다른 글

17. KMeans  (1) 2024.07.19
15. 서포트 벡터 머신  (0) 2024.07.09
14. 로지스틱 회귀  (0) 2024.07.09
13. 의사 결정 나무  (1) 2024.07.09
12. 선형 회귀  (0) 2024.07.09