코드카타

import pandas as pd
import numpy as np
data = {
'signal': [10.0, 10.2, 10.5, 13.5, 13.6, 13.4, 10.0, 9.8, 9.9, 15.0]
}
df = pd.DataFrame(data)
df['diff_1'] = abs(df['signal'].diff(1))
threshold=2.0
df['gradient_outlier'] = (df['diff_1'] >2.0)
df_1 = df[['signal', 'gradient_outlier']]
print(df_1)
실전 프로젝트 3일차
아무것도 모르겠다.
TIL: 금속 에칭 시계열 데이터 분석 방향 정리
1. 오늘 학습한 내용
오늘은 금속 에칭 공정 데이터 분석을 본격적으로 진행하기 위해 EV, OES, RFM 데이터의 특성과 분석 방향을 정리했다. 세 데이터는 모두 같은 공정을 바라보지만 측정 대상과 샘플링 주기가 다르기 때문에, 단순히 하나로 합치기 전에 각 데이터의 물리적 의미와 시간축 정합 방식을 먼저 이해해야 한다.
2. EV 데이터 분석 방향
EV 데이터는 챔버 압력, 가스 유량, RF/TCP power, tuner, load, phase error 등 장비의 공정 상태를 나타내는 변수로 구성된다.
Endpoint A를 제외하면 일부 변수는 시간 변화 폭이 크지 않고, fault에 따라 전체 시계열 형태보다는 평균 수준이 이동하는 형태일 가능성이 있다.
따라서 EV 데이터는 먼저 시계열 형태를 확인한 뒤, 변화 폭이 작고 안정적인 변수는 웨이퍼별 평균, 표준편차, 최소값, 최대값 같은 요약 feature로 변환해 정상과 fault를 비교하는 방식이 적절하다. 단, 모든 변수를 평균으로만 요약하면 순간적인 이상 구간을 놓칠 수 있으므로, 변수별 시계열 확인이 선행되어야 한다.
3. OES 데이터 분석 방향
OES 데이터는 시간 컬럼이 따로 없기 때문에 인덱스 순서를 공정 진행 순서로 보고 분석해야 한다.
즉, x축을 실제 시간이 아니라 측정 순서 또는 정규화된 시간으로 두고 파장별 intensity 변화를 확인하는 방식이 필요하다.
OES는 전체 파장대를 모두 보는 것도 가능하지만, 먼저 정상과 fault의 평균 스펙트럼을 비교해 차이가 큰 파장대를 찾고, 이후 해당 피크 파장대만 뽑아 시계열 intensity 변화를 확인하는 방식이 효율적이다.
오늘 정리한 방향은 다음과 같다.
- 정상과 fault의 평균 OES 스펙트럼 비교
- 차이가 큰 주요 피크 파장대 선정
- 선정된 파장대별 정상/fault 시계열 비교
- calibration 평균 패턴과 각 fault 시계열 비교
- OES 센서 3개를 통합하기 전 센서 간 상관관계와 패턴 유사성 확인
OES 센서가 같은 플라즈마를 같은 시간대에 측정한 것이라도 센서 위치가 다르면 intensity 차이가 날 수 있으므로, 바로 평균 통합하는 것은 위험하다. 센서 간 패턴이 유사하다는 것을 먼저 확인한 뒤 통합 여부를 결정해야 한다.
4. RFM 데이터 분석 방향
RFM 데이터는 RF 전력 전달과 플라즈마 부하 상태를 보기 위한 데이터다. 전압, 전류, 위상, 전력 관련 값은 임피던스 매칭 상태와 플라즈마 변화에 민감하게 반응할 수 있다.
오늘 다룬 관점은 다음과 같다.
RFM에서 V와 I는 fault 조건에 따라 비교적 크게 변할 수 있다. 특히 RF/TCP power fault에서는 전력 조건이 직접 바뀌므로 V/I 변화가 두드러질 가능성이 높다. 반면 P값은 매칭 시스템이나 제어 영향 때문에 생각보다 큰 차이가 없을 수도 있다.
위상은 단순히 값 자체가 왜 그런지를 깊게 해석하기보다는, calibration 대비 fault에서 위상 관계가 달라지는지를 보는 것이 더 중요하다. 위상 변화는 전력 전달 상태나 임피던스 매칭의 변화 가능성을 보여줄 수 있기 때문이다.
5. 데이터 통합에서 주의할 점
EV는 1초 단위, RFM은 3초 단위로 측정되며, OES는 명확한 시간 컬럼이 없다. 따라서 세 데이터를 무작정 행 기준으로 합치면 시간 불일치와 NaN 문제가 발생한다.
가능한 방법은 다음과 같다.
- OES 기준으로 공통 시간축을 만든다.
- EV는 OES 시간 구간에 맞춰 평균 또는 보간한다.
- RFM은 샘플링 주기가 더 느리므로 nearest merge, forward fill, 구간 평균 등을 검토한다.
- 웨이퍼별 길이가 다르면 실제 시간보다 정규화 시간 기준으로 비교한다.
다만 RFM 데이터가 부족한 구간을 억지로 채우면 없는 정보를 만든 것이 되므로, 결측이 생기는 이유를 명확히 표시하고 분석 목적에 따라 보간 여부를 결정해야 한다.
6. 오늘 정리한 분석 흐름
오늘 기준으로 분석 순서는 다음이 적절하다.
- 세 CSV 구조 확인
- wafer/run/fault/label/time 관련 컬럼 확인
- EV, OES, RFM 각각 개별 EDA
- 정상과 fault의 시계열 패턴 비교
- OES 주요 파장대 선정
- RFM의 V/I/P/Phase 변화 비교
- 정상 calibration 기준으로 fault 편차 확인
- 센서 간 상관관계 및 유사성 검정
- 웨이퍼별 요약 feature 생성
- 통합 feature 기반 분류 모델 준비
7. 오늘 얻은 결론
오늘의 결론은, 바로 머신러닝 모델부터 만들기보다 각 센서가 어떤 물리량을 보고 있는지 먼저 구분해야 한다는 것이다. EV는 장비 제어 변수, OES는 플라즈마 화학 반응 상태, RFM은 RF 전력 전달과 매칭 상태를 반영한다.
따라서 세 데이터를 하나로 합치는 것보다 먼저 각 데이터에서 정상과 fault의 차이가 실제로 존재하는지 확인해야 한다. 이후 차이가 명확한 변수와 파장대만 선별해 웨이퍼 단위 feature로 만들면, 해석 가능한 fault detection 모델을 만들 수 있다.
'QAQC_5기 부트캠프 > 실전 프로젝트' 카테고리의 다른 글
| [내일배움캠프] QA/QC_5기 본캠프(0604) (0) | 2026.06.04 |
|---|---|
| [내일배움캠프] QA/QC_5기 본캠프(0602) (1) | 2026.06.02 |
| [내일배움캠프] QA/QC_5기 본캠프(0601) (0) | 2026.06.01 |
| [내일배움캠프] QA/QC_5기 본캠프(0528) (0) | 2026.05.28 |
| [내일배움캠프] QA/QC_5기 본캠프(0527) (0) | 2026.05.27 |