숫자 데이터: 정규화

통계 및 시각화 기법을 통해 데이터를 검사한 후에는 모델을 더 효과적으로 학습하는 데 도움이 되는 방식으로 데이터를 변환해야 합니다. 정규화의 목표는 유사한 크기로 변환하는 것입니다. 예를 들어 다음 두 특성을 살펴보겠습니다.

  • 지형지물 X은 154~24,917,482 범위에 걸쳐 있습니다.
  • 지형지물 Y은 5~22 범위에 걸쳐 있습니다.

이 두 가지 기능은 매우 다른 범위에 걸쳐 있습니다. 정규화는 XY가 유사한 범위(예: 0~1)를 차지하도록 조작할 수 있습니다.

정규화에는 다음과 같은 이점이 있습니다.

  • 학습 중에 모델이 더 빠르게 수렴하는 데 도움이 됩니다. 서로 다른 특성의 범위가 다르면 경사 하강이 '튀어오르고' 수렴 속도가 느려질 수 있습니다. 하지만 AdagradAdam과 같은 고급 최적화 도구는 시간이 지남에 따라 효과적인 학습률을 변경하여 이 문제를 방지합니다.
  • 모델이 더 나은 예측을 추론하는 데 도움이 됩니다. 서로 다른 지형지물의 범위가 다르면 결과 모델의 예측이 다소 덜 유용할 수 있습니다.
  • 특성 값이 매우 높을 때 '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-점수 조정으로 정규화된 동일한 분포를 보여줍니다.
그림 4. 두 개의 히스토그램: 모두 동일한 분포를 갖는 정규 분포를 보여줍니다. 원시 데이터가 포함된 첫 번째 히스토그램의 평균은 200이고 표준 편차는 30입니다. 첫 번째 분포의 Z 점수 버전이 포함된 두 번째 히스토그램의 평균은 0이고 표준편차는 1입니다.
그림 4. 정규 분포의 원시 데이터 (왼쪽)와 Z 점수 (오른쪽)

Z-점수 크기 조정은 대략적으로 정규 분포만 있는 다음 그림과 같은 데이터에도 적합합니다.

그림 5. 모양이 동일한 두 개의 히스토그램으로, 각각은 고원에 이르는 가파른 상승과 그다음의 비교적 빠른 하강, 그리고 점진적인 감소를 보여줍니다. 한 히스토그램은 원시 데이터의 분포를 보여주고 다른 히스토그램은 Z-점수 크기 조정을 통해 정규화된 원시 데이터의 분포를 보여줍니다.
            두 히스토그램의 X축 값은 매우 다릅니다.
            원시 데이터 히스토그램은 0~29,000 도메인에 걸쳐 있는 반면 Z-점수 크기 조정 히스토그램은 -1~약 +4.8 범위에 있습니다.
그림 5. 기존 정규 분포가 아닌 경우의 원시 데이터 (왼쪽)와 Z-점수 크기 조정 (오른쪽)

Z 점수는 데이터가 정규 분포 또는 정규 분포와 유사한 분포를 따르는 경우에 적합합니다.

일부 분포는 대부분의 범위 내에서 정상이지만 극단적인 외부값을 포함할 수 있습니다. 예를 들어 net_worth 특성의 거의 모든 점이 3개의 표준 편차에 깔끔하게 맞춰질 수 있지만 이 특성의 몇 가지 예에는 평균에서 수백 개의 표준 편차가 발생하는 경우가 있습니다. 이러한 경우 Z-점수 크기 조정을 다른 형태의 정규화 (일반적으로 클리핑)와 결합하여 이 상황을 처리할 수 있습니다.

연습문제: 이해도 확인

모델이 1,000만 명의 성인 여성의 신장을 보유한 height라는 특성으로 학습한다고 가정해 보겠습니다. Z-점수 조정이 height에 적합한 정규화 기법인가요? 그 이유는 무엇인가요?

로그 조정

로그 배율은 원시 값의 로그를 계산합니다. 이론적으로 로그의 밑은 무엇이든 될 수 있습니다. 실제로 로그 크기 조정은 일반적으로 자연 로그 (ln)를 계산합니다.

로그 스케일링은 데이터가 멱함수 분포를 따를 때 유용합니다. 가볍게 말하면 멱의 법칙 분포는 다음과 같습니다.

  • X 값이 낮으면 Y 값이 매우 높습니다.
  • X 값이 증가하면 Y 값은 빠르게 감소합니다. 따라서 X 값이 클수록 Y 값이 매우 낮습니다.

