데이터 전처리 - 스케일 처리하기

Lia·2021년 8월 15일

AI

목록 보기
1/11
Contents
1. 표준점수와 표준편차
2. Numpy의 mean / std 함수
3. 표준점수 계산하기

머신러닝 모델을 학습 시킬때에 훈련 세트의 특성들의 차이가
심하거나 데이터를 표현하는 기준이 다르면 머신러닝 알고리즘이
올바른 예측을 하지 못합니다.

이를 해결하기 위해서는 표준점수를 이용하는것이 가장 대표적입니다.


# 01 - 표준점수와 표준편차

표준점수는 z-score 라고도 많이 불립니다.
위키피디아에 따르면 표준점수가 양수이면 평균값보다 위에 위치한 값이고
음수이면 평균값보다 낮게 위치한 값이라고 합니다.

표준점수의 공식은 다음과 같습니다.

x가 원수치, σ는 표준편차, μ는 평균이라고 합니다.
위 공식을 이용해서 z-score 즉 표준점수를 구할 수 있습니다.

표준점수를 구하기 위해서 평균 말고도 알아야 할 값이 있습니다.
바로 표준편차 인데요 제가 중학생때 배웠던것 같은데 기억이 잘 안나니
한번 상기시켜 보겠습니다.

표준편차를 구하기 위해서는 생각보다 많은 값을 알고 있어야 합니다.
먼저 표준편차는 분산의 제곱근 입니다.

분산은 또한 편차 제곱의 평균입니다.
편차는 변량 즉 원수치 - 평균의 값입니다.

또 편차를 구하기 위해서는 평균값이 필요합니다.


#02 - Numpy의 mean / std 함수

표준편차 를 구하는 과정을 하나하나 코드로 풀어내기에는 번거로움이 있습니다.
그래서 python의 외부 라이브러리인 Numpy 를 사용하여 쉽게 계산할 수 있습니다.

Numpy 는 행렬 등 다차원 배열을 쉽게 다루도록 도와주고 수학 관련한 기능들이
정말 많은 라이브러리 입니다.

무튼 Numpymeanstd 함수를 이용하면 각각 평균표준편차
구할 수 있습니다.

mean = numpy.mean(input_array, axis=0)
std = numpy.std(input_array, axis=0)

위와 같이 각각의 함수에 배열을 전달해주면 평균과 표준편차의 값을 반환합니다.
여기서 두번째 파라미터로 전달해준 axis 값을 0으로 해주면
행을 따라 각 열의 통계 값을 계산합니다.


#03 - 표준점수 계산하기

위에서 구한 평균과 표준편차를 이용해서 표준점수 를 구해보도록 하겠습니다

train_scaled = (input_array - mean) / std

여기서 주의해야 할 부분은 input_array, mean, std
모두 numpy 배열이여야 합니다.

계산하는 3개의 배열 모두 numpy 배열이 아니면 위와 같이 간편하게 계산을
할 수 없습니다.

위와 같이 python의 사칙연산으로 배열의 요소 하나하나를 모두 계산하는 기능을
numpy의 브로드캐스팅 이라고 합니다.

profile
하고싶은게 많아요

0개의 댓글