
3번째 갓생일기 !
오늘은 Boost계열 3가지 모델 (XGBoost, LightGBM, CatBoost) 성능 비교을 해봤다.
📌개요
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] # 피처 일부만 사용
}
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] # 너무 작은 리프 생성 방지
}
param_grid = {
'iterations': [100, 150, 200], #트리 개수
'learning_rate': [0.01, 0.05, 0.1],
'depth': [4, 6, 8], # 트리깊이
'l2_leaf_reg': [1, 3, 5] #리프 정규화(과적합 방지)
}
카테고리 변수 자동 처리
순서기반 부스팅
과적합 자체를 내부적으로 강하게 제어
그래서 파라미터가 적음. 사용자 개입 최소화
실무에서 튜닝 부담이 적다.
이렇게 코드를 작성한후 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
🖍️공부 정리🖍️
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이 얼마나 중요한지를 알게되었다.
오늘도 하나의 데이터셋을 비교분석해보는 것을 해보며 느낀건. 아무리 데이터성능이 좋다고 제일많이쓴다고 한들 다른 성능들과도 비교해본뒤 제일 뛰어난걸 골라잡아야 할것같다. 그래야 조금 더효율성을 높일수있으니까 !
지금은 연습용 데이터로 연습하고있지만 차차 후에는 조금더 성장했을 나를 기대해본다 ˚✧₊⁎ ᷀ົཽ≀ˍ̮ ᷀ົཽ⁎⁺˳✧