영화 평점은 지수 분포의 좋은 예입니다. 다음 그림에서 다음 사항을 확인하세요.

  • 일부 영화에는 사용자 평점이 많습니다. X 값이 낮으면 Y 값이 높습니다.
  • 대부분의 영화에는 사용자 평점이 거의 없습니다. (X 값이 클수록 Y 값은 작습니다.)

로그 확장은 분포를 변경하므로 더 정확한 예측을 실행하는 모델을 학습하는 데 도움이 됩니다.

그림 6. 원시 데이터와 원시 데이터 로그를 비교하는 두 그래프
            원시 데이터 그래프에서는 헤드에 많은 사용자 평점이 표시되고 그 뒤에 롱테일이 표시됩니다. 로그 그래프는 더 균등하게 분포되어 있습니다.
그림 6. 원시 분포와 로그를 비교합니다.

두 번째 예로, 다음과 같은 이유로 도서 판매는 지수 분포를 따릅니다.

  • 출판된 대부분의 도서는 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)를 따르는 것을 보여줍니다. 하지만 이 지형지물에는 극단적인 경우를 포함해 몇 개의 예외가 있습니다.

그림 7. roomsPerPerson 도표에서 거의 모든 값이 0~4 범위에 클러스터링되어 있지만 인당 방 17개까지 꼬리가 매우 길게 늘어져 있는 모습
그림 7. 대부분 정상이지만 완전히 정상은 아닙니다.

이러한 극단적인 이상치의 영향을 최소화하려면 어떻게 해야 하나요? 히스토그램은 균등 분포, 정규 분포 또는 지수 분포가 아닙니다. roomsPerPerson의 최대 값을 임의의 값(예: 4.0)으로 제한하거나 자르기하면 어떻게 되나요?

RoomPerPerson 도표로 모든 값이 0~4.0 범위에 놓여 있습니다. 종 곡선 모양이지만 4.0 지점에 비정상 경사가 있는 도표
그림 8. 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$로 설정합니다.
특성에 극단적인 이상점이 포함된 경우

연습문제: 배운 내용 테스트하기

다음과 같은 분포를 가진 특성을 정규화하는 데 가장 적합한 기법은 무엇인가요?

값이 0~200,000 범위인 데이터 클러스터를 보여주는 히스토그램 데이터 포인트 수는 0~100,000개 범위에서 점차 증가하다가 100,000개에서 200,000개로 점차 줄어듭니다.

Z-점수 크기 조정
데이터 포인트는 일반적으로 정규 분포를 따르므로 Z-점수 배율을 사용하면 데이터 포인트가 –3에서 +3까지의 범위로 강제됩니다.
선형 조정
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.
로그 조정
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.
클리핑
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.

데이터 센터 내부에서 측정된 온도에 따라 데이터 센터의 생산성을 예측하는 모델을 개발한다고 가정해 보겠습니다. 데이터 세트의 거의 모든 temperature 값은 섭씨 15~30도 사이이지만 다음과 같은 예외가 있습니다.

  • 일 년에 한두 번, 매우 더운 날에는 31~45 사이의 값이 temperature에 기록됩니다.
  • temperature의 1,000번째 지점마다 실제 온도가 아닌 1,000으로 설정됩니다.

temperature에 적절한 정규화 기법은 무엇인가요?

31과 45 사이의 이상점 값을 자르되 값이 1,000인 이상점은 삭제합니다.

1,000이라는 값은 실수이며 잘라내는 대신 삭제해야 합니다.

31~45 사이의 값은 유효한 데이터 포인트입니다. 데이터 세트에 이 온도 범위에서 모델을 학습하여 정확한 예측을 할 만큼 충분한 예시가 포함되어 있지 않다고 가정하면 이러한 값에 클리핑을 적용하는 것이 좋습니다. 하지만 추론하는 동안 잘린 모델은 온도 45도 온도 35도와 동일하게 예측합니다.

모든 이상점 자르기
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.
모든 이상값 삭제
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.
31과 45 사이의 이상점 값을 삭제하되, 값이 1,000인 이상점을 자릅니다.
이 페이지에서 정규화 기법에 관한 설명을 검토한 후 다시 시도하세요.