QAQC_5기 부트캠프/실전 프로젝트

[내일배움캠프] QA/QC_5기 본캠프(0601)

두껍22 2026. 6. 1. 21:13

에이타니 문제풀이

 

시계열 개념, 머신러닝 문제

더보기

시계열 데이터 구성 요소 구분

이 개념이 무엇인지

시계열 데이터는 시간 순서대로 쌓인 데이터예요. 예를 들어 매일의 주식 가격, 매월 판매량, 시간대별 기온 같은 것들이죠. 이런 데이터를 분석할 때 중요한 건 "시간에 따라 어떤 패턴이 있는가" 를 찾는 거예요.

시계열 데이터 구성 요소 구분은 이 시간의 흐름 속에서 여러 가지 움직임을 각각 구분해서 이해하는 것이에요. 마치 음악에서 악기별 음성을 분리하듯이, 시계열 데이터에 숨어 있는 각각의 신호를 따로따로 봐야 한다는 뜻입니다.

시계열 데이터의 주요 구성 요소

시계열 데이터는 보통 네 가지 요소로 이루어져 있어요:

  • 추세(Trend): 장기적으로 위쪽 또는 아래쪽으로 향하는 움직임. 예를 들어 매년 매출이 계속 올라가는 추세
  • 계절성(Seasonality): 일정한 주기를 반복하는 패턴. 여름이 되면 항상 아이스크림 판매가 많아진다거나, 연말이 되면 선물 구매가 늘어나는 식의 반복
  • 순환성(Cyclicity): 계절성보다 더 긴 주기로 나타나는 변동. 경제 사이클처럼 수년 단위로 반복되는 패턴
  • 불규칙성(Irregularity/Noise): 예측 불가능한 무작위 변동. 갑작스러운 사건이나 오류로 인한 갑자기의 변화

흔히 헷갈리는 지점

"이 요소들을 구분한다는 게 뭔가요?"

많은 학생들이 "구분한다"는 말을 들으면 "데이터에서 각 요소를 물리적으로 분리해내서 따로 보존해야 한다" 고 생각해요. 하지만 그게 아니에요.

구분한다는 건 "이 데이터 안에 추세가 있네, 계절성도 있네, 불규칙한 부분도 있네 — 이렇게 인식하고 이해하는 것" 이에요. 원래 데이터는 이 모든 요소가 섞여 있고, 우리는 그걸 눈으로 차트를 보거나 수학적인 방법(예: 분해 기법)으로 분석해서 각 요소의 영향력을 파악하는 거랍니다.

"계절성과 순환성은 뭐가 다르죠?"

또 다른 헷갈림은 계절성과 순환성의 차이예요. 두 개 다 반복되는 패턴이라서 헷갈리기 쉬워요.

  • 계절성 정해진 주기가 있어요. 1년 주기, 7일 주기처럼 일정해요. 무조건 반복돼요.
  • 순환성은 주기가 정해지지 않거나 매우 길어요. 경제 호황→침체→호황으로 도는 게 언제 일어날지는 예측이 어렵고, 주기도 항상 같지 않아요.

쉽게 말해서, 계절성은 "매년 여름이면 에어컨 판매가 는다" 같은 기계적 반복이고, 순환성은 "경제가 좋을 때도 있고 안 좋을 때도 있는데 정확히 언제인지는 모르는" 그런 큰 흐름의 변화예요.

"불규칙성은 정말로 무시해도 되나요?"

마지막으로, 불규칙성을 보면 학생들이 "이건 중요하지 않은 거 아닌가요?" 라고 묻곤 해요. 하지만 아니에요. 불규칙성을 제대로 인식하는 것도 매우 중요합니다.

왜냐하면 시계열 모델을 만들 때 불규칙성이 크면 모델의 예측 정확도가 떨어지기 때문이에요. 따라서 불규칙성을 이해하고, 그걸 줄이는 전처리 방법(예: 평활화)을 써야 합니다. 결국 네 가지 요소 모두를 인식하는 게 좋은 분석과 좋은 모델로 향하는 첫 걸음이에요.

