신경망을 평균 0으로 훈련하기위한 데이터를 정규화하고 그라데이션 효과가 폭발하거나 사라지는 것을 줄이기 위해 “단위”표준 편차를 정규화하는 것이 일반적입니다.
여기서 “단위”표준은 무엇을 의미합니까? 예가 정말 도움이 될 것입니다.
코멘트
- 1과 같음을 의미합니다. 값을 원래 데이터의 표준 편차로 나누려면 . (제로 평균은 평균을 뺀 값입니다.)
답변
데이터 특성을 변환하고 있음을 의미합니다. 원래 단위 (마일, 달러, 경과 시간 등)에서 표준 편차 단위로. 요청한대로 매우 간단한 예를 따르십시오.
다음 가상 데이터와 같이 침실 수 (정수 단위)와 크기 (평방 미터 단위)의 두 가지 기능에서 주택 가격을 예측하려고한다고 가정합니다.
import numpy as np X = np.array([[1, 65],[3, 130],[2, 80],[2, 70],[1, 50]])
각 특성의 평균과 표준 편차가 매우 다릅니다.
print("mean={}, std{}".format(X.mean(axis=0), X.std(axis=0))
출력 : mean=[ 1.83333333, 78.33333333]), std=[ 0.68718427, 24.94438258])
특징 크기가 침실 수보다 30 배 더 큰 평균과 표준을 갖는다는 사실을 알지 못해 일부 알고리즘 계산 (예 : 신경망, svm)에서 왜곡이 발생합니다. , knn 등) 여기서 더 큰 값을 가진 일부 기능이 더 작은 값을 가진 다른 기능을 완전히 지배합니다. 일반적이고 매우 효과적인 방법은 데이터를 평균이 0 인 표준 편차 단위로 변환하는 것입니다. 즉, 평균을 빼고 다음과 같이 표준 편차로 나눕니다.
X_t = (X - X.mean(axis=0))/X.std(axis=0)
변수 X_t
(X 변환 됨)는 X_t
얻을 수 있습니다.
array([[-1.21267813, -0.53452248], [ 1.69774938, 2.07127462], [ 0.24253563, 0.06681531], [ 0.24253563, -0.33407655], [-1.21267813, -1.13586028], [ 0.24253563, -0.13363062]])
두 기능의 숫자가 모두 같은 크기를 갖는 방법을 살펴보세요. X_t
mean과 std를 인쇄하면 예상대로
mean=[ 1.11022302e-16 2.08166817e-16], std=[ 1. 1.]
가 표시됩니다.