Today I Learned

[내일배움캠프 QA/QC 6기] TIL #041

JiJi0406 2026. 7. 9. 23:48

 

하하... 어제 12시까지 야근...?야자...?하다가 TIL 못 올렸다.

부캠하면서 처음 있는 일... 그래도 TIL은 나답지 않게 성실히 매일 올렸는데...

나중에 하루에 두번 올려서 어제 안 올렸던 거 만회해야지

오늘은 어제처럼 할 게 많은 건 아니었는데 그냥 늦장부리다가 12시 지나기 전에 올려야지 싶어서 부랴부랴 올린다

그래도 어제 좀 써놓은 게 있어서 다행 ^^

 

[ 심화 프로젝트 : Day4 ]

 

모델링 - Interaction Feature(원자재 × 공정) 효과 검증
전처리에서 만들어둔 상호작용 변수가 진짜로 예측에 도움이 되는지 검증해보기

 

 

1. 모델링 전 가설 설정

  • 원자재 특성공정 조건은 따로 볼 게 아니라 서로 곱해서(상호작용) 봐야 실제 제조 현장을 더 잘 설명할 수 있을 거라고 판단
  • 가설 1 : Interaction Feature를 추가하면 예측 성능(R², RMSE, MAE)이 좋아질 것이다
  • 가설 2 : 일부 Interaction Feature는 기존 단일 변수보다 중요도가 높게 나올 것이다

 

2. 진행 과정

1) Feature 버전 나누기

  • Version 1: 기존 process + 시계열 변수가 혼재된 13개 Interaction Feature
  • Version 2: 시계열(ts_) 기반으로만 통일한 Interaction Feature
  • 어떤 방식이 실제 공정을 더 잘 설명하는지 비교해보기

 

2) 데이터 누수 차단

  • batch, code, target 자체는 물론이고, 타정 공정 완료 후에나 알 수 있는 사후 QC 지표(dissolution_min, impurity 등)는 전부 X에서 제외 (데이터 전처리 때도 동일 과정 지남)
  • ICH Q8 가이드라인 기준으로 "제어 가능한 입력 변수(CMA, CPP)만으로 품질을 예측해야 한다"는 원칙을 지킴

3) Train/Test 분할

  • 제품 코드(code)별 데이터 수 편차가 커서(어떤 코드는 1~2개뿐) 그냥 랜덤 분할하면 특정 제품이 아예 학습에서 빠질 위험 O
  • 그래서 code Stratified Split을 적용하고, 샘플 2개 미만인 코드는 예외처리함

4) 모델 비교

  • Baseline(순수 기본 변수) vs Version 1 vs Version 2를 Random Forest, Linear Regression, XGBoost 세 모델에서 다 돌려봄

 

3. 결과 

  • 세 모델 전부에서 Baseline이 가장 성능이 좋았음 → 가설 1은 기각
  • Interaction Feature를 추가한 Version 1, 2는 대부분 R²가 소폭 낮아지고 RMSE/MAE는 오히려 늘어남
  • 다만 XGBoost에서는 Version 2가 Version 1보다는 나은 결과를 보였는데, 그래도 Baseline보다는 낮았음 → 일관된 효과는 아님

 

  • Feature Importance: api_ps05 × tbl_speed같은 일부 상호작용 변수가 전체 변수 중 3~4위로 상위권에 들어감 → 가설 2는 부분 채택

  • 흥미로웠던 건!! 앞서 상관분석에서는 상관계수가 낮았던 변수가 트리 모델에서는 오히려 중요도가 높게 나온 경우가 있었음 → 단순 선형 상관관계로는 못 잡는 비선형적 관계를 트리 기반 모델이 잡아낸 것으로 보임

 

4. 모델링하며 느낀 점

  • 상호작용 변수를 만들면 당연히 성능이 좋아지겠지라고 예상했는데, 실제로는 성능 향상으로 이어지지 않아서 좀 의외
  • 근데 성능은 안 올랐어도 Feature Importance에서 상위권에 든 변수가 있다는 게 그냥 버릴 실험은 아니었다는 생각이 든다. 정확도엔 기여 안 했지만, 모델이 참고는 하고 있다는 게 은근 의미 있는 발견 같음
  • 상관분석 결과랑 Feature Importance 결과가 다르게 나온 부분이 가장 인상 깊었다. 상관계수 하나만 믿고 변수를 거르면 안 되겠다는 걸 배웠고, 앞으로 EDA할 때 선형 상관관계로 안 보인다고 바로 버리지 말자는 원칙? 기준? 가치관?이 생겼다고 해야하나
  • 다음엔 이 상호작용 변수들을 조금 더 좁혀서(중요도 높았던 것들 위주로) 다시 시도해보거나, 비선형 관계를 더 잘 잡는 다른 피처 엔지니어링 방향도 고민해봐야겠다고 생각

 

요즘 팀원분들이랑 회의하면 이럼

 

기초 프로젝트에서는 ABC 알파벳 배우다가

심화 프로젝트 들어가니까 갑자기 영어로 소설을 써보게 된 느낌이랄까