정리하며

시계열 데이터 구성 요소 구분은 "이 데이터 안에 어떤 신호가 섞여 있는지 인식하기" 예요. 추세, 계절성, 순환성, 불규칙성이 항상 함께 섞여 있다는 것을 받아들이고, 각각이 어떤 특성을 가진 움직임인지를 이해하면 돼요. 이렇게 구성 요소를 제대로 파악하면, 나중에 시계열 데이터를 다룰 때 더 정확하고 의미 있는 분석을 할 수 있을 거예요!

 

왜 머신러닝 문제가,,

 

 

회귀 평가 지표

더보기

회귀 평가 지표의 이해와 활용

이 개념이 무엇인가요?

회귀 평가 지표는 우리가 만든 회귀 모델이 실제 값을 얼마나 잘 예측했는지 측정하는 도구예요. 모델이 학습을 잘 했는지, 아니면 개선이 필요한지 판단하기 위해 꼭 필요한 것이죠.

가장 자주 사용하는 지표들이 있어요. **MSE(평균제곱오차)**는 실제 값과 예측 값의 차이를 제곱해서 평균을 낸 것이고, **MAE(평균절대오차)**는 차이의 절댓값을 평균 낸 것, **R²(결정계수)**는 모델이 데이터의 분산을 얼마나 설명하는지 보여주는 지표예요.

흔히 헷갈리는 부분을 정확히 알아봐요

첫 번째 오해: "각 오차를 그냥 더하면 되지 않을까?"

MSE를 구할 때 많은 학생이 오류의 합을 바로 평균으로 나누려고 해요. 하지만 MSE는 차이를 제곱한 후 평균을 내야 한다는 점이 중요해요. 왜 제곱을 할까요? 음수와 양수 오차가 서로 상쇄되는 걸 막고, 큰 오차를 더 심각하게 반영하기 위해서예요.

예를 들어, 실제 값이 [10, 20, 30, 40]이고 예측 값이 [12, 18, 32, 38]이라면:

  • 각 차이: [2, -2, 2, -2]
  • 제곱 후: [4, 4, 4, 4]
  • MSE = (4 + 4 + 4 + 4) ÷ 4 = 4.0

만약 제곱을 빠뜨리고 차이의 합만 평균 내면 (2 - 2 + 2 - 2) ÷ 4 = 0이 되어서 모델이 완벽하다고 착각할 수도 있어요.

두 번째 오해: "지표마다 의미가 다르다는 걸 놓치기"

MSE, MAE, R²는 모두 다른 각도로 성능을 평가해요. MSE와 MAE는 낮을수록 좋지만, R²는 높을수록 좋아요. 또한 MSE는 큰 오차에 더 민감하고, MAE는 모든 오차를 동등하게 봐요. 상황에 맞춰 어떤 지표를 쓸지 선택하는 게 중요해요.

세 번째 오해: "계산 과정에서 데이터 개수를 빼먹기"

평가 지표는 항상 전체 샘플 개수로 나눠서 평균을 구해요. 이것을 빼먹으면 절대값만 남게 되어서 데이터 크기에 따라 지표가 왜곡돼요. 평가 지표의 본질은 "평균적으로" 얼마나 잘못 예측했는가를 보는 것이거든요.

정리하면

회귀 평가 지표는 실제 값과 예측 값의 관계를 정확히 계산하는 것이 핵심이에요. 공식 하나하나의 의미를 이해하고, 지표 간의 차이를 명확히 아는 게 이 개념을 완전히 마스터하는 길이에요.

 

에이타니가 많이 아파요

F-통계랑과 P값

더보기

F-통계량과 p-값의 이해

1) 이것이 무엇인지 — 핵심 정의

F-통계량은 여러 집단의 평균이 정말 다른지를 판단하기 위해 만든 수치예요. 쉽게 말해서, 집단 사이의 차이가 집단 내부의 차이보다 얼마나 더 큰지를 비교하는 거랍니다.

