ICR - Identifying Age-Related Conditions

MSMoon·2025년 4월 15일

kaggle 학습

목록 보기
4/18
post-thumbnail

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

0개의 댓글