2025 내일배움캠프 QAQC_2기

2025 내일배움캠프 QAQC_2기 본캠프 55일차

mingdoremi 2025. 7. 29. 20:39

안녕하세요! 오늘은 본캠프 55일차입니다~!

 

<시계열 라이브 세션>

 

문제 1: 센서 데이터를 활용한 공정 상태 분류

한 반도체 제조 공정에서 장비에 부착된 센서들이 매 초마다 데이터를 기록합니다. 이 데이터를 바탕으로 해당 제품이 양품(Good)인지 불량(Defective)인지 분류하는 AI 모델을 구축

 

데이터 설명

  • Sampling Rate: 1초 간격
  • Duration: 제품 1개당 60초
  • Features: 총 4개의 센서 값 (예시)
  • Target Label: 제품 품질 (0 = 양품, 1 = 불량)
Time (s) Chamber_Pressure RF_Power Etch_Rate Temperature Label
0 4.12 450 210 72.5 0
1 4.15 452 208 72.4 0
2 4.10 449 209 72.3 0
... ... ... ... ... ...
59 4.05 448 211 72.6 0

 

1. 1초마다 독립적으로 제품이 생산된다면?

→ 각 제품의 센서값은 서로 독립된 샘플로 취급됨

→ 이 경우는 일반적인 비시계열 분류 문제와 동일한 구조

2. 하지만 X값(센서값)의 변화는 의미가 있음

  • 제품의 품질은 센서값의 절대값뿐만 아니라
  • 변화 패턴, 이상 징후에 의해 영향을 받을 수 있음

3. 그래서 X값에 대해 시계열 파생 피처를 추가하면 유리

  • diff: 변화량 (현재 - 이전)
  • lag: 과거 시점의 값
  • rolling mean/std: 구간 평균이나 변동성

→ 이러한 파생 피처들은 공정 이상을 감지하는 데 효과적이며,

트리 기반 머신러닝(Random Forest, XGBoost 등)에서 성능 향상에 도움

정말 중요한 포인트

이렇게 독립적인 경우 train test split을 하여도 됨

 

문제 2: 반도체 식각 공정에서 불량품 분류하기

문제 배경

반도체 제조 공정 중 하나인 Etching(식각) 공정에서는 장비 내부의 압력, 온도, 전력, 가스 농도 등이 매초 단위로 측정됩니다.

이 센서 시계열을 통해 공정이 정상적으로 진행되었는지, 혹은 미세한 이상 패턴이 있었는지를 분석해, 최종적으로 불량품 여부를 분류합니다.

 

자기 상관성의 의미 in 공정 데이터

자기 상관성이란?

이전 시점의 값이 현재 값에 영향을 주는 특성

공정 장비의 센서 데이터는 대부분 물리적으로 관성을 가지고 있어서 바로 바뀌지 않음.

→ 예: 챔버 압력이 4.0에서 4.5로 즉시 바뀌는 일은 없음 → 이전 값과 현재 값 사이에 강한 자기 상관성 존재.

 

Time(s) Pressure Temp Etch_Rate Label
0 4.10 72.1 209 0
1 4.12 72.0 208 0
2 4.15 71.8 206 0
... ... ... ... ...
         
59 4.30 70.5 190 1

 

  • 초반 30초는 안정된 상태 → 양품 가능성
  • 후반 30초간 Etch Rate가 지속적으로 하락 → 불량으로 이어짐
  • 즉, 값 자체보다도 시간에 따른 변화 패턴이 더 중요
  • → 자기 상관성이 높은 시계열이 분류 성능에 핵심 역할

반도체 공정 데이터는 매 1초마다 새로운 제품이 생산되는 구조가 아니라,

하나의 제품이 일정 시간 공정을 거치며 측정된 시계열 데이터"로 구성됩니다.

 

1. 반도체 공정에서는 1초마다 제품이 독립적으로 생산되지 않음

  • 하나의 반도체 제품은 수 초~수 분 동안 공정 장비에 의해 처리됩니다.
  • 이 과정에서 발생하는 연속적인 센서 데이터(압력, 온도 등)가 시계열로 수집됩니다.
  • 즉, 제품 1개당 하나의 시계열 데이터 샘플이 생성되는 구조입니다.

⇒"한 제품 = 일정 시간 동안의 시계열 데이터"