예를 들어 A, B, C 세 반의 수학 성적을 비교한다고 생각해보세요. 각 반 안에서 학생들 성적이 조금씩 다르겠죠? (반 내부의 차이) 동시에 반들 사이에도 평균 성적 차이가 있을 거고요. (반 사이의 차이) F-통계량은 이 두 가지 차이의 비율을 계산해요.

p-값은 F-통계량을 구한 후, "만약 집단 간에 실제로 차이가 없다면, 지금 우리가 얻은 이 정도의 F-통계량이 나올 확률이 얼마나 될까?"라는 질문에 대한 답이에요. 0~1 사이의 확률 값으로 표현됩니다.

2) 자주 헷갈리는 부분 — 올바른 이해

혼동 포인트: "F-통계량은 두 집단을 비교할 때만 쓴다?"

많은 학생들이 "F-통계량도 t-검정처럼 두 집단의 평균 차이를 보는 거 아닌가?" 라고 생각해요. 하지만 이건 중요한 차이가 있어요.

t-검정은 정확히 두 집단만 비교할 때 사용해요. 예: A반 vs B반

F-통계량세 개 이상의 집단을 한 번에 비교할 때 사용해요. 예: A반 vs B반 vs C반 vs D반

만약 집단이 3개 이상인데 t-검정을 여러 번 반복하면, 오류가 자꾸만 누적돼요. 그래서 한 번에 여러 집단을 공정하게 비교하기 위해 F-통계량(분산분석, ANOVA)이 필요한 거랍니다.

혼동 포인트: "p-값이 작으면 뭔가 '나쁜' 결과인가?"

p-값이 작다는 것은 "집단 간에 차이가 없다는 가정 아래에서 현재 데이터가 나올 확률이 매우 낮다"는 뜻이에요. 다시 말해, 실제로는 집단 간에 의미 있는 차이가 있다는 증거가 강하다는 뜻이에요. 이건 좋은 결과예요!

반대로 p-값이 크면, "만약 집단 간에 차이가 정말 없다면 지금의 결과가 충분히 나올 수 있다"는 뜻이라 집단 간 차이가 없을 가능성이 커요.

보통 p-값 < 0.05를 기준으로 "통계적으로 유의하다" (=집단 간 차이가 있다고 판단한다)고 말해요.

핵심 정리

F-통계량과 p-값은 한 세트예요. F-통계량이 "집단 간 차이가 얼마나 큰가"를 수치화한 거라면, p-값은 "그 차이가 정말 의미가 있는 차이인가"를 확률로 판단하는 거랍니다. 둘 다 여러 집단의 평균 비교에 함께 사용되는 개념이라는 걸 기억하세요!

 

 

 

실전 프로젝트 

 

더보기

 

TIL: OES 기반 금속 에칭 공정 이상탐지 분석 정리

오늘 학습한 내용

오늘은 금속 에칭 공정에서 수집된 OES 스펙트럼 데이터를 활용해 정상 공정과 이상 공정의 차이를 분석하고, 이를 머신러닝 기반 이상탐지 모델로 연결하는 방법을 정리했다. 분석 대상은 ev_data, oes_data, rfm_data였지만, 이번 보고서의 중심은 oes_data.csv 기반의 Fault Detection & Classification이었다.

OES 데이터 구조 이해

OES 데이터는 총 4,786개의 row와 131개의 column으로 구성되어 있었다. 이 중 파장 컬럼은 129개이며, S1, S2, S3 세 개 센서가 각각 43개 파장을 측정한 구조였다. 파장 범위는 250.0~791.5 nm였고, 결측치는 0건으로 데이터 품질 자체는 양호했다. 웨이퍼 수는 총 126개이며, calibration 106개와 fault 20개로 구성되어 있었다.

실험 그룹은 29, 31, 33 세 그룹으로 나뉘어 있었고, 각 그룹은 서로 다른 시점에 수행되었기 때문에 장비 상태, 챔버 오염도, 센서 보정 상태 등에 따라 정상 스펙트럼 기준선이 달라질 수 있었다. 이를 group drift로 보고, 전체 calibration 기준뿐 아니라 그룹별 calibration 기준인 local baseline을 함께 적용해야 한다는 점을 확인했다.

