• Feature scaling의 종류

    2022. 7. 28.

    by. 안녕진

    개인 공부 목적의 포스팅입니다. 잘못된 정보가 있다면 댓글 남겨주시면 수정하도록 하겠습니다.
    감사합니다.

     

    💡 주제 설명

    머신러닝에서 자주 접하는 Feature scaling이라는 용어의 의미와 방법을 자세히 알아보자.
    Feature scaling의 영향을 확인하자. (구체적인 역할 및 비교는 다음 포스팅에서 다룬다.)

     


    📌 배경

    coursera 강의에서 접했는데, 자세한 내용이 궁금하다.
    강의 내용 말고 직접 찾아보고 싶어졌다.

     


    🔍 과정   [실습 Github 링크]

    • Scaling 정의, 역할
    [위키피디아]를 참조해서 적어보자면, scaling은 독립 변수나 data의 features의 범위를 normalize 하는 것이다.

    독립 변수라는 말을 쉽게 이해하기 위해, 키-몸무게 데이터를 분석하는 상황을 가정하자.
    '키가 클수록 몸무게가 많이 나갈 것이다'라는 가설을 세웠다면, 원인인 '키'는 독립 변수이고, 결과인 '몸무게'는 종속 변수이다.
    내가 세운 가설에서 '몸무게'가 원인인 '키'에 의해 결정되므로, 독립/종속과 같은 용어가 붙었다.

    data의 feature란, 위의 데이터처럼 관찰한 현상을 나타내는 특성들이다.
    위의 예제에서, 몸무게를 나타내기 위해 '키'라는 feature를 사용한다.

    이제 Scaling에 관해 정리해보자
    Feature scaling은 위처럼 결과를 내놓기 위한 원인으로 작용하는,
    다시말해 입력으로 작용하는 것의 범위를 normalize 하는 것이다.
    feature들을 비슷한 범위로 normalize 해야 하는 이유와 효과에 관해 제대로 알아보자.
    (위키피디아에 서술된 방식들을 찾아봤다.)

     

    • 실습의 방법 및 목적, 실습할 데이터의 분포 설명
    1. x1, x2 라는 feature를 임의로 만든다.
    2. x1, x2의 초기 분포를 확인한다.
    3. 다양한 scaling 기법을 적용하며 분포가 어떻게 변하는지 확인한다.
    => scaling의 동작 방식을 이해한다.

    데이터는
    x1: 6~16
    x2: 3*x1 (18~48)
    범위의 random한 10개의 실수 값으로 이루어진다.

    데이터 분포는 아래와 같은 함수를 이용해서 화면에 표시한다.
    def showDist(x1, x2, axisLim=50):
        plt.xlim(-axisLim, axisLim)
        plt.ylim(-axisLim, axisLim)
    
        plt.grid()
        plt.axhline(0, color='black')
        plt.axvline(0, color='black')
    
        plt.plot(x1, x2, 'ro')
        plt.show()​

    데이터의 분포를 확인하면 아래와 같다.

     

    • Rescaling (min-max normalization)
    1. 기본적인 min-max
    $scaled\_x = \cfrac{x-min(x)}{max(x)-min(x)}$

    0~1 범위의 값으로 표현된 것을 확인할 수 있다.

    2. arbitrary range set (a~b 범위의 값으로 표현)
    $scaled\_x = a + \cfrac{(x-min(x))(b-a)}{max(x)-min(x)}$

    -10~35 범위의 값으로 표현된다.

     

    • Mean normalization
    $scaled\_x = \cfrac{x-average(x)}{max(x)-min(x)}$

    min-max scaling과 비슷한 수식으로 구성되지만,
    min(x) 보다 큰 값인 average(x)를 빼기 때문에, 음수 값도 나오고 절댓값이 1보다 작다.

     

    • Standardization (Z-score Normalization)
    으악 저번 학기 확통 때 본 친구.. 많은 모델에 쓰인다고 한다.
    $scaled\_x = \cfrac{x-\bar x}{\sigma}=\cfrac{x-average(x)}{\sigma}$

    따로 계산은 안 해봤지만, 수식에 의해 새로 생긴 분포는 평균 0, 표준편차 1을 갖는다.

     

    • Scaling to unit length
    $scaled\_x = \cfrac{x}{||x||}$

    다음 포스팅하며 자세히 알아보자.

    댓글