⇒ 각 시계열 샘플이 분류 모델의 입력 1건이 됩니다.

 

2. 제품의 품질은 센서값의 ‘순간 값’보다는 변화 흐름(패턴)과 더 관련이 있음

  • 예: Etch_Rate가 급감하거나 압력이 점진적으로 상승하는 패턴은 불량의 신호일 수 있음
  • 따라서 센서값의 시간적 변화를 반영하는 것이 중요함

3. 머신러닝에서 시계열 정보를 반영하는 방법

방법 : 파생 피처 기반 머신러닝(Random Forest, XGBoost 등)

  • 시계열 데이터에서 diff, lag, rolling mean/std 등의 피처를 계산해 고정 길이 벡터로 변환
  • 예:
    • Pressure_diff_mean,
    • EtchRate_lag5,
    • Temp_roll10_std
  • 이렇게 만들어진 피처들을 일반적인 ML 분류 모델에 넣어 학습

정말 중요한 포인트

이렇게 독립적이지 않을 경우 train test split을 하면 안됨

# 시간순 정렬 후 앞부분을 train, 뒷부분을 test로 분리
train_df = full_df[full_df['timestamp'] < '2025-01-01']
test_df  = full_df[full_df['timestamp'] >= '2025-01-01']

 

문제 3: 월별 가정용 전력 사용량 예측

문제 개요

전력회사는 한 가정의 과거 월별 전력 사용량 데이터를 바탕으로

향후 1~3개월 동안의 전력 사용량을 예측하고자 합니다.

이 정보는 요금 계획 추천, 수요 예측, 절전 캠페인 등에 활용됩니다.

 

데이터 예시

Year Month Temperature Household_Size Power_Usage (kWh)
2022 Jan -2.1°C 4 410
2022 Feb 0.3°C 4 385
2022 Mar 5.7°C 4 360
... ... ... ... ...
2024 Dec 0.0°C 4 400

 

독립적이다면 ⇒ 전력 사용량은 변화량으로 예측 (train test split 가능)

독립적이지 않다면 ⇒ 그 값 자체로 예측(train test split 불가능)

 

이상치 탐지 유형

1️⃣ Point Anomalies (포인트 이상치)

정의:

단일 센서 값 또는 측정값이 다른 정상 데이터와 비교했을 때 급격히 벗어난 경우. 즉, 오직 하나의 데이터에만 이상이 생긴 것

🛠 제조 예시:

  • 온도 센서가 갑자기 비정상적으로 높은 값을 기록 (예: 정상 범위 20~50°C인데 100°C가 기록됨).
  • 특정 부품의 길이, 무게, 두께 등의 측정값이 허용 공차를 초과.

2️⃣ Contextual Anomalies (문맥적 이상치)

정의:

값 자체는 정상 범위에 있지만, 특정 조건이나 문맥에서 비정상적인 경우. 즉, 데이터의 맥락(Contextual)을 고려했을 때 생긴 이상이 생긴 것

🛠 제조 예시:

  • 온도 센서 데이터: 일반적으로 밤에는 온도가 낮아야 하는데, 특정 공정에서 낮보다 높은 온도 기록.
  • 진동 데이터: 정상적으로 기계가 작동할 때는 진동이 강해야 하는데, 부하가 적은 공정에서 강한 진동이 발생.

3️⃣ Collective Anomalies (집단적 이상치)

정의:

개별 값들은 정상 범위 내에 있지만, 여러 값이 특정한 패턴을 이루며 비정상적인 경우 즉, 복수의 데이터 포인터들에게서 이상이 생긴 것(연속적)

🛠 제조 예시:

  • 모터 전류 데이터: 특정 시간 동안 꾸준히 정상 범위를 유지하던 전류가 갑자기 연속적으로 변동이 심해짐.
  • 생산 공정 시간: 개별적인 조립 공정 시간은 정상이지만, 조립 후 검사 시간이 연속적으로 길어짐.
  • 불량률 패턴 변화: 개별 불량률은 낮지만, 한 시간 동안 연속적으로 작은 불량이 누적되는 경우.

 

이상치 탐지 주의 할점

 

데이터의 시간적 특성과 시계열 이상 탐지

