본문 바로가기
머신러닝/EDA

[EDA] Z-score

by 공부랑 독서 기록 2024. 12. 24.

Z-score 기법은 데이터 포인트가 평균으로부터 얼마나 떨어졌는지를 표준편차 단위로 나타내는 방식으로 단변량 이상치 탐지에 사용된다.

Z-score의 계산 공식은 다음과 같다.

\[ Z = \frac{X - \mu}{\sigma} \]

 X는 데이터 포인트의 값이고, μ는 데이터의 평균값이다. σ는 데이터의 표준편차값이다. 즉, Z-score는 데이터 포인트가 평균으로부터 얼만큼의 표준편차 만큼 떨어져있는가를 나타내는 값으로 볼 수 있다.

 

Z-score의 장단점

 표준편차를 이용하기 때문에 데이터의 크기나 단위에 영향을 받지 않아 별도의 스케일링을 할 필요가 없다. 하지만 정규분포에서 가장 뛰어난 효과를 보이기 때문에 정규 분포로 만들어주는 것이 좋다. 또한 이상치가 많이 포함된 경우에는 평균이 왜곡되어 탐지 정확도가 떨어질 수 있다.

 

 정규 분포의 68-95-99.7 규칙에 따라 데이터의 68%는 Z-score가 사이, 95%는 사이, 99.7%는 사이에 위치한다. Z-score가 3을 벗어나는 경우는 1/370보다 낮은 확률이기에 이는 이상치로 간주한다.

 

mean = train['value'].mean()
std = train['value'].std()
train['z_score'] = (train['value'] - mean) / std

# 이상치 탐지
outliers = train[np.abs(train['z_score']) > 3]
print("이상치:\n", outliers)