하하... 어제 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 알파벳 배우다가
심화 프로젝트 들어가니까 갑자기 영어로 소설을 써보게 된 느낌이랄까
'Today I Learned' 카테고리의 다른 글
| [내일배움캠프 QA/QC 6기] TIL #043 심화 프로젝트 발표회 (0) | 2026.07.13 |
|---|---|
| [내일배움캠프 QA/QC 6기] TIL #042 심화 프로젝트 마무으리 (0) | 2026.07.10 |
| [내일배움캠프 QA/QC 6기] TIL #040 (0) | 2026.07.07 |
| [내일배움캠프 QA/QC 6기] TIL #039 (0) | 2026.07.06 |
| [내일배움캠프 QA/QC 6기] TIL #038 (0) | 2026.07.03 |