Main Content

mapstd

각 행의 평균은 0에, 편차는 1에 매핑하여 행렬 처리

구문

[Y,PS] = mapstd(X,ymean,ystd)
[Y,PS] = mapstd(X,FP)
Y = mapstd('apply',X,PS)
X = mapstd('reverse',Y,PS)
dx_dy = mapstd('dx_dy',X,Y,PS)

설명

mapstd는 각 행의 평균과 표준편차를 ymeanystd로 변환하여 행렬을 처리합니다.

[Y,PS] = mapstd(X,ymean,ystd)는 다음과 같이 X와 선택적 파라미터를 받습니다.

X

N×Q 행렬

ymean

Y의 각 행의 평균값(디폴트 값 = 0)

ystd

Y의 각 행의 표준편차(디폴트 값 = 1)

그런 후 다음을 반환합니다.

Y

N×Q 행렬

PS

값이 일관적으로 처리되도록 하는 처리 설정

[Y,PS] = mapstd(X,FP)는 파라미터를 구조체 FP.ymean, FP.ystd로 받습니다.

Y = mapstd('apply',X,PS)X와 설정 PS를 받아서 Y를 반환합니다.

X = mapstd('reverse',Y,PS)Y와 설정 PS를 받아서 X를 반환합니다.

dx_dy = mapstd('dx_dy',X,Y,PS)는 역도함수를 반환합니다.

예제

각 행의 최솟값과 최댓값이 디폴트 평균과 디폴트 표준편차인 0과 1로 매핑되도록 행렬의 형식을 지정합니다.

x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]
[y1,PS] = mapstd(x1)

다음으로, 새 값에 동일한 처리 설정을 적용합니다.

x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]
y2 = mapstd('apply',x2,PS)

y1의 처리 과정을 역으로 하여 x1을 다시 얻습니다.

x1_again = mapstd('reverse',y1,PS)

세부 정보

모두 축소

mapstd를 사용하여 신경망 입력값과 목표값 정규화하기

신경망 입력값과 목표값을 스케일링하는 또 다른 방법은 훈련 세트의 평균과 표준편차를 정규화하는 것입니다. 함수 mapstd는 평균 0과 표준편차 1을 갖도록 입력값과 목표값을 정규화합니다. 다음 코드는 mapstd를 사용하는 방법을 보여줍니다.

[pn,ps] = mapstd(p);
[tn,ts] = mapstd(t);

신경망의 원래 입력값과 목표값은 행렬 pt에 있습니다. 반환되는 정규화된 입력값과 목표값 pntn은 평균 0과 표준편차 1을 갖습니다. 설정 구조체 psts에는 원래 입력값과 원래 목표값의 평균과 표준편차가 들어 있습니다. 신경망을 훈련시킨 후, 향후 신경망에 적용할 입력값은 이러한 설정을 사용해 변환해야 합니다. 설정은 신경망 가중치와 편향처럼 실질적으로 신경망의 일부가 됩니다.

목표값을 스케일링하는 데 mapstd가 사용된 경우, 신경망의 출력값은 평균 0과 표준편차 1을 갖는 출력값을 생성하도록 훈련됩니다. 이러한 출력값을 원래 목표값에 사용된 것과 동일한 단위로 다시 변환하려면 ts를 사용하십시오. 다음 코드는 이전 코드에서 훈련된 신경망을 시뮬레이션한 다음 신경망 출력값을 원래 단위로 다시 변환합니다.

an = sim(net,pn);
a = mapstd('reverse',an,ts);

신경망 출력값 an은 정규화된 목표값 tn에 대응됩니다. 정규화되지 않은 신경망 출력값 a의 단위는 원래 목표값 t의 단위와 같습니다.

훈련 세트 데이터를 전처리하는 데 mapstd가 사용된 경우, 훈련된 신경망에서 새로운 입력값을 사용할 때마다 새로운 입력값을 ps를 사용해 훈련 세트에 대해 계산된 평균과 표준편차로 전처리해야 합니다. 다음 명령은 이미 훈련된 신경망에 새로운 입력값 세트를 적용합니다.

pnewn = mapstd('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapstd('reverse',anewn,ts);

feedforwardnet을 비롯한 대부분의 신경망에서 이러한 단계가 자동으로 수행되므로 사용자는 sim 명령을 사용하기만 하면 됩니다.

알고리즘

X는 유한한 실수 값만 갖고 각 행의 요소가 모두 같지는 않다고 가정합니다.

y = (x-xmean)*(ystd/xstd) + ymean;

버전 내역

R2006a에 개발됨