내일배움캠프(본캠프)

[내일배움캠프] 본캠프 7/6

anscodus 2026. 7. 6. 20:58

오늘 한 일

Train/Test 분할 및 Multi-target FAI 회귀 방법론 검증


Part 1. Train/Test 분할 기준 검증

[실행 목적] 현재 시간 기준 분할(2025년 7~12월 train / 2026년 1~2월 test)을 사용하는 중인데, 1~2월 FAIL률 급등 구간이 test에 포함되면서 모델 성능이 크게 하락하는 현상이 관찰됨. 이 하락의 원인이 세 가지 중 무엇인지 확인이 필요했음.

  1. 분할 방식 자체의 문제 (LOT 경계가 훼손돼서 데이터 누수가 생긴 것)
  2. 모델의 한계 (모델이 부족해서 못 맞추는 것)
  3. 데이터 자체의 문제 (1~2월 공정 조건이 실제로 달라진 것)

[진행 단계]

1단계. LOT 경계 검증 LOTN_refined 기준 8,414개 LOT 각각의 시작~종료 시각을 계산해서, train/test 분할 기준일(2026-01-01)을 걸치는 LOT이 있는지 확인함. 만약 어떤 LOT이 12월 31일에 시작해서 1월 1일에 끝나는 식으로 걸쳐있으면, 그 LOT의 shot 일부가 train과 test에 나눠 들어가면서 데이터 누수가 발생하기 때문.

2단계. Feature 분포 이동 검증 (KS Test) Train 구간과 Test 구간의 주요 사출조건 변수 9개(Cycle Time, 사출 시간, 충진 시간, 최소 쿠션, 충진 피크압, 전 범위 피크압, 보압 완료 위치, 금형온도1·2)에 대해 Kolmogorov-Smirnov 검정을 실시함. 이 검정으로 두 구간의 데이터가 통계적으로 같은 분포에서 나온 것인지 다른 분포에서 나온 것인지 확인 가능.

3단계. Walk-forward 성능 검증 월별로 train 데이터를 누적하며 다음 달을 test로 검증하는 방식(LightGBM 진단 모델)으로, AUC/Recall/Precision이 시간에 따라 어떻게 변하는지 추적함. 특히 Recall이 1~2월에 상승하는 현상이 실제 모델 성능 개선인지, 아니면 그 시기 실제 불량률 자체가 늘어서 생기는 착시인지 구분하기 위해 Precision을 실제 FAIL 비율과 나란히 비교함.

4단계. 설비(Machine ID) 구성 편차 검증 Train과 Test 구간에서 설비별 데이터 비중과 설비별 FAIL률을 각각 비교함. 목적은 "1~2월 불량 급증이 특정 설비가 유독 많이/적게 돌아서 생긴 현상은 아닌지" 확인하는 것.

[결과]

  • LOT 경계: 분할 기준일(2026-01-01)을 걸치는 LOT 0건. 월 경계를 걸치는 LOT은 2건 있었으나 모두 train 구간 내부(10월→11월)라 분할과 무관함. → 현재 분할선을 그대로 사용해도 안전함.
  • KS Test: 9개 변수 전부 p<0.001로 분포 차이가 통계적으로 유의미함. 특히 충진 시간이 KS statistic 0.562, 평균 +36.1% 증가로 가장 뚜렷한 이동을 보였고, 기존에 찾은 2025-12-08 change point(충진 시간 0.197→0.248s)와 시점이 정확히 일치함.
  • Walk-forward: AUC가 2025-11→12월 fold(0.568)에서 2025-12→01월 fold(0.479)로 급락하며, 이 시점이 KS Test에서 확인한 분포 이동 시점과 일치함. Recall은 1~2월에 0.25→0.54로 상승했지만, 같은 기간 Precision(0.62→0.83)이 실제 FAIL 비율(0.65→0.83)과 거의 동일하게 움직임. 즉 Recall 상승은 모델이 잘해서가 아니라 그 시기 불량이 흔해져서 "불량"이라고 찍기만 해도 맞을 확률이 올라간 결과로 판단됨.
  • 설비 편차: F01 설비가 train 비중 6.0%에서 test 기간엔 가동 이력이 0%(원인 미확인, 별도 확인 필요). 나머지 12개 설비는 비중 변화(최대 ±5%p)와 FAIL률 변화 방향이 서로 무관하게 나타남 — 예를 들어 E09는 비중이 거의 그대로(+0.8%p)인데 FAIL률은 26.6%→77.8%로 급증했고, F06·F07은 비중이 오히려 줄었는데도 FAIL률은 크게 증가함. 즉 특정 설비 비중 변화 때문이 아니라 설비 전반에서 공통적으로 공정 조건이 나빠진 것으로 확인됨.

