달나라 노트

정규화(Normalization), 표준화(Standardization)란? 본문

AI/Deep Learning

정규화(Normalization), 표준화(Standardization)란?

CosmosProject 2025. 11. 8. 13:38
728x90
반응형

 

 

 

1. 정규화(Normalization), 표준화(Standardization)란?

Deep Learning을 하다 보면 정규화(Normalization) 또는 표준화(Standardization)라는 용어를 접하게 됩니다.

둘은 혼용되어 사용되곤 해서 여기서는 정규화(Normalization)이라고만 칭하겠습니다.

 

정규화는 입력값들의 스케일을 비슷한 수준으로 맞춰주는 과정입니다.

 

예를 들어봅시다.

입력값에 다음과 같은 것이 있다고 해봅시다.

 

상품 판매량(개) 가격(원) 판매 금액(원) 품절율(%)
A        8,027      21,000   168,567,000 10.20%
B        1,672      18,000     30,096,000 8.60%
C             30      25,000          750,000 23.29%
D           271        8,000       2,168,000 1.23%
E        1,782        9,000     16,038,000 3.25%

 

총 5개 상품에 대한 정보가 있습니다.

이걸 그대로 모델의 학습에 사용하면 어떻게 될까요?

 

판매량의 단위는 '개수'이고

가격이나 판매 금액의 단위는 '원'입니다.

품절율의 단위는 '%'이구요.

 

표를 보면 알 수 있는 것 처럼 단위를 무시하면 숫자 자체의 크기는 판매 금액이 제일 큽니다.

그리고 품절율은 0~1 사이의 실수가 될거라 가장 작을거구요.

이렇게 어떤 단위를 가진 값이냐에 따라 숫자의 스케일이 다릅니다.

 

이런 숫자를 모델의 학습에 그대로 사용해버리면 모델은 숫자가 더 큰 쪽으로 치우치게 됩니다.

판매 금액이 1억에서 2억으로 2배가 되었다고 하면 이 숫자는 1억이라는 차이가 나게 됩니다.

근데 품절율이 10%에서 20%로 2배가 되었다고 하면 이 숫자는 0.1의 차이입니다.

 

컴퓨터는 주어진 숫자들의 단위를 알지 못합니다.

그리고 품절율이 작은 크기의 숫자를 다룬다고 해서 이것이 품절율은 중요하지 않다는 의미가 되진 않습니다.

 

따라서 우리는 주어진 입력값들의 scale을 동등하게 맞춰주는 작업을 해야하는데 이것이 바로 정규화(Normalization)입니다.

 

 

 

 

2. 정규화는 어떻게 하는데?

정규화를 하는 방법은 여러가지가 있습니다.

그리고 상황에 따라 적절하게 변형하여 사용하기도 합니다.

 

다만 일반적인 얘기를 하자면 보통 주어진 값들을 어떠한 방식을 통해 0~1사이의 값으로 치환하여 다룬다거나 -1~1 사이의 값으로 치환하여 다루는 등의 작업을 합니다.

결국 각 feature들의 scale을 동등하게 맞춰서 의도치 않게 모델이 어떤 하나의 feature에 편향되어 학습하는 것을 방지하는 것이죠.

 

흔히 알려져있는 몇가지 정규화 방법을 알아봅시다.

 

- Min-Max Scaling

하나의 feature에 대해 주어진 값 중 가장 큰 값을 1, 가장 작은 값을 0으로 하여 모든 값을 0~1 사이의 값으로 치환하는 방식입니다.

 

Min-Max Scaling

식은 위와 같습니다.

가장 큰 값과 가장 작은 값을 기준으로 정규화하는 것이죠.

 

위에서 봤던 예시에 식을 적용하면 아래와 같습니다.

 

상품 판매 금액(원) 품절율(%) 판매 금액 (정규화) 품절율 (정규화)
A    168,567,000 10.20% 1.0000 0.4066
B      30,096,000 8.60% 0.1749 0.3341
C           750,000 23.29% 0.0000 1.0000
D        2,168,000 1.23% 0.0084 0.0000
E      16,038,000 3.25% 0.0911 0.0916

 

판매 금액과 품절율을 정규화한 결과입니다.

 

판매 금액 168,567,000가 판매 금액 중 가장 큰 값이므로 이것이 1이 되고,

판매 금액 750,000가 판매 금액 중 가장 작은 값이므로 이것이 0이 됩니다.

그리고 나머지 숫자들은 0~1 사이의 값으로 치환되었습니다.

 

품절율도 똑같습니다.

품절율 23.29%가 품절율 중 가장 큰 값이므로 이것이 1이 되고,

품절율 1.23%가 품절율 중 가장 작은 값이므로 이것이 0이 됩니다.

그리고 나머지 숫자들은 0~1 사이의 값으로 치환되었습니다.

 

이렇게 정규화된 값을 비교하면 판매 금액과 품절율 모두 0~1 사이의 값을 가지게 되며 어떤 하나의 feature가 압도적으로 큰 scale의 숫자를 가지지 않습니다.

 

 

 

- Z-score Standardization

다음은 Z-score Standardization입니다.

주어진 값을 평균 0, 표쥰편차 1인 정규분포를 따르도록 조절하는 것입니다.

 

Z-score Standardization

μ는 평균입니다.

σ는 표준편차입니다.

 

주어진 값들의 평균을 구하고,

주어진 값들의 표준편차를 구해서

이를 이용하여 정규화하는 것입니다.

 

여기서는 품절율에 대해 정규화는 과정을 살펴봅니다.

상품 품절율(%) 평균 편차 편차 제곱 분산 표준편차 판매 금액 (정규화)
A 10.20% 0.0931 0.0089 0.0001 0.0060 0.0773 0.1146
B 8.60% 0.0931 -0.0071 0.0001 0.0060 0.0773 -0.0924
C 23.29% 0.0931 0.1398 0.0195 0.0060 0.0773 1.8081
D 1.23% 0.0931 -0.0808 0.0065 0.0060 0.0773 -1.0458
E 3.25% 0.0931 -0.0606 0.0037 0.0060 0.0773 -0.7845

 

가장 오른쪽 컬럼에 있는 정규화된 판매금액을 보면 값들이 바뀐 것을 알 수 있습니다.

 

아래는 판매 금액에 대한 정규화 결과입니다. (과정은 생략했습니다.)

상품 판매 금액(원) 판매 금액 (정규화)
A 168,567,000 1.9716
B 30,096,000 -0.2117
C 750,000 -0.6744
D 2,168,000 -0.6521
E 16,038,000 -0.4334

 

정규화 결과를 보면 판매 금액과 품절율 모두 비슷한 스케일로 변환된 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments