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로 검증해볼 수 있도록 하는 것이다.