성과
0.74218
최종 AUC
3종
비교 실험한 부스팅 모델
13 → 5
재구성한 범주형 그룹
Overview
난임 시술 데이터로 임신 성공 여부를 예측하는 과제였습니다. 모델을 바꿔가며 성능을 쥐어짜기보다, 시술 데이터가 실제로 무엇을 의미하는지 이해하고 그 도메인 지식을 피처로 옮기는 데 시간을 더 썼습니다.
주요 기능
- 고유값이 많은 범주형 피처를 단순화 — 배아 생성 이유를 13개에서 5개 그룹(현재 시술용 · 배아 저장용 · 기증용 · 난자 저장용 · 연구용)으로 재구성
- 특정 시술 유형에서 ICSI · IVF · Unknown 포함 여부를 이진 파생 변수로 분리
- DI · IVF · 기타 시술 데이터를 합산 변수로 통합하고, IVF/DI 비율 변수를 만들어 시술 성향을 수치화
- 도메인 지식 기반 파생 변수 — 배아 이식 성공률(이식 배아 수 / 총 생성 배아 수), 배아 생존 기간(이식 경과일 − 해동 경과일)
- 분포가 치우친 변수에 `np.log1p` 로그 변환을 적용해 스케일 보정
- XGBoost · LightGBM · CatBoost를 동일 조건에서 비교 실험
- Optuna Bayesian Optimization으로 학습률 · 트리 깊이 · L1/L2 정규화 파라미터 탐색
문제 해결
Problem
범주형 피처의 고유값이 너무 많아 모델이 복잡해지고 학습이 불안정했습니다.
Cause
배아 생성 이유처럼 값이 13종으로 쪼개진 피처는 개별 값의 표본이 적어, 모델이 일반화 대신 개별 사례를 외우는 쪽으로 갔습니다.
Solution
의미가 같은 값끼리 5개 그룹으로 묶고, 시술 유형은 ICSI · IVF · Unknown 포함 여부만 남긴 이진 변수로 분리했습니다. 차원이 줄면서 학습 안정성이 올라갔습니다.
Problem
Validation AUC는 잘 나오는데 Test AUC가 따라오지 않았습니다.
Cause
하이퍼파라미터를 검증 성능에만 맞춰 조이다 보니 검증셋에 과적합되고 있었습니다.
Solution
Optuna 탐색 범위에 L1/L2 정규화 파라미터를 포함시키고, 매 시도마다 Validation AUC와 Test AUC를 나란히 비교해 두 값의 간격이 벌어지지 않는 조합을 최종안으로 골랐습니다.
결과
- 최종 AUC 0.74218 기록
- 도메인 지식에서 끌어낸 파생 변수가 단순 모델 교체보다 성능에 크게 기여한다는 걸 확인
- Validation과 Test AUC를 함께 보는 과적합 방지 전략을 정립