이상 감지(Anomaly Detection) 분야에서 머신러닝을 적용할 때 가장 큰 문제 중 하나는 데이터의 시간적 특성을 어떻게 반영할 것인가?? 특히 시계열 데이터의 경우, 단순히 개별 데이터 포인트의 이상 여부만을 판단하는 것이 아니라, 시간에 따른 흐름과 패턴을 고려해야만 정확한 이상 감지가 가능

 

그렇다면 우리는 어떻게 해야할까?

대부분의 데이터는 다변수 시계열 데이터 다변수 시계열 데이터일 경우, 각 변수들을 유사한 변수들끼리 묶어 그룹을 만드는게 중요

 

1. 다변수 시계열 데이터를 그룹화해야 하는 이유

단순히 모든 변수를 하나의 그룹으로 처리하는 방식유사한 변수끼리 그룹을 나눠 이상 감지를 수행하는 방식을 비교해봄

 

사례 1: 모든 변수를 하나의 그룹으로 처리하는 경우

예제: 우주선 이상 감지 시스템

  • 우주선에는 100개의 센서(변수)가 존재.
  • 전체 데이터를 하나의 모델에서 감지하여 이상 발생 시 우주선 전체에 대한 이상 감지만 인지 가능.
  • 하지만, 어느 부분에서 문제가 발생했는지 알 수 없어 대응이 어려움.
  • 예를 들어, 1단 로켓, 2단 로켓, 엔진, 궤도 등 어떤 시스템에서 이상이 발생했는지 알기 어렵다.
  • 결과적으로, 경고 알람이 발생해도 세부적인 대응이 어려움.

사례 2: 변수들을 유사한 그룹으로 나누어 독립적인 이상 감지 모델 운영

예제: 우주선 이상 감지 시스템 (개선된 방식)

  • 100개의 변수 중 유사한 변수들끼리 10개의 그룹으로 나누어 각각 독립적인 모델을 운영.
  • 예를 들어,
    • 1단 로켓 그룹 → 관련 변수만 포함 (온도, 압력, 연료 상태 등)
    • 엔진 그룹 → 엔진 관련 변수들만 포함
    • 궤도 그룹 → 궤도 조정 관련 변수만 포함
  • 각 그룹별로 독립적인 이상 감지 모델을 구축하여 운영.
  • 만약 엔진 그룹에서 이상 감지가 발생하면, 엔진 관련 문제임을 바로 인지하고 대응 가능.
  • 모니터링 담당자는 경고 발생 시 즉시 해당 그룹을 확인하여 세부적인 원인 분석 및 대응 가능.

이 방식의 장점:

  • 이상 감지의 정확도 향상 → 서로 다른 패턴을 가진 변수들을 하나의 모델에서 학습하는 것이 아니라, 유사한 변수끼리 학습하므로 모델이 더 잘 학습할 수 있음.
  • 문제 발생 시 즉각적인 원인 분석 가능 → 특정 그룹에서 이상 발생 시 해당 시스템의 문제임을 빠르게 판단 가능.
  • 운영 및 유지보수 용이 → 한 그룹의 모델을 수정해도 다른 그룹에는 영향을 미치지 않음.

2. 실제 운영에서 그룹을 나누는 것이 중요한 이유

  • 다변수 시계열 데이터에서는 일부 변수들 간에 서로 연관이 깊고, 유사한 움직임을 보이는 변수들이 존재함.
  • 예를 들어, 한 그룹의 변수가 A ~ E까지 있다고 할 때, A 변수에서 이상이 발생하면 B, D 변수도 영향을 받는 경우가 많음.
  • 이러한 도메인 지식을 반영하여, 서로 밀접한 관계가 있는 변수들을 같은 그룹으로 묶고, 독립적으로 학습하는 것이 바람직.

3. 다변수 시계열 이상 감지 시스템 구축 방법

1️⃣ 변수 그룹화 (Domain Knowledge 반영)

  • 전문가의 도메인 지식을 활용하여 유사한 변수들을 그룹으로 묶음.
  • 예: 엔진 관련 변수, 궤도 관련 변수, 온도 관련 변수 등.

2️⃣ 각 그룹별 독립적인 이상 감지 모델 구축

  • 각 그룹에 맞는 이상 감지 모델을 개별적으로 학습 ( Isolation Forest 등).
  • 그룹별 데이터의 특성을 반영하여 최적화.

