수학 개념 지도
데이터와 학습(Data and learning)

최근접 이웃 분류(K-nearest neighbors classification)

새 점과 가장 가까운 k개의 예를 찾아 다수결로 이름표를 정하는 분류 방법. 예를 모두 기억해 둘 뿐 따로 학습하지 않고, 무엇을 '가깝다'고 할지는 거리 함수⁠(metric)⁠가 정한다.

y^(x⃗)=majority⁡{ yi:x⃗i∈Nk(x⃗) }\hat y(\vec x) = \operatorname{majority}\{\, y_i : \vec x_i \in N_k(\vec x) \,\}
먼저 보면 좋은 개념벡터거리 함수

파랑과 노랑 두 종류의 점 100개가 있습니다. 두 품종의 꽃을 두 가지 치수로 잰 것이라고 생각해도 좋습니다. 이름표가 없는 새 점 Q를 끌어 보세요. Q와 가장 가까운 k = 개의 이웃 가운데 노랑이 , 파랑이 이라서 Q는 으로 분류됩니다. 거리는 잽니다. 다시 뽑기

큰 점이 이름표가 있는 예, 흰검은 선이 Q의 이웃, 점선이 이웃을 모두 담는 가장 작은 '공'입니다. 배경의 작은 점은 그 자리에 Q를 놓았을 때의 답입니다.

이것이 k-최근접 이웃 분류의 전부이고, 예로부터 규칙을 찾는 기계 학습⁠(machine learning)⁠의 가장 단순한 방법입니다. 규칙을 따로 배우지 않고 예를 모두 기억해 두었다가, 물어볼 때마다 가까운 예들에게 투표를 시킵니다. 배경의 작은 점들은 평면 전체의 답, 곧 결정 영역입니다. k = 1이면 경계가 들쭉날쭉하고, 반대편 무리 안에 섞인 점 하나하나가 제 둘레에 작은 섬을 만듭니다. 이때 경계는 예들이 만드는 보로노이 다이어그램⁠(Voronoi diagram)⁠의 칸 경계를 이어 붙인 것입니다.

섬이 많다고 좋은 것이 아닙니다. 예로 쓴 점은 자기 자신이 가장 가까운 이웃이므로 k = 1이면 예로 쓴 점을 모두 맞힙니다(훈련 정확도 100%). 그러나 같은 분포에서 새로 뽑은 (그림에는 없는) 시험용 점 600개로 재면 훨씬 못합니다. 예에 섞인 우연까지 외워 버린 것, 곧 과적합⁠(overfitting)⁠입니다. 지금 k에서 훈련 정확도는 , 시험 정확도는 입니다. k를 키우면 경계가 매끈해지고 시험 정확도가 대개 오르지만, 너무 키우면 먼 점까지 투표해서 무리의 모양을 놓치고 다시 떨어집니다. 네 무리가 엇갈려 놓인 이 자료에서는 k가 아주 크면 이웃한 다른 색 무리들의 표가 이겨서 동전 던지기보다도 나빠집니다. k가 작으면 표본⁠(sample)⁠이 바뀔 때마다 경계가 크게 흔들리고(분산⁠, variance⁠), 크면 무리의 모양을 한쪽으로 뭉개는(편향) 이 모습이 편향–분산 분해⁠(bias–variance decomposition)⁠의 전형적인 예이고, 실제로는 k를 교차 검증⁠(cross-validation)⁠으로 고릅니다.

k에 따른 정확도. 회색은 예로 쓴 점 100개, 청록은 시험용 점 600개로 잰 값입니다.

