갓생일기_3일

곽숭아·2025년 12월 26일

갓생일기

목록 보기
3/10
post-thumbnail

3번째 갓생일기 !
오늘은 Boost계열 3가지 모델 (XGBoost, LightGBM, CatBoost) 성능 비교을 해봤다.

📌개요

  • 데이터셋 : load_breast_cancer()
  • 사용 모델 :
    • XGBoost
    • LightGBM
    • CatBoost
  • 평가 지표 :
    • Accuracy (정확도,모델이 얼마나 많이 맞췄나)
    • Recall (재현율,민감도)
    • Precision (정밀도)
      (암 진단 데이터 특성상 Recall을 가장 중요하게 확인)
    • 세 모델 전부 Boosting + Decision Tree 기반이지만,
      트리를 만드는 방식(구조) 자체가 다르기 때문에
      조절해야 할 하이퍼파라미터 이름과 의미가 다름.
      👉 XGBoost 파라미터
  param_grid = {
    'n_estimators': [100, 200], #트리를 몇개 만들지
    'learning_rate': [0.01, 0.05, 0.1],  # 한 트리의 영향력 조절
    'max_depth': [3, 5, 7],  # 트리 깊이 제한(과적합 방지)
    'subsample': [0.8, 1.0],  # 데이터 일부만 사용(과적합 ↓)
    'colsample_bytree': [0.8, 1.0]  # 피처 일부만 사용
    }
  • XGBoost의 트리방식
    • 레벨 단위(Level-wies)로 트리를 키움
    • 모든 노드를 같은 깊이까지 확장
    • 사람이 직접 과적합을 잘 막아줘야함.
      *Level-wies 트리 성장 = 같은 깊이(level)에 있는 모든 노드를 동시에 분할.좌우균형있게 자란다
      👉 LightGBM 파라미터
  param_grid = {
    'n_estimators': [100, 200],  
    'learning_rate': [0.01, 0.05, 0.1],
    'num_leaves': [31, 50],  # 트리의 복잡도 핵심
    'max_depth': [-1, 10, 20],  # 리프 폭주 방지
    'min_child_samples': [20, 30]  # 너무 작은 리프 생성 방지
   }
  • LightGBM의 트리방식
    • 리프 중심(Leaf-wise)성장
    • 손실 감소가 큰 리프만 집중적으로 확장
    • 속도가 빠른 대신 과적합위험이 높음
    • 그래서 주석 적힌 파라미터들이 필요함
      *num_leaves가 제일중요.
      *leaf-wise 트리 성장 : 가장 손실 감소가 큰 leaf하나만 계속 분
      👉 Cat Boost파라미터
    param_grid = {
    'iterations': [100, 150, 200],  #트리 개수
    'learning_rate': [0.01, 0.05, 0.1],
    'depth': [4, 6, 8],  # 트리깊이
    'l2_leaf_reg': [1, 3, 5]  #리프 정규화(과적합 방지)
    }
  • Cat Boost의 특징
    • 카테고리 변수 자동 처리

    • 순서기반 부스팅

    • 과적합 자체를 내부적으로 강하게 제어

    • 그래서 파라미터가 적음. 사용자 개입 최소화

    • 실무에서 튜닝 부담이 적다.

      이렇게 코드를 작성한후 Accuracy,Recall,Precision 으로 결과를 확인함.


  • XGBoost 결과

    Accuracy: 0.965 Recall: 0.986 Precision: 0.959

  • LightGBM 결과

    Accuracy: 0.965 Recall: 0.986 Precision: 0.959

  • cat boost 결과

    Accuracy: 0.956 Recall: 0.986 Precision: 0.947

  • 세모델 모두 Recall =0.986, 암 환자를 거의 놓치지 않음
  • Accuracy 역시 전반적으로 높음
  • CatBoost는 다른 두 모델에 비해 Precision이 낮아, 정상인을 암으로 오진하는 비율이 상대적으로 높음

🖍️공부 정리🖍️

  • XGBoost / LightGBM 결과는 같음
    이유를 찾아보니 데이터 크기가작고, 클래스 분리가 쉽다고 함.
    두 모델 거의 같은 결정 경계에 도달함을 알수있었음.

  • Cat Boost가 그럼 처리를 못하는가
    그건 아님. cat boost는 범주형 변수가 많을때 진가를 발휘함.
    해당 데이터셋은 전부 수치형이며 패턴이 비교적 명확하기에 cat boost 장점이 거의 안드러나는 환경임을 알수있었음.

  • Recall은 1에 가까울수록 "암 환자를 거의 놓치지않는다"는 뜻.

  • 의료 데이터에서 Recall이 중요한이유
    암 환자를 놓치는것(FN)은 치명적임.
    정상인을 암으로 오진(FP)은 추가 검사로 확인가능.
    그래서 의료에서는 Precision보다 Recall을 더중요하게본다.

  • Level-wise 와 leaf-wise

👏스스로 실습 해본결과👏

breast_cancer 데이터 셋에서는 XGBoost와 LightGBM이 Cat boost보다 안정적인 성능을보였다
이유는 위에 적힌바와 같이 catvoost는 범주형변수가 많을때 진가를 발휘하기 때문이다.
그렇다고 처리를 못한것은 아닌것을 확인했다.
그래포로도 확인했지만 내가 선능지표로 결과를 확인한이유는 전체적인 정확도(Accuracy), 암 환자를 얼마나 잘 찾아냈는지(Recall)와 암이라고 한 예측일 얼마나 정확한지를(Prercision) 비교해 보고싶어서였다.
세모델을 한데이터셋으로 비교하면서 의료데이터상에서 왜 Recall이 얼마나 중요한지를 알게되었다.

오늘도 하나의 데이터셋을 비교분석해보는 것을 해보며 느낀건. 아무리 데이터성능이 좋다고 제일많이쓴다고 한들 다른 성능들과도 비교해본뒤 제일 뛰어난걸 골라잡아야 할것같다. 그래야 조금 더효율성을 높일수있으니까 !
지금은 연습용 데이터로 연습하고있지만 차차 후에는 조금더 성장했을 나를 기대해본다 ˚✧₊⁎ ᷀ົཽ≀ˍ̮ ᷀ົཽ⁎⁺˳✧

profile
곽숭아_놀이터

0개의 댓글