1. 대회 설명
- 목표: 개인의 생물학적 지표를 기반으로 연령 관련 질환의 유무를 예측하는 모델 개발
- 문제 유형: 이진 분류
- 데이터 배경
-> 다양한 생물학적 수치 (예: 혈압, 심박수, 체온 등)를 포함
-> class 라벨은 두 가지 그룹으로 나뉘며, 이 중 어느 그룹에 속하는지를 예측
-> 일부 변수에 결측치가 존재하며, 범주형 변수('EJ') 도 포함되어 있어 전처리와 피처 엔지니어링이 중요
2. 성능 평가 방식 이해
- Log Loss: 예측 확률과 실제 라벨 간의 차이를 측정하는 지표로, 낮을수록 좋은 성능을 의미
3. 데이터 전처리
3-1) EDA
- 데이터 확인: 학습 데이터는 총 265개 피처와 1개의 타겟 변수로 구성
- 결측치 확인: 일부 피처에 결측치 존재
- 타겟 분포 확인: class 변수의 비율은 비교적 균형있게 분포
3-2) Data Cleansing
- 결측치 처리: XGBoost 모델을 활용하여 각 피처의 결측값을 예측해 보간, 모든 수치형 컬럼에 대해 반복적으로 결측값 채움
- 범주형 변수 처리: 'EJ'변수는 Label Encoding을 적용하여 수치형으로 변환
3-3) Feature Engineering
- 스케일링: StandardScaler를 이용해 모든 수치형 feature에 대해 정규화 수행
- 데이터 불균형 처리: SMOTE를 사용하여 class 불균형 해소
- 기존 변수의 품질 향상을 위한 보건 및 스케일링에 집중하며, 파생 변수를 생성하지 않음
4. 모델링
4-1) 모델
- 총 5개의 모델이 stacking 앙상블로 통함
- XGBoostClassifier
- LightGBMClassifier
- CatBoostClassifier
- HistGradientBoostingClassifier
- RandomForestClassifier
- 최종 예측은 stackingClassifier를 통해 수행, meta-model은 LogisticRegression 사용
4-2) 데이터 분할
- Stratified K-Fold (n=5) 방식으로 교차 검증 수행
- 모델 훈련 시 Validation set은 fold별로 따로 분리되며, EarlyStopping 조건을 설정하여 학습 과적합 방지
4-3) 하이퍼파라미터 튜닝
- 자동화된 튜닝 라이브러리는 사용되지 않음
- 모델 간의 다양성을 확보하기 위해 서로 다른 모델 구조를 병렬로 사용
4-4) 최종 성능
- Cross Validation LogLoss: 0.331
5. 정리(Lesson & Learned)
- 결측치 처리: 단순 평균이나 중앙값 대체가 아닌 XGBoost 기반 회귀 모델을 활용한 결측값 보간은 새로운 접근, 전체 피처를 대상으로 순차적으로 결측값을 예측 및 보완함으로써 데이터 손실 없이 성능을 높이는 전략에 대해 학습
- 다양한 모델의 활용과 Stacking: XGBoost, LGBM, CatBoost, HistGradientBoosting, RandomForest 등 서로 다른 특성을 가진 모델들을 병렬적으로 학습시킨 뒤 Stacking으로 최종 예측을 수행함으로서 개별 모델의 약점을 보완하고 예측 안정성을 향상시키는 앙상블 전략을 체득
- 스케일링 및 SMOTE: 정규화로 피처간 스케일을 맞추고, SMOTE를 통해 Class간 불균형을 해결, LogLoss 최적화를 위한 확률 예측에서 데이터 전처리의 중요성을 확인
ICR - Identifying Age-Related Conditions