통계 및 시각화 기법을 통해 데이터를 조사한 후 모델이 더 많이 학습하도록 도울 수 있는 방식으로 데이터를 효과적으로 사용할 수 있습니다 목표는 정규화는 비슷한 규모로 제공할 수 있습니다 예를 들어 기능:
X
특성의 범위는 154~24,917,482입니다.Y
특성의 범위는 5~22입니다.
이 두 특성은 매우 다른 범위에 걸쳐 있습니다. 정규화를 사용해 데이터를 조작하거나
X
및 Y
를 사용하여 비슷한 범위(0~1)에 이를 수 있습니다.
정규화는 다음과 같은 이점을 제공합니다.
- 학습 중에 모델이 더 빠르게 수렴하는 데 도움이 됩니다. 여러 특성의 범위가 다를 때 경사하강법은 '반송' 이는 느린 수렴이 될 수 있습니다 즉, 다음과 같은 고급 옵티마이저를 사용하면 아다그라드 Adam은 시간 경과에 따라 유효 학습률을 변경할 수 있습니다
- 모델이 더 나은 예측을 추론하는 데 도움이 됩니다. 여러 특성의 범위가 서로 다른 경우 결과 예측의 유용성이 떨어질 수 있습니다
- 특성 값이 매우 높은 경우 'NaN 트랩'을 방지하는 데 도움이 됩니다.
NaN은 약어입니다.
숫자가 아닙니다. 모델의 값이
부동 소수점 정밀도 한계를 사용하는 경우 시스템은 값을 대신
NaN
로 설정합니다. 숫자입니다. 모델의 숫자 중 하나가 NaN이 되면 모델도 결국 NaN이 됩니다. - 모델이 각 특성의 적절한 가중치를 학습하는 데 도움이 됩니다. 특성을 조정하지 않으면 모델이 지나치게 많은 주의를 기울임 범위를 넓히고 있는 특성에 대한 관심이 충분하지 않은 경우에 할 수 있습니다.
명확하게 적용되는 숫자 특성을 정규화하는 것이 좋습니다.
연령, 소득 등)이 다를 수 있습니다.
또한 광범위한 범위를 아우르는 단일 숫자 특성을 정규화하는 것이 좋습니다.
예: city population.
다음 두 가지 기능을 고려하세요.
- 특성
A
의 최저값은 -0.5, 최댓값은 +0.5입니다. - 특성
B
의 최저값은 -5.0, 최댓값은 +5.0입니다.
기능 A
및 기능 B
의 스팬은 비교적 좁습니다. 하지만 B
기능은
스팬은 기능 A
의 스팬보다 10배 넓습니다. 따라서 날짜는 다음과 같이 계산합니다.
- 학습 시작 시 모델은
A
특성이 10배라고 가정합니다. 더 '중요' 더 높습니다.B
- 학습 시간이 예상보다 오래 걸립니다.
- 결과 모델은 최적이 아닐 수 있습니다.
정규화되지 않아 발생하는 전반적인 피해는 비교적 적습니다. 하지만 여전히 특성 A와 특성 B를 동일한 크기로 정규화하는 것이 좋습니다. 아마도 -1.0에서 +1.0까지입니다.
이제 범위 차이가 더 큰 두 특성을 살펴보겠습니다.
- 특성 `C의 가장 낮은 값은 -1이고 가장 높은 값은 +1입니다.
- 특성
D
의 가장 낮은 값은 +5000이고 가장 높은 값은 +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-점수 조정으로 정규화된 동일한 분포를 보여줍니다.
![그림 4. 두 개의 히스토그램: 둘 다
확인할 수 있습니다 첫 번째 히스토그램에는 원시 데이터가
평균이 200이고 표준 편차가 30입니다. 두 번째
히스토그램에는 첫 번째 히스토그램의
평균이 0이고 표준편차가 1인 경우를 나타냅니다.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=0000&hl=ko)
Z-점수 조정은 모호한 정규 분포만 있는 다음 그림입니다.
![그림 5. 각각 가파른 모양을 나타내는 동일한 모양의 2개의 히스토그램
고원에 이르렀다가 비교적 빠른 하강을 거쳐
점진적인 감소를 이루고 있습니다. 한 히스토그램은
원시 데이터의 분포 다른 히스토그램은
Z-점수 조정으로 정규화된 경우 원시 데이터의 분포입니다.
두 히스토그램의 X축 값은 매우 다릅니다.
원시 데이터 히스토그램은 도메인 0~29,000에 걸쳐 있지만,
Z-점수 척도 히스토그램 범위는 -1에서 약 +4.8까지입니다.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=0000&hl=ko)
Z-점수는 데이터가 정규 분포를 따르거나 정규 분포와 다소 비슷하다고 볼 수 있습니다.
일부 분포는 데이터의 대부분 내에서 정상일 수도 있습니다.
여전히 극단적인 이상점을 포함할 수 있습니다. 예를 들어, 거의 모든
net_worth
특성의 점은 3개의 표준 편차에 깔끔하게 맞춰질 수 있습니다.
이 특성의 몇 가지 예에는 수백 개의 표준 편차가 있습니다.
평균에서 멀어질 수 있습니다. 이러한 상황에서는 Z-점수 척도와
이 상황을 처리하기 위해 다른 형태의 정규화 (일반적으로 클리핑)를 사용합니다.
연습문제: 학습 내용 점검하기
성인을 보유하는height
이라는 특성으로 모델이 학습한다고 가정해 보겠습니다.
1,000만 명에 달하는 여성 중 Z-점수 조정이 좋은 정규화일까요?
height
기법은 무엇인가요? 그 이유는 무엇인가요?
로그 조정
로그 배율은 원시 값의 로그를 계산합니다. 이론적으로는 대수는 임의의 밑이 될 수 있습니다. 실제로 로그 확장은 일반적으로 자연 로그 (ln)입니다.
로그 확장은 데이터가 멱의 법칙 분포를 준수할 때 유용합니다. 가볍게 말하면 멱의 법칙 분포는 다음과 같습니다.
- 낮은
X
값은Y
의 값이 매우 높습니다. X
값이 증가하면Y
값은 빠르게 감소합니다. 따라서X
값이 높으면Y
값이 매우 낮습니다.
영화 등급은 멱법 분포의 좋은 예입니다. 다음에서 그림, 참고:
- 사용자 평점이 많은 영화도 있습니다. (낮은
X
값은 높음Y
의 값) - 대부분의 영화는 사용자 평점이 매우 적습니다. (
X
이(가) 높은 값은 낮습니다.Y
의 값)
로그 확장은 분포를 변경하므로 더 정확한 예측을 할 수 있습니다.
두 번째 예로, 도서 판매는 다음과 같은 이유로 멱법 분배를 준수합니다.
- 출판된 대부분의 책은 1~200권 정도만 판매됩니다.
- 어떤 책은 적당한 부부터 수천 권까지 판매되기도 합니다.
- 극히 일부의 베스트셀러만이 백만 권 이상을 판매합니다.
선형 모델을 학습시켜 데이터 차원의 예를 들면 책 표지 판매로 이어집니다. 원시 값에 대해 학습하는 선형 모델은 백만 부를 판매하는 책의 표지에 관한 정보를 찾아야 함 는 100권만 판매하는 책 표지보다 10,000권 더 강력한 효과를 냅니다. 그러나 모든 판매 수치를 로그 스케일링하면 작업을 훨씬 더 쉽게 실행할 수 있습니다. 예를 들어 100의 로그는 다음과 같습니다.
~4.6 = ln(100)
반면 1,000,000의 로그는 다음과 같습니다.
~13.8 = ln(1,000,000)
따라서 1,000,000의 로그는 100의 로그보다 약 세 배 더 큽니다. 베스트셀러 책 표지가 약 3배 정도 소량으로 판매되는 책 표지보다 훨씬 더 강력한 효과를 발휘합니다.
클립
클리핑은 극단적 이상점의 영향을 최소화합니다. 요약하자면 클립은 일반적으로 이상점 값을 특정 최댓값으로 (감소)합니다. 클립은 매우 효과적일 수 있습니다.
예를 들어 roomsPerPerson
라는 특성이 포함된 데이터 세트를 가정해 보겠습니다.
이는 방의 수 (총 회의실 수를
여러 주택에 대해)를 계산할 수 있습니다. 다음 그래프는
특성값의 99% 가 정규 분포 (대략
1.8, 표준 편차 0.7). 하지만 이 기능에는
극단적인 몇 가지 이상점은 다음과 같습니다.
![그림 7. RoomsPerPerson 도표로, 거의 모든 값이
0과 4 사이에 클러스터링되어 있지만
아주 롱테일이 있음
1인당 방 17개까지 이용 가능](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=0000&hl=ko)
이러한 극단적인 이상점이 미치는 영향을 최소화하려면 어떻게 해야 할까요? 자, 이제
히스토그램은 균등 분포, 정규 분포 또는 멱의 법칙이
배포되었습니다. 단순히 입력 시퀀스의 최댓값을 제한하거나 클립하면
roomsPerPerson
를 임의의 값으로 설정(예: 4.0?)
![RoomPerPerson 도표에서 모든 값이 0과 0 사이에 있는 경우
4.0. 플롯이 종 모양이지만 4.0 지점에 변칙적인 언덕이 있음](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=0000&hl=ko)
특성 값을 4.0으로 잘라낸다고 해서 모델이 모든 값이 4.0보다 큰지 확인하세요. 오히려 더 큰 값이며 4.0이 이제 4.0이 됩니다 이는 4.0 지점의 독특한 언덕을 설명해 줍니다. 하지만 조정된 특성 세트가 원래 데이터보다 더 유용합니다.
잠시만요! 모든 이상점 값을 임의의 상한값으로 줄일 수 있습니까? 기준은 무엇인가요? 모델을 학습시킬 때는 가능합니다.
다른 형태의 정규화를 적용한 후에 값을 자를 수도 있습니다. 예를 들어 Z-점수 척도를 사용하지만 몇몇 이상점은 절댓값이 3보다 훨씬 큽니다. 이 경우 다음을 수행할 수 있습니다.
- 3보다 큰 Z-점수를 클립하여 정확히 3이 되도록 합니다.
- -3보다 작은 Z-점수를 클립하여 정확히 -3이 됩니다.
클리핑을 사용하면 모델이 중요하지 않은 데이터에 대해 과도한 색인을 생성하는 것을 방지할 수 있습니다. 하지만 일부 이상점은 실제로 중요하므로 값을 신중하게 클립합니다.
정규화 기법 요약
정규화 기법 | 수식 | 사용하기 적합한 경우 |
---|---|---|
선형 조정 | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | 특성이 여러 영역에 균일하게 분포된 경우 고정 범위입니다. |
Z-점수 조정 | $$ x' = \frac{x - μ}{σ}$$ | 특성 분포에 극단적인 이상점이 포함되지 않은 경우 |
로그 조정 | $$ x' = log(x)$$ | 지형지물이 힘의 법칙을 준수하는 경우. |
클립 | $x > max$, $x'로 설정 = 최대$ $x보다 작거나 같은 경우 min$, $x'로 설정 = 최소$ |
특성에 극단적인 이상점이 포함된 경우 |
연습문제: 배운 내용 테스트하기
데이터 센터의 데이터 세트를 예측하는 모델을 개발한다고
데이터 센터 내부에서 측정된 온도에 따라 생산성이 향상됩니다.
데이터 세트의 거의 모든 temperature
값이 해당됩니다.
섭씨 15도에서 30도 사이 (섭씨). 단, 다음과 같은 예외가 있습니다.
- 일 년에 한두 번, 매우 더운 날에는
31과 45는
temperature
에 기록됩니다. temperature
의 1,000번째 포인트마다 1,000으로 설정됩니다. 실제 온도가 아닙니다.
다음 중 적절한 정규화 기법은 무엇일까요?
temperature
인가요?
1,000은 실수이므로 잘립니다.
31과 45 사이의 값은 정상적인 데이터 포인트입니다. 이 값에는 자르기를 사용하는 것이 좋습니다. 데이터 세트에 이 온도 범위에 있는 충분한 예시가 포함되어 있지 않아 좋은 예측을 하도록 모델을 학습시킬 수 있습니다. 그러나 추론하는 동안 따라서 잘린 모델은 예측의 45도, 35도 할 수도 있습니다.