SYDLAB_inha/Machine Learning

ML - Data Preprocessing / zero-centered / normalized / KNN

빈그레 2023. 9. 9. 00:27

 


Data Preprocessing

 

 

 

Image Classification

 

새로운 데이터에서 대해서도 올바른 결과가 나올 때까지 모델에 대해 튜닝과 같은 과정을 반복해야한다.

 

 

 

Data Preprocessing

 

: 전처리 과정은 모델의 성능을 향상 시키기 위해 필요하다. 전처리에 대해 예시로 알아보자.

 

- ex1

classification

위 classification 예시에서 빨간색 class인지 파란색 class인지 구분하는 과정을 거치기 전에
원점으로 옮겨주는 작업을 먼저 한다. 

위와 같이 데이터를 원점으로 가져오는 과정을 normalization이라고 한다.

 

 

-ex2


zero-centered data
: original data에서  x값들의 평균과 y값들의 평균을 각각 빼주면 data가 원점으로 이동하게 된다. 

normalized data
: zero centered이후 데이터는 x축보다 y축으로 variance가 크다. 특정한 축에 더 크게 영향을 받는 것을 방지하기 위하여 각 축의  표준편차를 구하여 각각의 값을 그 표준편차로 나누면, 

위 데이터에서는 y축 값에 대한 분산 값이 컸기 때문에 y축은 확 줄어들고 x축은 분산이 크지 않았으므로 크게 달라지지 않아, 결과적으로 x축과 y축의 균형이 잡히게 된다. 이렇게 처리된 데이터를 normalized data라 한다.

 

 

 

 


K-Nearest Neighbors

 

 

 

 

Intra-class variation VS Inter-class variation

 

 

Intra-class variation Inter-class variation
같은 클래스 내에서의 변화량 서로 다른 클래스 간의 변화

 


intra-class variation이 작음
inter-class variation이 큼
intra-class variation이 작음
inter-class variation이 작음
intra-class variation이 큼
inter-class variation이 큼
intra-class variation이 큼
inter-class variation이 작음

 

 

 

 

 

Classifier : Nearest Neighbor

 

trainning한 data를 기억하고 있다가, query data로 이미지가 들어오면 trainning data와 query data를 1:1로 모두 비교하며 거리를 구해서 가장 거리가 가까운 것의 label로 query data를 판단한다.

 

Nearest Neighbor는 학습 속도는 빠르나, test시에 어떠한 이미지가 들어와도 모든 이미지와 비교해봐야 하므로 효율성이 떨어지는 알고리즘을 갖고있다.

 

 

 

 

 

Distance Metric to compare Images (거리 구하는 방법)

 

[ L1 distance ]

 

(***Metric : 정량적으로 값을 측정하는 것을 metric이라 한다. )

test image와 training image의 크기가 같을 때, 각 위치마다의 차이를 구해 절댓값을 구하고, 이후 모든 픽셀에서의 차이값에 대한 을 구한다. 

 

 

 

[ L2 distance ]

 

L2 distance는 차이의 제곱을 다 더한 다음에 마지막에 루트를 씌운다.

 

 

 

 

K-Nearest Neighbor (KNN)

 

Nearest Neighbor는 학습 속도는 빠르나, test시에 어떠한 이미지가 들어와도 모든 이미지와 비교해봐야 하므로 효율성이 떨어진다는 단점이 있다. 

 

 

따라서 하이퍼 파라미터로 K값을 사람이 지정해주어 정해진 수 만큼만 비교하도록 한다.

만약, K가 3이라면 해당 이미지와 거리가 가장 가까운 3개의 이미지가 가진 label로 query data 의 class를 판단한다.

 

 

 

 

Data Split

 

 

갖고 있는 data set에서 train과 test로 data를 나눈 뒤 에폭(trainning하고 test)을 돌며 model를 만들면 정해진 test data에 대해서만 너무 과적합하게 model이 만들어질 수 있으므로, 해당 과정을 두 번 할 수 있도록 validation에 쓰일 data를 한 번 더 나눈다. 쉽게 말해 원래의 trainning과정에 test처럼 validation을 넣어 model을 만들고, 이를 test로 검증해볼 수 있도록 하는 것이다.