본문 바로가기
헷갈릴만한 개념

데이터 스케일링 기법(표준화(standardzation),정규화(nomalization))

by JSMATH 2024. 3. 20.

표준화

통계를 해봤다면, 표준화를 많이 들어봤을 것이다. 그 표준화가 위의 표준화다.

정규화

정규화는 데이터 범위를 0과1사이로 변환시킨다. 확률도 공리상 0과 1사이에 있으므로, 이는 데이터 분포를 확률로 나타낼 때 유용하다고 생각된다.

 

+추가사항 20240528

일반 데이터, 표준화 데이터, 정규화 데이터의 분포를 시각화 한 내용입니다. R코드로 작성했습니다.

library(ggplot2)
data <- round(runif(n = 255, min = 0, max = 255), digits = 0)

# 데이터 생성
data <- round(runif(n = 64, min = 0, max = 255), digits = 0)

# 표준화
standardized_data <- scale(data)

# Min-Max 스케일링
min_max_scaled_data <- (data - min(data)) / (max(data) - min(data))

# 데이터 프레임으로 결합
df <- data.frame(
  Original = data,
  Standardized = as.numeric(standardized_data),
  MinMaxScaled = min_max_scaled_data
)

# 데이터 프레임을 long form으로 변환 (tidyr 사용.)
#long form : 기본 df의 colname이 하나의 컬 원소에 속해지며 기본 df의 col의 원소가 value라는 col
#에 속해진다. 즉, long form은 기본 df의 colname들의 col 1개와 value라는 col 1개 총 2개의 col로 이루어짐
df_long <- tidyr::pivot_longer(df, cols = everything(), names_to = "Type", values_to = "Value")

# 히스토그램 그리기
#alpha = 색의 강렬함, bins = x축을 몇개로 쪼갤것인지 많으면 얇은 선으로 보임.
ggplot(df_long, aes(x = Value, fill = Type)) +
  geom_histogram(alpha = 0.6, position = "identity", bins = 30) +
  facet_wrap(~Type, scales = "free_x") +
  theme_minimal() +
  labs(title = "Comparison of Original, Standardized, and Min-Max Scaled Data", x = "Value", y = "Frequency")

MinMaxScaled, Original, Standardized 비교