[결론] 현재 분할 기준(2026-01-01)은 LOT 경계 및 설비 편향 관점에서 문제가 없어 그대로 유지 가능. 1~2월 성능 저하는 모델의 결함이 아니라 사출조건 자체의 실질적인 분포 이동(distribution shift) 때문. → Train(7~12월)을 학습에 쓰고, 정상구간 성능과 1~2월 이상구간 성능을 분리해서 리포트하는 방침으로 결정함.


Part 2. Multi-target FAI 회귀 방법론 비교

[실행 목적] FAI 항목이 30개에 달해서, 항목마다 개별 모델을 만들 것인지(Independent), 여러 타겟을 하나로 묶어서 학습할 것인지(Chained/Multi-output)를 결정해야 함. 이미 EDA에서 FAI 항목 간 상관관계(co-movement)가 확인됐기 때문에, 이 상관 구조를 모델링에 활용하면 이득이 있는지를 실험으로 검증하고자 함. 아울러 Part 1에서 확정한 분할 전략을 실제 회귀 모델링에 적용함.

[진행 단계]

1단계. 분할 재설계 Part 1 결과를 반영해 Train(2025년 7~11월) / Validation(2025년 12월, 정상구간·방법 비교용) / Test(2026년 1~2월, 이상구간·최종 참고용 1회 확인)로 세분화함. 방법 비교는 Validation으로만 진행하고 Test는 최종 확정 후 한 번만 사용해서, 비교 과정에서 Test 정보가 새는 것을 방지함.

2단계. 결측 및 동시관측 매트릭스 확인 Multi-output으로 여러 타겟을 묶으려면 같은 시점에 여러 타겟이 동시에 값을 가져야 하므로, 타겟별 결측률과 타겟 쌍별 동시 존재 비율을 먼저 확인함. E09/E10 설비처럼 구조적 결측이 있을 가능성을 염두에 둔 절차.

3단계. 대표 타겟 선정 전체 FAI 30개를 다 실험하면 비용이 크므로, FAI44 계열(P73/P52/P36)과 FAI21 계열(P73/P52/P36) 상관군 2개, 그리고 FAI44_P21(다른 FAI44 계열 항목과는 상관이 높지만 다른 FAI 계열과는 상관이 거의 없는 이질적/선행지표 성격 항목) 1개를 더해 총 7개 타겟으로 먼저 방향을 확인함.

4단계. 3가지 방법 비교 (Validation 기준)

  • Independent: 타겟별로 완전히 별도의 LightGBM 회귀 모델을 만드는 방식(baseline)
  • Chained: sklearn의 RegressorChain — 앞 타겟의 예측값을 다음 타겟의 입력으로 추가하는 방식
  • MultiOutput: sklearn의 MultiOutputRegressor(트리 기반) — 여러 타겟을 한 번에 예측하도록 감싸는 방식
  • 추가로, 트리 기반 MultiOutput이 실제로는 내부적으로 Independent와 동일하게 동작한다는 게 확인되어, 진짜로 여러 타겟이 파라미터를 공유하는 구조를 보기 위해 MLP(신경망) 버전도 별도로 검증함

5단계. 최종 방법으로 Test(1~2월) 1회 확인 Validation 비교에서 가장 나은 방법(Independent)을 그대로 Test 구간에 적용해서, 이상 구간에서 성능이 어느 정도 나빠지는지 참고 지표로만 남김.

[결과]

  • MultiOutput(트리 기반): Independent 대비 개선율 0.0% — 세 그룹(FAI21군, FAI44군, HETERO) 전부 소수점까지 Independent와 동일하게 나옴. 이는 트리 기반 MultiOutputRegressor가 내부적으로 타겟마다 독립 모델을 반복 학습하는 것과 완전히 같은 동작을 하기 때문으로, "묶어서 학습한 효과"가 실제로는 검증된 적이 없다는 뜻.
  • Chained: FAI21군(상관 가장 높은 그룹) -2.34%, FAI44군 -0.64%, HETERO +0.03%(노이즈 수준)로, 상관이 높은 그룹일수록 오히려 더 손해를 보는 결과가 나옴. 앞 타겟의 예측 오차가 뒤 타겟 입력에 그대로 전파되는 오차 누적 효과가 상관 구조에서 얻는 이득보다 크게 작용한 것으로 해석됨.
  • MLP(진짜 shared-layer): FAI44 계열 4개 타겟 전부 Independent(LightGBM) 대비 19~60% 나쁘게 나옴. 파라미터를 진짜로 공유하는 구조에서도 이득이 없었고, 오히려 이 데이터에는 신경망 계열 자체가 트리 계열보다 덜 맞는 것으로 보임.
  • Validation 종합(7개 타겟 가중 평균 RMSE): Independent 0.190, Chained 0.192(-1.2%), MultiOutput 0.190(동일). 세 방법 중 Independent가 가장 낫거나 최소한 지지 않음.
  • Test(1~2월) 참고 지표: Independent를 그대로 Test에 적용한 결과 가중 RMSE가 0.190에서 0.233으로 22.4% 악화됨. 이는 Part 1에서 분류 문제로 확인한 분포 이동 문제가 회귀 타겟(FAI 값)에도 동일하게 나타난다는 것을 재확인해준 결과.

[결론] "상관 높은 FAI 그룹은 Multi-output/Chained 방식이 유리할 것"이라는 가설은 이번 실험(트리 기반 방식 2종 + 신경망 1종)에서 지지되지 않음. 세 방법 모두 Independent 대비 이득이 없거나 오히려 손해였음. → Independent(항목별 개별 LightGBM)를 기본 방법으로 채택하고, FAI 30개 전체로 확대할지 여부를 다음 단계에서 결정하기로 함.


종합 결론 (Part 1 + Part 2)

두 파트 모두 같은 근본 원인, 즉 2025년 12월을 기점으로 사출조건 자체의 분포가 실질적으로 이동(distribution shift)했다는 사실로 수렴함. Part 1에서는 이 분포 이동이 분류 문제(불량 여부 예측)의 성능 저하 원인임을 확인했고, Part 2에서는 같은 분포 이동이 회귀 문제(FAI 값 예측)에서도 22.4% 성능 악화로 동일하게 나타남을 재확인함. 또한 두 파트 모두 "복잡한 방법(멀티 타겟 결합, 설비 재배분 등)을 쓰면 문제가 해결될 것"이라는 방향의 시도들이 뚜렷한 이득을 주지 못했고, 오히려 단순한 접근(항목별 개별 모델, 시간 기준 분할 유지)이 더 안정적이라는 공통된 결론에 도달함. 따라서 현재 확정된 방향은 (1) Train/Test는 시간 기준 분할을 유지하고 1~2월은 이상구간으로 분리해 별도 리포트하며, (2) 모델링은 Independent(항목별 개별 모델) 방식을 기본으로 FAI 전체 항목으로 확대하는 것. 남은 미해결 과제는 F01 설비의 1~2월 미가동 원인 확인과, 1~2월 이상구간 자체에 대한 별도 원인 분석(설비/원료/공정 조건 변화 등)임.