반응형

오토인코더를 사용한 학습에서 표준화를 전처리 과정으로 사용하고 있어서 간단히 내용을 찾아서 정리했지만 아직은 좀 더 자료를 찾아봐야 할거 같습니다. 



2021. 8. 26  최초작성




비교하려는 데이터 간에 값의 범위 즉 스케일(scale)이 다른 경우 서로 비교할 수 없습니다. 

이 경우 보통 표준화(scale standizaion)을 통해 비교하려는 데이터들의 스케일을 동일하게 변환합니다.

 

표준화 중에서도 모집단이  정규분포(Gaussian distribution)를 따르는 경우,  평균이 0, 표준편차는 1 인 표준정규분포(standard normal distribution)로 표준화 하는 방법을 많이 사용합니다.  



다음 3가지 데이터를 사용하여 표준화 전후에 어떻게 달라지는지 출력해보았습니다. 

 

data1 = np.array([0, 1, 2, 3,  4,  5,  6,  7,  8 , 9, 10])

data2 = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22])

data3 = np.array([0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55])

 

import numpy as np


def calculate(data):

    print(data)

    # 평균, 표준편차, 분산을 구합니다. 
    mean = np.mean(data)
    std = np.std(data)
    var = np.var(data)

    print('mean:', mean)
    print('standard deviation:', std)
    print('variance:', var)
    print()


    # 표준정규분포 표준화를 합니다. 
    new_data = (data - mean) /std
    print(new_data)


    # 평균, 표준편차, 분산을 구합니다. 
    mean = np.mean(new_data)
    std = np.std(new_data)
    var = np.var(new_data)

    print('mean:', mean)
    print('standard deviation:', std)
    print('variance:', var)
    print('------------------------------------------------------')


data1 = np.array([0, 1, 2, 3,  4,  5,  6,  7,  8 , 9, 10])
data2 = np.array([2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22])
data3 = np.array([0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55])

calculate(data1)
calculate(data2)
calculate(data3)

 

서로 다른 데이터에서 같은 숫자들이 표준화를 거친 후 어떻게 변하는지 비교해보려고 숫자들을 색으로 표현해보았습니다. 

 

같은 숫자임에도 속한 데이터가 표준화되면서 값이 달라지는데 아직은 정확한 이유를 모르겠네요. 

 

좀 더 공부가 필요한 듯합니다. 

 

[ 0  1  2  3  4  5  6  7  8  9 10]
mean: 5.0
standard deviation: 3.1622776601683795
variance: 10.0

[-1.58113883 -1.26491106 -0.9486833  -0.63245553 -0.31622777  0.
  0.31622777  0.63245553  0.9486833   1.26491106  1.58113883]
mean: 1.0092936587501423e-16
standard deviation: 1.0
variance: 1.0
------------------------------------------------------
[ 2  4  6  8 10 12 14 16 18 20 22]
mean: 12.0
standard deviation: 6.324555320336759
variance: 40.0

[-1.58113883 -1.26491106 -0.9486833  -0.63245553 -0.31622777  0.
  0.31622777  0.63245553  0.9486833   1.26491106  1.58113883]
mean: 1.0092936587501423e-16
standard deviation: 1.0
variance: 1.0
------------------------------------------------------
[ 0  1  3  6 10 15 21 28 36 45 55]
mean: 20.0
standard deviation: 17.944358444926362
variance: 322.0

[-1.11455643 -1.0588286  -0.94737296 -0.7801895  -0.55727821 -0.27863911
  0.05572782  0.44582257  0.89164514  1.39319553  1.95047374]
mean: 2.0185873175002847e-17
standard deviation: 1.0
variance: 1.0
------------------------------------------------------

 

표준화는 평균 0, 표준 편차 1이 되도록 데이터를 바꾸는 것이고  정규화는 0 ~ 1 사이 범위로 데이터를 변경하는 거라고 합니다. 

 

자세한 내용은 아래 링크를 참고하세요.

 

https://bskyvision.com/849




참고

https://rfriend.tistory.com/268 





반응형

해본 것을 문서화하여 기록합니다.
부족함이 있지만 도움이 되었으면 합니다.


포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
질문을 남겨주면 가능한 빨리 답변드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">