3️⃣ 이상 감지 후 세부적인 원인 분석 가능하도록 설계

  • 하나의 모델에서 "이상 감지 발생"만 판단하는 것이 아니라,
  • 어느 그룹에서 이상이 발생했는지까지 즉각적으로 확인 가능하도록 설계.

4️⃣ 운영 및 유지보수의 용이성 확보

  • 특정 그룹의 데이터 특성이 변경되더라도 다른 그룹의 모델에는 영향을 주지 않음.
  • 유지보수 및 개선이 더 쉬워짐.

결론: 그룹 기반 이상 감지 시스템이 필수적이다!

모든 변수를 하나의 모델에서 처리하면, 이상 감지 후 원인 분석이 어렵고 대응이 늦어질 수 있음.

유사한 변수들끼리 그룹을 묶어 각각의 독립적인 모델을 운영하면, 정확한 감지 및 빠른 대응이 가능.

각 그룹의 변수 특성을 반영한 모델 학습이 가능하여, 이상 탐지의 성능이 향상됨.

운영 및 유지보수가 용이하며, 실시간 대응이 훨씬 수월해짐.

따라서, 다변수 시계열 데이터의 이상 감지에서는 "변수 그룹화 및 독립 모델 운영"이 핵심 전략이다!

 

이상치 모델

1. Elliptic Envelope (타원형 경계 기반 이상치 탐지)

개념

  • 데이터가 정규 분포를 따른다고 가정하고, 타원형 경계(Elliptical Boundary)를 생성하여 이상치를 탐지하는 방법.
  • 다변수 데이터에서 중심에서 멀리 떨어진 데이터를 이상치로 간주.

특징

통계적 접근법: 데이터의 평균과 공분산을 기반으로 이상 탐지.

정규 분포를 가정: 데이터가 정규 분포를 따를 때 효과적.

고속 연산 가능: 다른 이상치 탐지 알고리즘보다 빠르게 동작.

선형적인 경계: 이상치를 결정하는 기준이 타원형 경계로 단순함.

 

2. Isolation Forest (격리 기반 이상치 탐지)

개념

  • 트리 구조를 사용하여 데이터를 무작위로 분할하며, 이상치는 정상 데이터보다 더 빠르게 격리(Isolation)되는 특성을 이용한 방법.
  • 이상치는 다른 데이터보다 고립되기 쉬우므로(트리에서 더 적은 단계에서 분리됨) 이상으로 판단

특징

비지도 학습(Unsupervised Learning)

빠른 연산 속도: 트리 구조 기반으로 대용량 데이터에서도 빠르게 동작.

정규 분포가 아닌 데이터에도 적합

고차원 데이터에서도 효과적

 

3. Local Outlier Factor (LOF, 지역적 밀도 기반 이상치 탐지)

개념

  • 데이터의 밀도를 계산하여 이웃 데이터들과의 상대적인 차이를 분석하여 이상치를 탐지하는 방법.
  • 이상치의 특징: 주변 밀도가 낮고, 정상 데이터와의 밀도 차이가 클 경우 이상치로 판별.

특징

밀도 기반 이상치 탐지 → 데이터 분포가 균일하지 않아도 탐지 가능

지역적(Local) 패턴을 반영 → 특정 영역에서의 이상치 감지 가능

비정규 분포 데이터에서도 효과적

 

이상 탐지 왜 할까?

이상 탐지는 단순히 이상한 데이터를 찾는 것이 아니라 실제 문제 예방, 자동화 가능

제조업 (Smart Factory) : 센서 데이터를 기반으로 기계 고장 예측 (Predictive Maintenance) 미리 고장 징후를 감지하여 생산성 향상

 

<스트림릿 라이브 세션>

 

스트림릿 세션에서는 스트림릿으로 대시보드를 만드는 방법을 배웠습니다!

 

sklearn 머신러닝을 vs code에서 깔았는데 계속 없다고 오류가 떠서 전에는 그냥 colab을 사용했었는데

대시보드를 만드려면 vs code에서 머신러닝 하는 것이 필요할 것 같아 튜터님께 가서 여쭤보았는데 잘 해결해주셨습니다...🤩

 

처음부터 가서 물어볼껄 그랬네요... 너모너모 감사합니다 ㅜㅜ

 

오늘도 수고하셨습니다!!!!