지도 학습 알고리즘

어떤 데이터가 주어지면 그 주변(이웃)의 데이터를 살펴본 뒤 더 많은 데이터가 포함되어 있는 범주로 분류하는 방식

새로운 데이터가 주어졌을 때 (빨간 점) 이를 Class A로 분류할지, Class B로 분류할지 판단하는 문제입니다. k=3일 때, 즉 안 쪽 원을 먼저 살펴보겠습니다. k가 3이라는 것은 가장 가까운 주변의 3개 데이터를 본 뒤, 3개의 주변 데이터가 더 많이 포함되어 있는 범주로 분류하겠다는 것입니다. 빨간 점 주변에 노란색 점(Class A) 1개와 보라색 점(Class B) 2개가 있습니다. 따라서 k=3 일 때는 해당 데이터가 Class B (보라색 점)으로 분류됩니다. k=6일 때를 보겠습니다. 원이 더 커졌습니다. 이제 원 안에 노란색 점 4개와 보라색 점 2개가 있습니다. 따라서 k=6일 때는 노란색 점으로 분류합니다. KNN은 K를 어떻게 정하냐에 따라 결과 값이 바뀔 수 있습니다. K가 너무 작아서도 안 되고, 너무 커서도 안 됩니다. K의 default 값은 5입니다. 가장 가까운 주변 5개 데이터를 기반으로 분류한다는 것입니다. 일반적으로 K는 홀수를 사용합니다. 짝수일 경우 동점이 되어 하나의 결과를 도출할 수 없기 때문입니다.

Lazy Model

KNN의 특징은 훈련이 따로 필요 없다는 것입니다. 다른 모델들은 clf.fit(x_train, y_train)의 코드를 통해 훈련시킵니다. 즉 훈련데이터를 기반으로 모델을 만들고 테스트 데이터로 테스트를 하는 방식입니다. 하지만 KNN은 훈련이 따로 필요 없습니다. 그냥 훈련 데이터를 저장하는 게 훈련의 전부입니다. SVM을 예로 들면, 훈련 데이터를 기반으로 Decision Boundary를 만들고, 그렇게 만든 Decision Boundary를 통해 테스트 데이터를 분류합니다. KNN은 위 그림에서 보는 것과 같이 새로운 데이터가 주어지면 그제야 주변의 k개 데이터를 보고 새로운 데이터를 분류해주지요. 따라서 사전 모델링이 필요 없는 것입니다. real-time 예측이 이루어집니다. 모델을 별도로 구축하지 않는다는 뜻으로 게으른 모델 (Lazy model)이라고 부릅니다. 그렇기 때문에 SVM이나 선형 회귀보다 빠릅니다.

거리 계산

KNN에서는 데이터와 데이터 사이의 거리를 구해야 합니다. 거리를 구하는 방식은 두 가지가 있습니다.

머신러닝 - 6. K-최근접 이웃(KNN)