AI 용어집 · 기초 · 데이터·평가
KNN k-최근접 이웃, k-Nearest Neighbors
KNN(k-최근접 이웃, k-Nearest Neighbors)은 새 데이터가 들어오면 이미 알고 있는 데이터 중 가장 비슷한 k개를 찾아, 그 이웃들의 답을 보고 판단하는 방법이다. 따로 복잡한 학습 과정 없이 '비슷한 것끼리는 답도 비슷하다'는 생각에 기대는 가장 단순한 머신러닝 방법 중 하나다.
어떻게 작동하나
KNN은 학습 단계에서 데이터를 그대로 저장해 둘 뿐 별도의 모델을 만들지 않는다. 새 데이터가 들어오면 저장된 모든 데이터와의 거리(얼마나 다른지)를 계산한다. 그중 가장 가까운 k개를 고른 뒤, 분류 문제면 이웃들 사이의 다수결로, 수치 예측 문제면 이웃들 값의 평균으로 답을 정한다. 거리는 보통 데이터를 숫자 목록으로 바꾼 뒤 그 차이로 잰다.
왜 중요한가
KNN은 원리가 직관적이어서 머신러닝 입문에서 '비슷함'과 '거리'라는 개념을 익히기에 좋다. 이 '가까운 것을 찾는다'는 생각은 오늘날 임베딩 기반 검색에도 그대로 이어진다. 문서나 이미지를 임베딩으로 바꾼 뒤 질문과 가장 가까운 것을 찾는 일이 바로 최근접 이웃 찾기다. RAG나 추천 시스템의 바탕에도 같은 아이디어가 깔려 있다.
알아 둘 점
k를 너무 작게 잡으면 잡음에 휘둘리고, 너무 크게 잡으면 서로 다른 무리까지 섞여 판단이 흐려진다. 매번 모든 데이터와 거리를 계산해야 해서 데이터가 많아지면 매우 느려진다. 그래서 대규모 검색에서는 정확도를 조금 양보하고 속도를 크게 높인 ANN 검색을 쓴다. 또 숫자 단위가 제각각이면 거리가 왜곡되므로, 값의 범위를 맞추는 전처리가 중요하다.
예시
쇼핑몰의 단순한 추천 기능을 생각해 볼 수 있다. 어떤 고객의 구매 기록을 숫자로 나타낸 뒤, 기록이 가장 비슷한 고객 k명을 찾아 그들이 많이 산 상품을 추천한다. 벡터 DB에서 '질문과 가장 비슷한 문서 k개 찾기'를 할 때 쓰는 top-k 검색도 같은 KNN 개념에서 나온 표현이다.