무엇을 '가깝다'고 할지가 답을 바꿉니다. 맨해튼 거리⁠(Manhattan distance)⁠로 바꾸면 이웃을 담는 공이 마름모가 되고 경계도 달라집니다(Lp 노름⁠, Lp norm⁠). 두 좌표의 단위가 다르면(키는 cm, 몸무게는 kg) 수가 큰 쪽이 거리를 혼자 정하므로, 보통은 좌표마다 평균⁠(mean)⁠을 빼고 표준편차⁠(standard deviation)⁠로 나누어 눈금을 맞추거나(표준화⁠, standardization⁠) 마할라노비스 거리⁠(Mahalanobis distance)⁠를 씁니다. 문서라면 코사인 유사도⁠(cosine similarity)⁠, 철자라면 편집 거리⁠(edit distance)⁠, 0과 1의 문자열이라면 해밍 거리⁠(Hamming distance)⁠로 이웃을 찾습니다. 방법은 그대로 두고 거리만 갈아 끼우면 됩니다.

확률⁠(probability)⁠로 보면 k개 이웃 가운데 노랑의 비율은 'Q 근처에서 노랑일 조건부 확률⁠(conditional probability)⁠'의 추정값입니다. 예가 많아질수록 k도 함께 키우되 예의 수에 비해서는 작게 두면, 큰 수의 법칙⁠(law of large numbers)⁠에 따라 이 추정이 참값에 다가갑니다. 그러면 분류 실력이 이론상 가장 좋은 분류기만큼 좋아집니다. 가장 좋은 분류기란 각 점에서 노랑일 참 확률을 안다고 치고 더 확률이 높은 쪽을 고르는 분류기로, 그 확률을 베이즈 정리⁠(Bayes' theorem)⁠로 계산하므로 베이즈 분류기라 부릅니다. 그보다 오류가 적은 분류기는 있을 수 없습니다. k = 1이라도 예가 한없이 많으면 오류율이 베이즈 분류기⁠(Bayes classifier)⁠의 두 배를 넘지 않는다는 것이 1967년 미국의 정보 이론가 토머스 커버와 피터 하트의 결과입니다. 방법 자체는 1951년 미국 공군 항공의학교의 보고서에서 통계학자 에벌린 픽스와 조지프 호지스가 처음 제안한 것으로 꼽힙니다.

이어지는 곳. 차원이 높아지면 거의 모든 점⁠(almost everywhere)⁠이 비슷하게 멀어져 '가장 가까운 이웃'이 뜻을 잃습니다(차원의 저주⁠(curse of dimensionality)⁠). 이름이 비슷한 k-평균 군집⁠(k-means clustering)⁠은 이름표 없이 무리를 찾는 전혀 다른 방법입니다. 지금까지 찾은 가장 가까운 k개를 힙⁠(heap)⁠에 담아 두면, 더 가까운 점이 나올 때마다 그중 가장 먼 것을 빠르게 밀어낼 수 있습니다. 예가 수백만 개면 모든 거리를 재는 대신, 공간을 미리 반씩 거듭 나눠 둔 나무 구조(k-d 트리⁠(k-d tree)⁠ 등)에서 먼 칸을 통째로 건너뛰거나, 조금 틀려도 되는 대신 훨씬 빠른 근사 검색으로 이웃을 찾습니다. 언어 모델⁠(language model)⁠에 질문과 가까운 문서를 찾아 넣어 주는 검색 증강 생성⁠(retrieval-augmented generation)⁠은 수백만 개의 문서 벡터⁠(vector)⁠에서 바로 이런 근사 최근접 이웃⁠(approximate nearest neighbor)⁠ 검색을 합니다. '이 상품을 산 사람과 비슷한 사람들이 산 것'을 보여 주는 추천도 이웃 찾기입니다.

이 개념이 나오는 큰 생각쌍대성

이 개념이 나오는 긴 글

거리와 유사도 까마귀와 택시 까마귀는 곧장 날고 택시는 블록을 돌아간다. '얼마나 먼가'에는 답이 하나가 아니고, 어떤 거리를 고르느냐가 통계와 기계 학습의 답을 바꾼다. 알고리즘과 복잡도 줄 세우기의 한계 카드 천 장을 가장 빨리 줄 세우는 방법은? 인구조사의 천공 카드에서 퀵정렬까지, 그리고 어떤 방법도 넘을 수 없는 n log n의 벽. 신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념