주요 OES 파장과 공정 의미

OES에서 강하게 나타나는 피크 파장은 플라즈마 내부의 반응종과 식각 부산물 변화를 반영한다. 특히 272.2 nm와 278.3 nm는 Al 원자선으로, 알루미늄 식각 반응과 관련이 크다. 394.4/395.8 nm 역시 Al 발광선으로 fault 조건에서 반복적으로 이탈이 관찰되었다. 544.2 nm는 Cl 또는 AlCl 반응 생성물과 관련된 파장으로, 식각 부산물 변화 지표로 활용할 수 있었다. 725.0/753.7 nm는 Cl 원자선으로 Cl 플라즈마 밀도 변화를 확인하는 데 의미가 있었다.

Group Drift와 Local Baseline 보정

같은 calibration 공정이라도 실험 그룹에 따라 OES intensity 기준선이 달라졌다. 특히 272.2 nm, 278.3 nm, 261.8 nm처럼 Al 관련 고강도 파장에서 group drift가 크게 나타났다. 따라서 전체 calibration 평균을 기준으로 보는 global baseline만 사용하면 fault와 group 차이를 혼동할 가능성이 있다.

이를 보완하기 위해 각 실험 그룹 내부의 calibration 평균과 표준편차를 기준으로 local_z를 계산했다. 이 방식은 그룹 간 기준선 차이를 줄이고, 실제 fault 이탈 정도를 더 안정적으로 확인하는 데 필요했다.

정상과 Fault의 스펙트럼 차이

local_z 분석 결과, fault 유형에 따라 이탈 파장과 탐지 난이도가 다르게 나타났다. TCP +50 조건에서는 272.2 nm와 544.2 nm에서 큰 이탈이 확인되어 탐지가 쉬웠고, TCP +30과 Pr +3 조건도 비교적 명확하게 구분되었다. 반면 RF +10, Cl2 -5, BCl3 +5, He Chuck fault는 OES 신호 변화가 작아 탐지가 어려웠다. 특히 He Chuck은 웨이퍼 온도 제어 이상이지만 OES는 플라즈마 발광을 측정하는 방식이기 때문에 OES만으로는 탐지가 거의 불가능했다.

파생변수 생성 방향

OES 시계열을 웨이퍼 단위로 변환하기 위해 다양한 파생변수를 만들었다. 사용한 변수는 파장별 평균, 표준편차, 최솟값, 최댓값, range 같은 기본 통계량과 AUC, 구간별 평균, rise/drop index, slope, global 기준 편차, local 기준 이탈값 등이었다. 최종적으로 웨이퍼 1개당 46개의 통계적으로 유의한 feature를 선정했다.

Mann-Whitney U 검정과 FDR 보정을 적용한 결과, local_abs_z_mean 계열 feature가 fault 구분에 매우 중요하게 나타났다. 상위 feature에는 S1 395.8 nm, S1 394.4 nm, S1 308.2 nm, S1 644.9 nm, S1 250.0 nm 등이 포함되었다. 이는 fault 탐지에서 단순 intensity보다 calibration 기준 대비 얼마나 벗어났는지를 보는 방식이 더 유효하다는 점을 보여준다.

머신러닝 모델 결과

모델은 Logistic Regression, Random Forest, LightGBM 세 가지를 사용했고, Optuna로 하이퍼파라미터 튜닝을 진행했다. 검증 방식은 Leave-one-experiment-out과 LOOCV를 함께 사용했다. Leave-one-experiment-out은 특정 실험 그룹 하나를 통째로 test set으로 두는 방식이기 때문에 group drift 영향을 포함한 현실적인 성능 평가에 가깝다.

