이상 탐지의 방법론

1. 3-Sigma Rule Anomaly Detection

1-1. 정의

  • SPC(Statistical Process Control, 통계적 공정관리), 경험적 규칙
  • 표준편차의 3배인 3*Sigma의 범위가 전체 Data의 99.7%를 포함한다.
  • Data 전체의 산포를 파악하는 개념으로 많이 활용된다.

1-2. 장단점

장점

  • 구현하기 간단하다.
  • 명확한 기준을 설정할 수 있기 때문에, 방법론에 재학습이 필요하지 않다.

단점

  • 정규분포가 가정되어야 구현이 가능하다.
  • 다차원 데이터에 적용하기 어렵다.
  • 단변량 데이터에 적용할 수 있으며, Feature간 상호관계를 파악하기 어렵다.

1-3. 사용방법

  • 데이터의 분포를 정규분포로 가정하고, 평균으로부터 (표준편차 x 시그마 계수σ)를 벗어나면 Outlier라고 판단한다.
  • 시그마 계수(σ)

1-4. 주의점

  • 3 Sigma Rule은 위의 '장단점' 에서 언급했듯이 정규 분포를 따를 때 가장 잘 작동한다. 데이터가 비정규 분포인 경우, 이상치를 잘못 판단할 수 있게 된다.
  • 실제 데이터 분석에서는 데이터의 분포를 먼저 검토하고, 필요한 경우 데이터 변환을 고려 해야한다.

1-5. 현업사례

  • 공정 센서 데이터 Anomaly Detection
  • 검사 및 측정 데이터 Anomaly Detection

코드 및 하이퍼 파라미터

import numpy as np
import pandas as pd

# create UCL, LCL
DataFrame['UCL_W'] = DataFrame['Column_1'].mean() + 3*DataFrame['Column_1'].std()
DataFrame['LCL_W'] = DataFrame['Column_1'].mean() - 3*DataFrame['Column_1'].std()

DataFrame['UCL_H'] = DataFrame['Column_2'].mean() + 3*DataFrame['Column_2'].std()
DataFrame['LCL_H'] = DataFrame['Column_2'].mean() + 3*DataFrame['Column_2'].std()
  • Hyper parameter인 평균(mean)과 표준편차(std), 시그마 계수를 설정하여 임계값 Threshold를 계산해야한다.
  • Theshold(1,2,3) 기준으로 이상 데이터를 탐지를 진행함
  • 이후 시각화를 통해 데이터의 이상점을 보다 쉽게 확인하면 좋당

2. Box plot Anomaly Detection

2-1. 정의

  • 많은 데이터를 눈으로 확인하기 어려울 때 그림을 이용해 데이터 집합의 범위와 중앙값을 빠르게 확인할 수 있다.
  • Box plot은 최소값(min), 1사분위수(Q1), 중앙값(median), 3사분위수(Q3), 최대값(max)를 나타내는 시각화 방법이다.

2-2. 장단점

장점

  • 데이터를 눈으로 확인하기 어려울 때, 그림을 이용해 데이터의 범위를 빠르게 파악할 수 있다.
  • 통계적으로 이상치가 있는지 확인할 수 있다.
  • 다양한 정보를 손쉽게 표현할 수 있다.

단점

  • 위치정보에 기반하고 있기 때문에 분포를 확인하기는 어렵다.

2-3. 현업사례

  • EDA 단계에서 많이 사용됨
  • 공정 센서 데이터 이상탐지
  • 검사 및 측정 데이터 이상탐지

코드 및 하이퍼파라미터

#box plot 그리기

import numpy as np

data_a = np.random.normal(0, 2.0, 1000)
data_b = np.random.normal(-3.0, 1.5, 500)
data_c = np.random.normal(1.2, 1.5, 1500)

labels=['data_a', 'data_b', 'data_c']

fig, ax = plt.subplots()

box = ax.boxplots([data_a, data_b, data_c], whis=1.5)
ax.set_ylim(-10.0, 10.0)
ax.set_xlabel('Data Type')
ax.set_ylabel('Value')
  • Output
  • Hyper parameter : whis(*Maximum과 Minimum의 Threshold를 정하는 하이퍼 파라미터)
  • 일반적으로 whis는 1.5로 설정
  • Q1 -1.5 x IQR 미만 or 1.5 x IQR 초과 데이터에 대해 이상을 탐지함
profile
please bbbbbbbbb 😂

0개의 댓글