부호있는 정수의 배열을 0에서 1까지의 범위로 조정하는 방법은 무엇입니까?


답변:


24

이를 유니티 기반 정규화라고합니다. 벡터 가있는 경우 다음을 수행하여 Z 와 같이 정규화 된 버전을 얻을 수 있습니다 .엑스

=엑스(엑스)최대(엑스)(엑스)

1
이 접근법은 최소-최대 정규화라고도합니다 (최소 및 최대 값을 사용
하므로

이 방법을 사용하여 백분율을 나타내며 음수 일 수 있지만 항상 -2 %보다 높고 30 %보다 작은 값을 정규화하는 것이 좋습니까? 신경망이 이런 식으로 정규화하면 가치 의미의 단서를 얻는 것이 어렵지 않습니까?
Ivan

3

배열에서 가장 큰 양수와 가장 작은 음수를 찾습니다. 가장 작은 (가장 음수) 숫자의 절대 값을 배열의 모든 값에 더합니다. 각 결과를 가장 큰 숫자와 가장 작은 숫자의 차이로 나눕니다.


@Jonathan : 두 값이 모두 동일한 배열, 원본 또는 업데이트 된 것이라면 중요하지 않습니다. 모든 값에 동일한 숫자가 추가되므로 최소값과 최대 값의 차이는 동일하게 유지됩니다.
RemcoGerlich

1

벡터 / 배열 값이 있다고 가정 v = [1, -2, 3]

minV = Math.min.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] -= minV;}
maxV = Math.max.apply(Math, v);;
for(var i=0; i<v.length; i++) {v[i] /= ( maxV - minV );}

끝에 출력은입니다 v = [0.6, 0, 1]. 설명:

  1. 음수가 없도록 전체 값 범위를 0에서 시작하도록 푸시

  2. 최대 값이 1이되도록 값을 범위의 (최대-최소)로 나눕니다.


1

그렇게하기 전에 특이 치를 점검 할 수 있습니다. 데이터의 99 %가 (-5, 5) 범위에 있지만 한 명의 작은 녀석은 25.0의 값을 갖습니다. 정규화 된 배열은 (0, 0.3) 주위에 군집되어 신경망이 학습하는 데 문제가 발생할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.