Introduction
코딩을 하다보면 데이터마다 값의 분포가 매우 다르기 때문에 이러한 값을 일정한 범위로 매핑시키는 normalization 과정이 필요합니다. 보통 min-max normaliztion 이나 z-score normalization을 많이 사용하는데 이 방법에 대해 알아보도록 하겠습니다.
Min-max normalization
min-max normalization은 가장 간단한 정규화 방법입니다. 최솟값과 최댓값을 이용해 $X_{norm} = (X-X_{min}) / (X_{max}-X_{min})$ 으로 계산하는 방법으로 전체 값이 0~1 사이에 존재하게 됩니다. 이 방법은 데이터 분포가 Gaussian distribution이 아니거나 standard deviation이 매우 작을 때 유용하며, outlier에 민감하다는 특징이 있습니다.
def min_max_normalize(tensor):
min_val = tensor.min(dim=0, keepdim=True)
max_val = tensor.max(dim=0, keepdim=True)
normalized_tensor = (tensor - min_val) / (max_val - min_val)
return normalized_tensor
Z-score normalization
Z-score normalization의 Z는 표준정규분포(standard normal distribution)의 변수를 의미합니다. 따라서 Z-score normalization이란 평균($\mu$) 0, 분산($\sigma$) 1인 표준정규분포로 만드는 계산을 통해 정규화 하는 것을 의미합니다. $$Z = \frac{(X-\mu )}{\sigma }$$ 이 방법은 outlier에 덜 민감하며, 데이터 분포가 원래 정규분포를 따를 때 유용한 방법입니다.
def z_score_normalize(tensor):
mean = tensor.mean(dim=0, keepdim=True)
std = tensor.std(dim=0, unbiased=False, keepdim=True)
normalized_tensor = (tensor - mean) / std
return normalized_tensor
'AI 공통 개념' 카테고리의 다른 글
Long-Tail Distribution(LTD) 이란? (0) | 2024.07.21 |
---|