빅데이터 QAQC_3기/빅데이터 QAQC_3기 TIL

TIL_251229

usungusung 2025. 12. 29. 21:15

Today I learned

 

 

1. [라이브세션] 이상 탐지 3회차

 

AWS RCF

 

핵심 원리

'이상한 데이터는 고립시키기 쉽다

 

 

RCF는 데이터를 랜덤하게 잘라 나누는 과정에서 이상치는 정상보다 더 빨리 분리된다는 아이디어를 기바능로 작동

 

정상 데이터

서로 밀집

분리하려면 여러번 잘라야 함 - 깊은 트리 - 정상

이상 데이터

멀리 떨어져 있음

금방 고립됨 - 얕은 트리 - 이상

트리 깊이가 얕을수록 고립이 쉬움 - Anomaly Score 커짐

 

RCF는 값이 아닌 패턴을 본다.

 

 

Shingling(데이터 묶음화)

점 하나씩 보지 않고

[xₜ , xₜ₊₁ , xₜ₊₂ …] 이 형태로 연속 구간 단위 묶음
효과
값 뿐만 아니라 Shape를 학습
상승/하강 패턴의 깨짐을 감지 가능
 
RCF Forest 업데이트
대표 샘플들을 기준으로 숲(Forest) 업데이트
숲이 정상 패턴을 학습
처음 보는 이상 모양 등장 시 - 이상 탐지
 
탐지 설정 개념
Interval 데이터가 찍히는 시간 단위
Frequency 모델 실행 주기
Window Delay 최신 데이터 안정화 대기
History 학습 시작 최소 데이터 수

 

동작 흐름 요약

1️⃣ 데이터 스트림 입력

2️⃣ Shingling(패턴 단위 변환)

3️⃣ Reservoir Sampling(대표 샘플 유지)

4️⃣ Forest 업데이트

5️⃣ 각 트리에서 고립 난이도 계산

6️⃣ 평균 점수 → 이상 점수

 

맛만보자 코드

# pip install rrcf   ← 먼저 설치 필요

import numpyas np
import rrcf

# 1. 데이터 생성 (정상 + 이상 일부)
np.random.seed(42)
normal = np.random.normal(0,1,500)
anomaly = np.random.normal(8,0.5,20)
series = np.concatenate([normal, anomaly, normal])

# 2. Forest 생성
num_trees =40
tree_size =256
forest = [rrcf.RCTree()for _inrange(num_trees)]

anomaly_scores = np.zeros(len(series))
index =0

# 3. 스트리밍처럼 한 점씩 넣으며 점수 계산
for t, valueinenumerate(series):
    point = np.array([value])

for treein forest:
# 오래된 데이터 제거 (슬라이딩 윈도우 효과)
iflen(tree.leaves) > tree_size:
            tree.forget_point(index - tree_size)

# 새 데이터 삽입
        tree.insert_point(point, index=index)

# codisp = RCF anomaly score
        anomaly_scores[t] += tree.codisp(index)

    anomaly_scores[t] /= num_trees
    index +=1

# 4. 이상구간 확인
print("평균 점수:", anomaly_scores.mean())
print("상위 1% 이상치 인덱스:",
      np.where(anomaly_scores > np.quantile(anomaly_scores,0.99))[0])

 

 

통합 이상탐지 시스템 구축 전략

이상탐지 전략의 핵심

계층적 방어선 구축

단 하나의 알고리즘으로 모든 이상을 잡으려 하면 실패함

공정 특성+운영 목적에 맞춰 여러 겹의 필터 설계가 필요함

 

방어선 구조

방어선담당 역할 주요 알고리즘 의도  
제1 방어선
(즉각 대응)
하드웨어 고장
통신 오류
급격한 이상
• Point Anomaly
• Derivative(기울기)
“지금 당장 멈춰야 할 문제”를 잡기 위함 실시간 대응용 알고리즘
제2 방어선
(공정 관리)
추세 변화
품질 흔들림 관리
• SPC Zone Rules
• CUSUM
• Moving Avg
품질 유지 & 관리 기준을 지키기 위함 품질 관리용 알고리즘
제3 방어선
(사전 예지)
성능 저하
장비 노후화
패턴 이상
• Isolation Forest
• LSTM-AE
• Feature Grouping, AWS RCF
“망가지기 전” 조기 감지 목적 예지 보전용 알고리즘

 

 

