통계 및 시각화 기법을 통해 데이터를 검사한 후에는 모델을 더 효과적으로 학습하는 데 도움이 되는 방식으로 데이터를 변환해야 합니다. 정규화의 목표는 유사한 크기로 변환하는 것입니다. 예를 들어 다음 두 특성을 살펴보겠습니다.
- 지형지물
X
은 154~24,917,482 범위에 걸쳐 있습니다. - 지형지물
Y
은 5~22 범위에 걸쳐 있습니다.
이 두 가지 기능은 매우 다른 범위에 걸쳐 있습니다. 정규화는 X
및 Y
가 유사한 범위(예: 0~1)를 차지하도록 조작할 수 있습니다.
정규화에는 다음과 같은 이점이 있습니다.
- 학습 중에 모델이 더 빠르게 수렴하는 데 도움이 됩니다. 서로 다른 특성의 범위가 다르면 경사 하강이 '튀어오르고' 수렴 속도가 느려질 수 있습니다. 하지만 Adagrad 및 Adam과 같은 고급 최적화 도구는 시간이 지남에 따라 효과적인 학습률을 변경하여 이 문제를 방지합니다.
- 모델이 더 나은 예측을 추론하는 데 도움이 됩니다. 서로 다른 지형지물의 범위가 다르면 결과 모델의 예측이 다소 덜 유용할 수 있습니다.
- 특성 값이 매우 높을 때 'NaN 트랩'을 방지하는 데 도움이 됩니다.
NaN은 숫자가 아님의 약어입니다. 모델의 값이 부동 소수점 정밀도 한도를 초과하면 시스템은 이 값을 숫자 대신
NaN
로 설정합니다. 모델의 숫자 중 하나가 NaN이 되면 모델의 다른 숫자도 결국 NaN이 됩니다. - 모델이 각 특성의 적절한 가중치를 학습하는 데 도움이 됩니다. 특성 조정을 하지 않으면 모델은 범위가 넓고 범위가 좁은 특성에는 신경을 많이 쓰지 않습니다.
확연히 다른 범위를 다루는 숫자 특성 (예: 연령 및 소득)을 정규화하는 것이 좋습니다.
또한 city population.
와 같이 넓은 범위를 다루는 단일 숫자 특성을 정규화하는 것이 좋습니다.
다음 두 가지 기능을 고려하세요.
- 지형지물
A
의 최솟값은 -0.5이고 최댓값은 +0.5입니다. - 특성
B
의 최저값은 -5.0, 최댓값은 +5.0입니다.
지형지물 A
및 지형지물 B
의 범위는 비교적 좁습니다. 하지만 지형지물 B
의 범위는 지형지물 A
의 범위보다 10배 더 넓습니다. 따라서 날짜는 다음과 같이 계산합니다.
- 학습이 시작되면 모델은 특성
B
가 특성A
보다 10배 더 '중요'하다고 가정합니다. - 학습 시간이 예상보다 오래 걸립니다.
- 결과 모델은 최적이 아닐 수 있습니다.
정규화하지 않아 발생하는 전체 손상은 비교적 적지만 특성 A와 기능 B를 동일한 규모(예: -1.0~+1.0)로 정규화하는 것이 좋습니다.
이제 범위 차이가 더 큰 두 지형지물을 생각해 보겠습니다.
- 지형지물
C
의 최솟값은 -1이고 최댓값은 +1입니다. - 지형지물
D
의 최솟값은 +5,000이고 최댓값은 +1,000,000,000입니다.
지형지물 C
및 지형지물 D
를 정규화하지 않으면 모델이 최적화되지 않을 수 있습니다. 또한 학습이 수렴하는 데 훨씬 더 오래 걸리거나 완전히 수렴하지 못할 수도 있습니다.
이 섹션에서는 다음과 같은 세 가지 일반적인 정규화 방법을 다룹니다.
- 선형 확장
- Z-점수 크기 조정
- 로그 조정
이 섹션에서는 클리핑에 대해서도 설명합니다. 클립은 진정한 정규화 기법은 아니지만, 데이터 클리핑은 다루기 어려운 숫자 특성을 더 나은 모델을 생성하는 범위로 이끕니다.
선형 조정
선형 크기 조정(흔히 크기 조정으로 줄여서 표기함)은 부동 소수점 값을 자연 범위에서 표준 범위(일반적으로 0~1 또는 -1~+1)로 변환하는 것을 의미합니다.
선형 확장은 다음 조건이 모두 충족되는 경우에 적합합니다.
- 데이터의 하한과 상한이 시간이 지남에 따라 크게 변경되지 않습니다.
- 특성에 외부값이 거의 없거나 없으며 이러한 외부값이 극단적이지 않습니다.
- 지형지물은 범위 전체에 걸쳐 대략적으로 균일하게 분포되어 있습니다. 즉, 히스토그램은 대부분의 값에 대해 대략 균등한 막대를 표시합니다.
인간의 age
이 특성이라고 가정해 보겠습니다. 선형 확장은 다음과 같은 이유로 age
에 적합한 정규화 기법입니다.
- 대략적인 하한 및 상한은 0~100입니다.
age
에는 상대적으로 적은 비율의 이상치가 포함되어 있습니다. 인구의 약 0.3% 만이 100을 넘습니다- 특정 연령대가 다른 연령대보다 다소 잘 표현되지만, 대규모 데이터 세트에는 모든 연령에 대한 충분한 예가 포함되어야 합니다.
연습문제: 이해도 확인
모델에 여러 사람의 순자산을 보유하는net_worth
라는 특성이 있다고 가정해 보겠습니다. 선형 확장이 net_worth
에 좋은 정규화 기법이 될 수 있나요? 그 이유는 무엇인가요?
Z-점수 크기 조정
Z 점수는 값이 평균에서 얼마나 차이가 있는지 나타내는 표준 편차 수입니다. 예를 들어 평균보다 표준편차 2만큼 큰 값의 Z 점수는 +2.0입니다. 표준 편차가 1.5이며 평균보다 작은 값의 Z-점수는 -1.5입니다.
Z-점수 크기 조정으로 특성을 나타내는 것은 특성 벡터에 특성의 Z-점수를 저장하는 것을 의미합니다. 예를 들어 다음 그림은 두 개의 히스토그램을 보여줍니다.
- 왼쪽은 기존 정규 분포입니다.
- 오른쪽에서는 Z-점수 조정으로 정규화된 동일한 분포를 보여줍니다.
Z-점수 크기 조정은 대략적으로 정규 분포만 있는 다음 그림과 같은 데이터에도 적합합니다.
Z 점수는 데이터가 정규 분포 또는 정규 분포와 유사한 분포를 따르는 경우에 적합합니다.
일부 분포는 대부분의 범위 내에서 정상이지만 극단적인 외부값을 포함할 수 있습니다. 예를 들어 net_worth
특성의 거의 모든 점이 3개의 표준 편차에 깔끔하게 맞춰질 수 있지만 이 특성의 몇 가지 예에는 평균에서 수백 개의 표준 편차가 발생하는 경우가 있습니다. 이러한 경우 Z-점수 크기 조정을 다른 형태의 정규화 (일반적으로 클리핑)와 결합하여 이 상황을 처리할 수 있습니다.
연습문제: 이해도 확인
모델이 1,000만 명의 성인 여성의 신장을 보유한height
라는 특성으로 학습한다고 가정해 보겠습니다. Z-점수 조정이 height
에 적합한 정규화 기법인가요? 그 이유는 무엇인가요?
로그 조정
로그 배율은 원시 값의 로그를 계산합니다. 이론적으로 로그의 밑은 무엇이든 될 수 있습니다. 실제로 로그 크기 조정은 일반적으로 자연 로그 (ln)를 계산합니다.
로그 스케일링은 데이터가 멱함수 분포를 따를 때 유용합니다. 가볍게 말하면 멱의 법칙 분포는 다음과 같습니다.
X
값이 낮으면Y
값이 매우 높습니다.X
값이 증가하면Y
값은 빠르게 감소합니다. 따라서X
값이 클수록Y
값이 매우 낮습니다.
영화 평점은 지수 분포의 좋은 예입니다. 다음 그림에서 다음 사항을 확인하세요.
- 일부 영화에는 사용자 평점이 많습니다.
X
값이 낮으면Y
값이 높습니다. - 대부분의 영화에는 사용자 평점이 거의 없습니다. (
X
값이 클수록Y
값은 작습니다.)
로그 확장은 분포를 변경하므로 더 정확한 예측을 실행하는 모델을 학습하는 데 도움이 됩니다.
두 번째 예로, 다음과 같은 이유로 도서 판매는 지수 분포를 따릅니다.
- 출판된 대부분의 도서는 100~200부 정도만 판매됩니다.
- 일부 도서는 수천 부가 판매됩니다.
- 베스트셀러 중에서도 판매량이 100만 부를 넘는 경우는 극소수에 불과합니다.
예를 들어 도서 표지와 도서 판매 간의 관계를 찾기 위해 선형 모델을 학습시키고 있다고 가정해 보겠습니다. 원시 값을 기반으로 선형 모델을 학습하려면 판매량이 100부인 책의 표지보다 10,000배 더 강력한 판매량이 100만부인 책의 표지에서 무언가를 찾아야 합니다. 하지만 모든 판매 수치를 로그로 확장하면 이 작업을 훨씬 더 쉽게 처리할 수 있습니다. 예를 들어 100의 로그는 다음과 같습니다.
~4.6 = ln(100)
1,000,000의 로그는 다음과 같습니다.
~13.8 = ln(1,000,000)
따라서 1,000,000의 로그는 100의 로그보다 약 3배 더 큽니다. 베스트셀러 책 표지가 소량 판매되는 책 표지보다 (어떤 면에서) 3배 더 강력하다고 생각할 수 있습니다.
클리핑
경사 제한은 극단적인 이상치의 영향을 최소화하는 기법입니다. 간단히 말해 클리핑은 일반적으로 특정 최대 값으로 특이값의 값을 제한(줄입니다). 클리핑은 이상한 아이디어이지만 매우 효과적일 수 있습니다.
예를 들어 여러 주택의 방 수 (총 방 수를 거주자 수로 나눈 값)를 나타내는 roomsPerPerson
이라는 특성이 포함된 데이터 세트가 있다고 가정해 보겠습니다. 다음 그래프는 특성 값의 99% 이상이 정규 분포 (대략 평균 1.8, 표준 편차 0.7)를 따르는 것을 보여줍니다. 하지만 이 지형지물에는 극단적인 경우를 포함해 몇 개의 예외가 있습니다.
이러한 극단적인 이상치의 영향을 최소화하려면 어떻게 해야 하나요? 히스토그램은 균등 분포, 정규 분포 또는 지수 분포가 아닙니다. roomsPerPerson
의 최대 값을 임의의 값(예: 4.0)으로 제한하거나 자르기하면 어떻게 되나요?
특성 값을 4.0으로 클리핑한다고 해서 모델이 4.0보다 큰 모든 값을 무시하는 것은 아닙니다. 4.0보다 큰 모든 값이 4.0이 되었다는 의미입니다. 이것이 4.0의 독특한 언덕을 설명합니다. 하지만 조정된 특성 세트가 원래 데이터보다 더 유용해졌습니다.
잠깐만요! 모든 이상치 값을 임의의 상위 기준점으로 줄일 수 있나요? 모델을 학습할 때는 그렇습니다.
다른 형태의 정규화를 적용한 후에 값을 자를 수도 있습니다. 예를 들어 Z-점수 배율을 사용하지만 절대값이 3보다 훨씬 큰 일부 이상점이 있다고 가정해 보겠습니다. 이 경우 다음을 수행할 수 있습니다.
- 3보다 큰 Z-점수를 클립하여 정확히 3이 되도록 합니다.
- Z 점수가 -3 미만이면 정확히 -3으로 자릅니다.
클리핑을 사용하면 모델이 중요하지 않은 데이터에 오버인덱싱하는 것을 방지할 수 있습니다. 하지만 일부 이상치는 실제로 중요하므로 값을 신중하게 클립하세요.
정규화 기법 요약
정규화 기법 | 수식 | 사용하기 적합한 경우 |
---|---|---|
선형 조정 | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | 지형지물이 고정된 범위에 균일하게 분포되어 있는 경우 |
Z-점수 조정 | $$ x' = \frac{x - μ}{σ}$$ | 지형지물 분포에 극단적인 외부값이 포함되지 않은 경우 |
로그 조정 | $$ x' = log(x)$$ | 지형지물이 지수 법칙을 따르는 경우 |
클리핑 | $x > max$인 경우 $x' = max$로 설정합니다. $x < min$인 경우 $x' = min$로 설정합니다. |
특성에 극단적인 이상점이 포함된 경우 |
연습문제: 배운 내용 테스트하기
데이터 센터 내부에서 측정된 온도에 따라 데이터 센터의 생산성을 예측하는 모델을 개발한다고 가정해 보겠습니다.
데이터 세트의 거의 모든 temperature
값은 섭씨 15~30도 사이이지만 다음과 같은 예외가 있습니다.
- 일 년에 한두 번, 매우 더운 날에는 31~45 사이의 값이
temperature
에 기록됩니다. temperature
의 1,000번째 지점마다 실제 온도가 아닌 1,000으로 설정됩니다.
temperature
에 적절한 정규화 기법은 무엇인가요?
1,000이라는 값은 실수이며 잘라내는 대신 삭제해야 합니다.
31~45 사이의 값은 유효한 데이터 포인트입니다. 데이터 세트에 이 온도 범위에서 모델을 학습하여 정확한 예측을 할 만큼 충분한 예시가 포함되어 있지 않다고 가정하면 이러한 값에 클리핑을 적용하는 것이 좋습니다. 하지만 추론하는 동안 잘린 모델은 온도 45도 온도 35도와 동일하게 예측합니다.