최종 프로젝트

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

devjjun 2026. 7. 22. 20:39

TIL(Today I Learned)


1️⃣최종 프로젝트(13)

통계 검정 (유의수준 α = 0.05)

검정 목적 결론
Shapiro–Wilk (정규성) 모수 vs 비모수 검정 선택 근거 정규성 기각 → 비모수 검정 채택
Mann–Whitney U 제품군 A vs TO 품질 차이 수준(중앙값) 차이는 유의하지 않음
Kruskal–Wallis 생산라인 간 품질 차이 라인 효과 유의 (공정 관리 인자)
Spearman + FDR 보정 센서–타깃 상관 유의성 다중검정 거짓양성을 q-value로 통제
Kruskal–Wallis 센서의 등급 판별력 막두께·습도·온도·압력 계열이 핵심

제품군 A와 TO는 중앙값 차이는 없지만, 분산(A가 약 2배로 넓음)과 센서 구성이 크게 달라 분리 모델링이 타당

상관 구조 · 덴드로그램

거리 = 1 − |상관| 로 센서를 계층 군집하면 같은 물리량(진공 베이스압력 계열 등)끼리 뭉칩니다. → 피처선택에서 대표만 남기는 근거.


2. 전처리 — STEP 1~10

트리 모델에 넣을 수 있는 깨끗한 피처 행렬로 정리. 

STEP 하는 일 파라미터
1 제품군 분리 (A_31 / T_31·O_31→TO)
2 누수 컬럼 분리 (Y_Quality·Y_Class·ID·시간)
3 위장 결측(999/9999/-999/-9999) → NaN placeholder
4 완전 결측 컬럼 제거
5 결측 60% 초과 컬럼 제거 0.60
6 상수·제로분산 컬럼 제거 nunique≤1, std=0
7 저분산 컬럼 제거 (min-max 정규화 후) 0.01
8 고상관 컬럼 제거 (|corr|>임계) 0.95
9 범주형 LINE 원-핫 인코딩 drop_first
10 남은 결측 유지 (트리 모델이 처리)

STEP 3(위장 결측 → NaN)을 결측·분산 판단보다 먼저 해야, 위장 결측이 제대로 반영

결측 비율 분포


3. 피처 선택 — Nested CV로 정직하게

  1. 값이 같거나 거의 상수인 피처 제거
  2. 상관 높은 피처는 대표 하나만 (계층 군집 → 덴드로그램 시각화)
  3. permutation importance로 순위 매기기 (CV 평균)
  4. 피처 개수를 늘려보며 1-SE 규칙으로 최적 개수 결정

피처 덴드로그램

색이 갈리는 지점이 클러스터 경계(임계 = 1 − 0.90 = 0.10). 같은 색 가지로 묶인 센서들은 중복 정보 → 그중 하나만 대표

 

모델별 Nested CV 

바깥 fold는 채점만, 안쪽은 훈련 데이터만 보고 피처를 고릅니다. 회귀 예측을 확정 임계값으로 사후 등급화해 macro-F1로 채점

 

제품군 A — 최종 모델 XGBoost, 선택 피처 12개

모델 macro-F1 정확도 RMSE
XGBoost 0.711 0.715 0.00562 0.661
Ensemble(평균) 0.702 0.709 0.00560 0.669
CatBoost 0.675 0.677 0.00569 0.663
LightGBM 0.596 0.599 0.00667 0.532

제품군 TO — 최종 모델 CatBoost, 선택 피처 3개

모델 macro-F1 정확도 RMSE
CatBoost 0.680 0.861 0.00306 0.565
Ensemble(평균) 0.646 0.877 0.00291 0.608
LightGBM 0.613 0.856 0.00308 0.558
XGBoost 0.601 0.855 0.00321 0.518

최종 선택 피처 중요도


4. 모델링 — 회귀 → 확정 임계값 분류

별도 분류 모델을 만드는 대신, 회귀 예측값을 제품군별 확정 임계값으로 나누기

구성 내용
모델 LightGBM · XGBoost · RandomForest · Ensemble(VotingRegressor 평균)
검증 KFold(5, shuffle, seed=42)
회귀 지표 RMSE · MAE · R²
분류 지표 macro-F1 · 정확도 · 혼동행렬
임계값 A: 0.5251 / 0.5351, TO: 0.5251 / 0.5349

 

회귀 성능 (RMSE · R²)

제품군 A 회귀 성능(KFold):

모델 RMSE MAE
XGBoost 0.00489 0.00354 0.748
Ensemble 0.00492 0.00359 0.745
RandomForest 0.00500 0.00364 0.737
LightGBM 0.00541 0.00403 0.688

소수 등급 가중치 효과 (가중치 OFF vs ON)

sample_weight(등급 경계 기반 역빈도 + 상한 cap 3)를 각 훈련 fold에서만 계산해 누수 방지

제품군 가중치 macro-F1 등급별 F1 [0, 1, 2]
A (XGBoost) OFF 0.713 [0.629, 0.733, 0.776]
A (XGBoost) ON 0.742 [0.685, 0.753, 0.786]
TO (CatBoost) OFF 0.643 [0.469, 0.933, 0.526]
TO (CatBoost) ON 0.651 [0.558, 0.909, 0.485]

 

혼동행렬 (가중치 ON)


 

다음 할 일

  • 하이퍼파라미터 재튜닝 및 임계값 최적화
  • TO 제품군 피처(3개)가 지나치게 적은지 재검토
  • 최종 파이프라인 앙상블 전략 정리

💡 느낀점

덴드로그램을 통해 군집화된 센서 데이터들을 임계값을 조정해서 동일 항목들로 군집화 되게 조정해볼 예정이다. T/O의 선택된 피처가 성능지표를 통해 뽑아낸 근거있는 결론이기는 하지만 지나치게 적어서 3개로 정말 충분한지 과소적합이 있지는 않은지 어느 방향으로 편향되는지 혼동행렬과 다음 할 일을 통해 증명해나갈 예정이다.