실전 파이프라인

공정 데이터를 받아 실제 알림가지 이어지는 4가지 구조

1단계: 도메인 기반 변수 그룹화

방법

물리 장치 단위로 묶기

효과

원인 파악 속독 극적으로 단축

어디가 문제인지 명확히 확인

유지보수 의사결정 속도 업

알람은 이상 발생이 아니라

가열부 이상 발생 형태로 가야 신뢰도 있다

 

2단계: 데이터 성격에 따른 알고리즘 배치

데이터  성격추천  기법이유
안정적인 수치형 SPC Rule + Elliptic Envelope 공정 기준 관리에 최적
변동성이 큰 데이터 Isolation Forest + CUSUM 분포 기반 & 추세 기반 동시 반영
주기/패턴 존재 Ruptures / Change Point Detection 패턴 붕괴 시점 포착

 

모든 곳에 딥러닝을 쓸 필요 없음(실제로는 LSTM AUTOencoder를 많이 사용)

제조는 해석 가능한 모델+운영 가능성이 중요함

 

3단계: 앙상블 점수 산출

방식 - Soft Voting

각 모델의 이상 확률 평균

안정적이고 오탐 감소

방식 - Logic Gate

예) 기울기 급상승 AND 분포 중심 이탈 일 때만 알람

실제 현장 적용 시 신뢰도 매우 높음

 

 

 

4단계; 동적 임게치

고정된 임계치는 공정 변화에 약함

추천 방식

Guassian Tail Probability

최근 30일 기준 Rolling Threshold

BOCPD 기반 환경 적응형 Threshold

 

사전 예지

망가지고 나서 알람이 아닌, 망가지기 직전 신호를 잡는 것이 목표

 

핵심 기법

1) 잔차 추적

정상 모델 예측 vs 실제 차이 증가 추적

AE/Forecasting/Regression 기반 가능

 

2) 기울기 모니터링

값은 정상범위

증가 속도, 감소 속도가 평소의 1.5배라면 위험함

 

3) 분산 변화 감지

고장 직전 진동 or 전류 떨림 증가

Variance Rule 매우 효과적

 

Early Warning 적용 시 효과

다운타임 감소

예방 유지보수 가능

계획정비 전환 가능

불량률 감소 - COPQ 절감

 

4️⃣ 운영 시 Best Practice


1) 알람 피로도 관리 (Alarm Fatigue)

“알람이 너무 많으면, 사람은 결국 안 본다”

추천

  • SPC Rule 2, 4, 5 위주 설계
  • 단순 순간 이상보다
  • 지속성 + 패턴 중심 설계

2) 지속적 모델 재학습

  • 계절 변화
  • 설비 노후
  • 금형 마모
  • 작업자 습관 변화

➡ 정상의 기준이 변한다

권장

  • BOCPD 기반 환경 적응
  • Rolling Window 재학습
  • 분기별 Calibration

3) 전문가 피드백 반영

“AI가 이상이라는데, 현장은 정상이라 한다면?”

그 데이터 반드시 재학습에 반영해야 함

→ False Positive 지속 감소

현장 친화적 시스템 조건

  • 이유가 설명 가능
  • 알람이 과하지 않음
  • 책임 소재가 명확
  • “도움되는 시스템”이라고 현장이 느끼게 해야 함

최종 로드맵

1️⃣ 센서 → 물리적 의미 기준으로 그룹화

2️⃣ 기본 방어선: 기울기 + SPC Rule 먼저 적용

3️⃣ 고도화가 필요한 구간에만

Isolation Forest / ChangeFinder / Ruptures 추가

4️⃣ 모든 알람은 반드시

“어느 영역, 왜 발생했는지” 함께 전달

 

 

2. [라이브세션]생성형 AI를 이용한 리포트 자동화 5회차

 

1. 상용 LLM 모델 사용하기

'빅데이터 QAQC_3기 > 빅데이터 QAQC_3기 TIL' 카테고리의 다른 글

TIL_251231  (0) 2025.12.31
TIL_251230  (1) 2025.12.30
TIL_251226  (1) 2025.12.26
TIL_251224  (0) 2025.12.24
TIL_251223  (1) 2025.12.23