최종 성능을 보면 Random Forest가 F1 기준 0.743으로 가장 높았고, Logistic Regression은 ROC-AUC 0.905로 가장 높았다. Precision과 Recall의 균형은 Logistic Regression이 상대적으로 좋았다. 다만 LOOCV는 Leave-one-experiment-out보다 ROC-AUC가 높게 나왔는데, 이는 group drift 영향을 제대로 배제하지 못해 성능이 낙관적으로 평가될 수 있기 때문이다. 따라서 실제 해석은 Leave-one-experiment-out 기준으로 보는 것이 더 적절하다.

오분류와 탐지 한계

오분류 분석에서는 fault를 정상으로 판단하는 False Negative가 특히 중요했다. 공정 이상탐지에서는 정상 오경보보다 fault 미탐이 더 위험하기 때문이다. Random Forest는 오분류 9건, LightGBM은 10건, Logistic Regression은 11건이었다.

탐지가 어려운 fault는 주로 OES 신호에 직접적인 변화를 만들지 않는 조건이었다. He Chuck, Cl2 -5, RF +10, BCl3 +5는 평균 fault probability가 낮아 OES 단독 탐지에 한계가 있었다. 반면 TCP +50, TCP +30, Pr +3, Cl2 -10처럼 플라즈마 에너지나 반응물 농도 변화가 큰 fault는 OES 스펙트럼에 명확히 반영되어 탐지가 가능했다.

공정 해석

TCP 파워가 증가하면 플라즈마 밀도가 증가하고, 이에 따라 Al 관련 발광선인 272.2 nm와 394.4 nm intensity가 증가하는 경향을 보였다. 반대로 TCP 파워 감소는 플라즈마 약화와 전체 발광 강도 감소로 이어질 수 있다.

가스 유량 이상에서는 Cl2 -10 fault가 뚜렷했다. Cl 농도 감소는 AlCl 반응 생성물 변화로 이어지고, 544.2 nm와 Cl I 계열 파장에 큰 영향을 준 것으로 해석된다. 압력 증가 fault는 플라즈마 충돌 빈도와 이온 방향성에 영향을 주며, Pr +3 조건에서는 272.2 nm와 394.4 nm에서 명확한 이탈이 확인되었다.

FDC 전략

OES 기반 FDC에서는 272.2 nm, 394.4/395.8 nm, 544.2 nm, 725.0/753.7 nm 등을 실시간 모니터링 대상으로 삼을 수 있다. 알람 기준은 전체 기준이 아니라 그룹별 calibration 기준의 local_abs_z를 사용하는 것이 적절하다. 예를 들어 272.2 nm와 394.4/395.8 nm는 local_abs_z ≥ 3.0, 544.2 nm와 725.0/753.7 nm는 local_abs_z ≥ 2.5 수준으로 관리할 수 있다.

대시보드에는 OES local_abs_z 이상 점수, 주요 파장별 local_z 추세, Fault Probability, 다변량 이상 점수, 기여 파장 상위 표시, 미탐 fault 리뷰 패널, EV/RFM 연결 분석 등을 포함하는 것이 좋다. 이를 통해 단순히 fault 여부만 판단하는 것이 아니라 어떤 파장과 공정 조건이 이상에 기여했는지까지 해석할 수 있다.

느낀 점

이번 분석을 통해 OES는 플라즈마 반응 결과를 직접 반영하는 강력한 이상탐지 지표가 될 수 있지만, 모든 fault를 단독으로 탐지할 수 있는 것은 아니라는 점을 확인했다. 특히 He Chuck, RF 소폭 변화, 가스 유량 소폭 변화처럼 OES에 직접적인 intensity 변화를 만들지 않는 fault는 EV와 RFM 데이터를 함께 봐야 한다.

따라서 앞으로는 OES 기준으로 공정 step을 나누고, 해당 시간축에 EV와 RFM 데이터를 보간 또는 집계해 통합 feature를 구성하는 방향이 필요하다. 최종적으로는 OES + EV + RFM 통합 모델을 구축해 fault 탐지 범위를 넓히고, fault type별 원인 분류까지 연결하는 것이 다음 과제다.