상세 컨텐츠

본문 제목

[트리기반 XGBoost] 커플성사 여부 예측하기

통계, ML 방법론

by eun_00 2024. 7. 6. 22:30

본문

출처: [데싸노트의 실전에서 통하는 머신러닝] 책https://goldenrabbit.co.kr/2022/07/14/%ED%99%95%EC%8B%A4%ED%9E%88-%EC%95%8C%EC%95%84%EB%91%90%EB%A9%B4-%EB%A7%8C%EC%82%AC%EA%B0%80-%ED%8E%B8%ED%95%B4%EC%A7%80%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-10%EA%B0%80%EC%A7%80-%EC%95%8C/

 

확실히 알아두면 만사가 편해지는 머신러닝 10가지 알고리즘 - 골든래빗

코로나보드의 프론트엔드와 백엔드의 전체적인 아키텍처를 파악하고, 이러한 아키텍처로 설계된 이유를 알아봅니다.

goldenrabbit.co.kr

위의 링크를 통해 많이 사용하는 알고리즘 10가지 핵심 정리를 확인해볼 수 있다. 


💡 XGBoost 부스팅 모델을 활용하여 커플 성사를 예측하고, 그리드 서치로 하이퍼파라미터 튜닝하여 나은 모델 만들어보자
  • 사용 데이터: 스피드 데이팅 이벤트 데이터, 타겟변수: 매칭 성사 여부
  • 사용 모델: XGBClassifier
  • 평가 지표: 정확도, 혼동행렬, 분류 리포트

1. 데이터 확인

2. 데이터 전처리

트리 베이스 모델이기 때문에 결측치는 임의 숫자로 채워넣는다. 단, 중요도와 관련된 변수들은 결측치를 제거한다. 왜냐하면 피처 엔지니어링에서 중요도 * 점수로 계산하기 떄문이다.

평가에 용이하도록 나이 차이와, 인종 차이 파생변수를 생성해주었다.

same_race에 동일인종인 경우 1을, 아닌경우 -1로 지정한 이유는 만약 1, 0 으로 지정한 경우 (동일인종 여부의 중요성, 인종 차이) = 10, 0 으로 나온 0 값과, (동일 인종 여부의 중요성, 인종차이) = 0, 0 으로 나온 값이 구별이 안되기 때문에 변별력을 높이기 위함이다.

3. 모델링 및 평가

약 86%의 정확도로 비교적 낮다. confusion_matrix를 살펴보면, 1종 오류(실제값은 0인데 1로 예측한) 건수가 58건, 2종 오류(실제값은 1인데 0으로 예측한) 건수가 140으로 많다. 2종오류와 관련이 있는 Recall은 43%로 낮은 것을 혼동행렬에서 확인할 수 있다.

 

4. 그리드 서치 활용

  • 경사하강법: 머신러닝을 학습시킬 때, 최소의 오차를 찾는 방법이다. 오차함수에 대한 경사도(미분계수)를 기준으로 매개변수를 반복적으로 이동해가며, 최소오차를 찾는다.
  • 그리드서치: 그리드서치에 입력할 하이퍼파라미터 후보들을 입력하면, 각 조합에 대해 모두 모델링해보고 경사하강법 사용하여 각 모델 학습시키면서 최적의 결과가 나오는 하이퍼파라미터 조합을 알려준다. 

 

그리드 서치 활용하여 학습 후에 아주 미세하게 올랐고, f1-score모 미세하게 올랐다. 

책에는 하이퍼파라미터 튜닝으로 엄청난 개선을 얻기에는 쉽지 않다고 써있다. 

📍 트리 모델 정리 
가장 기본적인 트리 모델: DecisionTree -> 시각적으로 설명이 가능하다는 장점이 있으나, 이 모델만으로 성능이 나오지 못함
배깅 기법으로 발전된 알고리즘: 랜덤 포레스트
부스팅 기법으로 발전된 대표적인 알고리즘 : XGBoost, LightGBM
XGBoost : 예측 속도 빠름, 예측력 좋음, 데이터 클수록 상대적으로 뛰어난 성능 보임 / 복잡한 모델인만큼 해석 어려움이 있음, 하이퍼파라미터 튜닝이 까다로움

 

관련글 더보기