데이터 전처리(Data Preprocessing)

데이터 행렬 X에 대해서 일반적으로 아래의 3가지 전처리 방법을 사용한다.

(여기서 데이터 X는 D 차원의 데이터 벡터 N개로 이루어진 [N X D] 행렬로 가정한다)

평균 차감(Mean Subtraction)

데이터의 모든 *피쳐(feature)*에 각각에 대해서 평균값 만큼 차감하는 방법

기하학 관점에서 보자면 데이터 군집을 모든 차원에 대해서 원점으로 이동시키는 것

X -= np.mean(X, axis = 0)

정규화(Normalization)

각 차원의 데이터가 동일한 범위내의 값을 갖도록 하는 전처리 기법

모든 차원이 동일한 범위 안에 있게 해줘서 전부 동등한 기여(contribute)를 하게 함

  1. 각 데이터값을 평균만큼 차감 하고 표준편차 값으로 나눈다: X /= np.std(X, axis = 0)

    각 차원에 대해서 개별적으로 연산을 수행

  2. 또 다른 기법은 각 차원에서 최소/최대 값이 각각 -1/1의 값을 갖도록 정규화 하는 것

스케일이 다양한 경우에 많이 활용

이미지는 normalization은 하지 않음: 이미 각 차원 간의 스케일이 어느 정도 맞춰져 있음

좌: 2차원 입력 데이터 / 중: 각 차원의 평균을 빼서 데이터를 원점 중심화 / 우: 각 차원은 해당 차원의 표준 편차로 스케일링됨

좌: 2차원 입력 데이터 / 중: 각 차원의 평균을 빼서 데이터를 원점 중심화 / 우: 각 차원은 해당 차원의 표준 편차로 스케일링됨

PCA

평균차감(Mean Subtraction) 기법을 이용하여 데이터를 정규화 후 공분산(Covariance)을 계산

# Assume input data matrix X of size [N x D]
X -= np.mean(X, axis = 0) # zero-center the data (important), 평균차감 기법으로 데이터 정규화(Zero-centered)
cov = np.dot(X.T, X) / X.shape[0] # get the data covariance matrix, 공분산 행렬 계산 [N x N]

공분산 행렬