최종 프로젝트

Chapter.9 최종 실전 자동화 프로젝트 (5)

devjjun 2026. 6. 30. 20:44

TIL(Today I Learned)


1️⃣실전 자동화 프로젝트 (4)

데이터 전처리 파이프라인

STEP 1. 누수(Leakage) 컬럼 제거

모델 학습 시 타깃 정보가 포함되지 않도록 누수 컬럼을 제거한다.

  • 타깃 컬럼 Y_Quality 제거
  • PRODUCT_ID, TIMESTAMP는 모델 입력 피처에서 제외
  • 단, TIMESTAMP는 시간 기반 검증을 위해 별도로 보관

STEP 2. 완전 결측 컬럼 유지

완전히 결측(NaN)으로 이루어진 컬럼도 삭제하지 않고 유지한다.

  • 모든 값이 NaN인 컬럼 유지
  • 결측 여부 자체가 의미를 가질 수 있으므로 제거하지 않음

STEP 3. 상수 · 저분산 컬럼 제거

정보량이 없는 센서 컬럼을 제거한다.

제거 기준

  • nunique() ≤ 1
  • std() = 0

STEP 4. 위장 결측값 정규화

실제 결측값을 의미하는 placeholder 값을 모두 NaN으로 통일한다.

변환 대상 예시

  • 999
  • 9999
  • -999
  • -9999

STEP 5. 제품별 데이터 분리

제품 특성에 맞게 데이터를 분리하여 모델을 학습한다.

  • A_31
  • T_31
  • O_31

단, 제품 구분을 위해 PRODUCT_CODE는 유지한다.


STEP 6. 범주형 변수 인코딩

모델 학습을 위해 범주형 변수인 LINE을 인코딩한다.

  • LINE 변수 인코딩
  • 머신러닝 모델 입력 형태로 변환

STEP 7. 결측값 처리

트리 기반 모델의 특성을 고려하여 결측값을 별도로 대체하지 않는다.

  • 결측값(NaN) 그대로 유지
  • 불필요한 평균·중앙값 대체(Imputation) 수행하지 않음

STEP 8. 타깃 및 검증 설계

타깃 설계

  • Y_Quality를 예측하는 회귀 모델 학습
  • 예측 결과를 임계값(Threshold)을 기준으로 품질 등급으로 분류

클래스 불균형 처리

  • 클래스 가중치(Class Weight)를 적용하여 불균형 완화

검증 방법

  • 데이터 누수를 방지하기 위해 Stratified K-Fold Cross Validation 사용
  • 각 Fold의 클래스 비율을 유지하며 모델 성능 평가

💡 느낀점

결측값과 위장 결측값을 처리하고, 상수 및 저분산 컬럼을 제거하며, 데이터 누수를 방지하기 위한 피처 구성을 수행하는 과정이 모델 성능과 신뢰성을 확보하는 과정임을 알 수 있었다. 8단계에 전처리를 진행했음에도 컬럼 수가 지나치게 많아 과적합이 우려되어 결측 비율을 기준으로 컬럼 축소를 진행해야 할지 고민되었다. 추후에는 고민한 내용을 토대로 전처리를 진행하고 과정에서 K-Fold를 적용시켜 활용 가능성과 신뢰성을 함께 고려하는 검증을 추가하여 진행할 예정이다.