오늘 한 일
Part 1. 13번 — Time Block Variance Investigation
1-1. 배경 설명 (왜 이 작업을 했는가)
팀 회의에서 "drift 문제를 시간 범주 단위로 나눠서 그 안에서 train/test를 분할하자"는 아이디어가 나왔음. 이를 검증하기 위해 10일 단위 범주를 만들어 fail rate를 확인하던 중, changepoint(2026-01-06) 이후 범주에서 fail rate가 계속 상승하는 패턴과 범주 내부에서도 큰 편차(예: 특정 범주 안에서 70%→97%)가 발견되어, "범주를 어떻게 나눠야 하는지"를 데이터 기반으로 규명하는 것이 이 노트북의 목적이 됨.
1-2. 진행 과정
10일 범주 검증
- 사출공정_세그먼트_워밍업피처_추가.csv(231,440 shot) 기준 10일 단위 25개 범주 생성
- changepoint 이전(범주 0~18)은 32~56% 사이 안정적 밴드, 이후(범주 19~24)는 63%→87%로 계속 상승
- 범주 하나 안에서도 fail rate가 크게 벌어지는 경우 확인 → "범주 안은 안정적"이라는 전제가 무너짐
일 단위 세분화 → 급등 구간 발견
- post 구간을 일 단위로 재확인, 01/07~01/31 완만한 상승 → 02/01~02/17 급등(68%→97.04%) → 02/18~02/28 하락 후 정체의 3단계 패턴 확인
급등 원인 조사
- 설비/재가동 문제 기각: 12개 설비 중 11개가 동시에 급등(+14~42%p), 재가동 비율은 오히려 낮음(3.57% vs 1.42%)
- FAI117_V1/V2, FAI123_U의 NG율이 압도적으로 급증(최대 +22.75%p) — 기존 baseline SHAP top feature와 일치
- 원본값의 일별 평균은 급등 전후로 거의 변화 없음 → "값이 이동"한 게 아님
- 표준편차(산포) 확인 결과, FAI 및 사출조건 항목이 급등구간에서 15~35% 확대됨 — 평균은 그대로, 분산만 커진 패턴. 1월 중하순부터 서서히 확대 → 2월 초중 정점 → 2월 하순 진정
선행성 확인
- 기준선(01/07~01/16) 대비 임계값(1.5×표준편차, 3일 연속)으로 항목별 확대 시작일 비교
- "사출 시간" 산포 확대 시작일(01/23)이 fail_rate 확대 시작일(02/01)보다 9일 앞섬 — 사출조건 산포를 조기경보 신호로 활용 가능함을 시사
- 임계값 완화(1.0×표준편차, 2일 연속) 재확인 시 오히려 신호 신뢰도가 낮아짐(기준선 첫날부터 잡히거나 결과보다 늦게 잡히는 등) → 엄격 기준의 "사출 시간" 단독 신호가 더 신뢰할 만한 결과로 재확인됨
- 설비별로 재확인한 결과, 8/12개 설비는 통합 기준과 비슷한 시기(01/15~01/26)에 몰렸으나 E09(01/31)·F03(02/24)는 크게 늦고 E05·E08·F08은 미감지 — "전사적 이슈"이지만 설비별 시차는 존재함
표본 부족 장비 배제 기준 설정
- 분류 모델: 13개 설비 전부 기준(train≥500·test≥500·fail≥30·segment≥2) 통과
- 회귀 모델: E09, F04, F02, F01, E06 5개 설비가 유효 FAI 항목(NG≥5) 20개 기준 미달로 부적합 판정
1-3. 종합 결과
- fail rate 급등의 원인은 설비 개별 문제가 아니라 사출조건 및 FAI 값의 산포(변동성) 확대라는 것을 확인함
- 사출조건 산포 확대가 fail rate 급등보다 9일 선행한다는 것을 확인 — 실무 조기경보 가능성의 근거가 됨
- 10일 고정 범주 대신, 실제 발견된 흐름(안정기 / 확대기 / 급등기 / 진정기)을 기준으로 시간 구간을 재설계해야 한다는 결론에 도달
- 표본 부족 장비에 대한 배제 기준을 수립하여 다음 단계(14번) 모델링에 활용할 준비를 마침
Part 2. 14번 — Time Block Split Modeling
2-1. 배경 설명 (왜 이 작업을 했는가)
13번에서 발견된 시간 구간(안정기/확대기/급등기/진정기)과 진단 결과들이 실제 모델링에는 반영되지 않은 상태였음. 또한 기존 모델링은 LOT이 아닌 shot(행) 기준으로 분할되어 있었음. 조원이 설계한 파이프라인(Raw MES Data → Preprocessing → Restart 분석/PCA Shift/KS Test → Time Block Split → Train/Val/Test → FAI Regression/Fail·Pass 분류 → Performance → Process Interpretation)의 8단계를 빠짐없이 반영해 처음부터 재모델링하는 것이 이 노트북의 목적임.
2-2. 진행 과정
파이프라인 8단계 반영
- PCA Shift: 사출조건 9개를 PCA로 압축, PC1 표준편차가 안정기 대비 확대~급등기 구간에서 뚜렷이 상승 확인
- KS Test 재검정: 안정기→확대기→급등기→진정기 모든 구간 전환에서 사출조건·FAI raw 40개 항목 전부(100%) 분포 유의 변화 확인
- Time Block Split: phase 컬럼(안정기/확대기/급등기/진정기)을 데이터에 부여
- Train/Val/Test (LOT 기준 7:1:2): 장비별 LOT을 시간순 정렬해 LOT 단위로 분할(LOT이 안 쪼개지도록 검증 완료)
- FAI Regression: 8개 설비×31개 FAI 항목, feature 12개(사출조건9+워밍업2+phase)
- Fail/Pass 분류: 13개 설비, feature 43개(사출조건9+FAIraw31+워밍업2+phase)
- Performance 보완: 회귀에 RMSE 추가, 분류에 FN 추가
- Process Interpretation: SHAP 분석, phase 중요도 확인, PC1-fail 관계 확인
핵심 결과 — 분할 방식 개선이 성능을 끌어올리지 못함
- 회귀: R²<0 비율 94.0% (13번 참고치 96%와 유사, 개선 없음)
- 분류: 가중평균 AUC 0.6697 (13번 0.6844보다 오히려 소폭 하락)
- 원인: split×phase 교차표 확인 결과, train 데이터의 절대다수(154,200건)가 안정기 구간에만 몰려 있고 확대기·급등기·진정기는 거의 전부 test에 존재(train 내 확대기 5,527건, 급등기·진정기 0건) → 모델이 phase의 변화를 학습 단계에서 거의 관측하지 못함. 6개 설비 SHAP 중 5개에서 phase importance 최하위
추가 검증 — 분류 결과에 대한 과적합/누수 재검토 (중요)
E10의 Recall(0.9798)이 비정상적으로 높게 나와 별도로 심층 점검을 진행함.
- E10 단독 점검: Train AUC 0.9981 vs Test AUC 0.5985(격차 0.3997, 심한 과적합). Trivial baseline(전부 FAIL 예측) F1(0.8163)이 모델 F1(0.8084)보다 높음 — 모델이 실질적으로 무의미한 상태
- 13개 설비 전체 스캔: 13개 전부 F1_개선폭이 음수(trivial baseline보다 못함), 13개 전부 train AUC 0.989~1.0으로 예외 없이 심한 과적합 → 14번의 분류 결과 전체가 재검증 필요 상태로 판정됨
- 개선 시도 1 (정규화 강화 + early stopping): num_leaves↓, max_depth 제한, reg_alpha/lambda 추가. AUC 격차는 0.32→0.18로 줄었으나 F07/E09/F03은 학습이 1~2 iteration에서 멈춰 F1=0(전부 PASS로 예측). 가중평균 test AUC 0.6291로 오히려 하락. 13개 전부 여전히 trivial보다 못함
- 개선 시도 2 (롤링 표준편차 feature 추가 + 클래스 불균형 보정): 사출시간·최소쿠션·CycleTime·FAI117계열의 최근 20shot 표준편차 6개 추가, scale_pos_weight 적용. 롤링 feature가 SHAP top10에 거의 안 잡힘(값 자체가 LOT 경계 신호로 왜곡됨 — 같은 LOT 내 조건이 거의 고정값이라 분산이 0에 가까움). 가중평균 test AUC 0.6390. 13개 전부 여전히 trivial보다 못함
- 결론: 모델 복잡도 조정, feature 추가, 클래스 불균형 보정 세 가지 모델링 기법을 모두 시도했으나 전부 실패. 이는 모델 튜닝으로 해결 가능한 문제가 아니라, train(안정기)과 test(확대기~진정기)의 데이터 분포 자체가 근본적으로 다르다는 구조적 문제로 판단됨
2-3. 종합 결과
- 파이프라인 8단계는 빠짐없이 반영 완료했으나, 회귀·분류 성능 자체는 개선되지 않았고 오히려 심층 검증 결과 **분류 결과 전체가 신뢰할 수 없는 상태(trivial baseline보다 못함)**로 확인됨
- 원인은 두 가지로 정리됨: (1) FAI raw 예측력의 상당 부분이 이미 아는 답의 재구성이라는 기존 한계, (2) train/test 간 시간 구간 분포가 근본적으로 달라 초반 학습 패턴이 후반에 적용되지 않는 구조적 문제
- 다음 단계 제안:
- train에 확대기·급등기 데이터를 일부 포함시켜 재분할 검증 (실무 적용성은 별도 검토 필요)
- 장비별 개별 모델을 통합 모델(Option A 방식)로 전환해 데이터량 확보
- 분류/회귀 대신 이상탐지(Isolation Forest 등) 방식으로 접근 전환 검토 — 산포 확대로 인한 불량은 개별 shot 조건값 기반 분류보다 "정상 분포로부터의 이탈"을 보는 방식이 구조적으로 더 적합할 가능성
'내일배움캠프(본캠프)' 카테고리의 다른 글
| [내일배움캠프] 본캠프 7/14 (0) | 2026.07.14 |
|---|---|
| [내일배움캠프] 본캠프 7/13 (0) | 2026.07.13 |
| [내일배움캠프] 본캠프 7/9 (1) | 2026.07.09 |
| [내일배움캠프] 본캠프 7/8 (0) | 2026.07.08 |
| [내일배움캠프] 본캠프 7/7 (0) | 2026.07.07 |