KNN이란 무엇인가 – 가장 가까운 이웃을 찾는 알고리즘

이세준·2025년 8월 4일
0

KNN이란 무엇인가 – 가장 가까운 이웃을 찾는 알고리즘

KNN(K-Nearest Neighbors, K-최근접 이웃)은 기계 학습과 정보 검색, 벡터 DB 등 다양한 분야에서 자주 사용되는 가장 직관적인 분류 및 검색 알고리즘 중 하나입니다. 이름 그대로 "K개의 가장 가까운 이웃"을 찾아내는 것이 핵심입니다.


1. KNN의 기본 개념

KNN은 다음과 같은 아이디어에 기반합니다:

  • 어떤 데이터가 주어졌을 때,
  • 그 주변에서 **가장 가까운 K개의 이웃(데이터)**을 찾아,
  • 이 이웃들이 가지고 있는 속성 또는 패턴을 보고,
  • 그 데이터가 어떤 그룹에 속할지 예측하거나,
  • 유사한 데이터를 찾아낸다.

이때의 핵심은 "가깝다"는 것이 무엇인가를 정의하는 거리 측정 방식입니다.


2. 거리 측정: 유사성을 정의하는 방법

KNN에서 두 데이터 간의 거리를 측정하는 방식은 문제의 성격에 따라 달라질 수 있습니다. 대표적인 거리(또는 유사도) 측정 방식은 다음과 같습니다:

거리 또는 유사도 방식설명
유클리드 거리가장 기본적인 거리로, 두 점 사이의 직선 거리
코사인 유사도두 벡터가 이루는 각도를 기준으로 유사도 계산 (특히 고차원에서 유용)
내적(dot product)두 벡터의 방향성과 크기를 함께 고려
망할망정 거리(Manhattan distance)축을 따라 이동한 거리의 합 (택시 거리라고도 불림)

벡터 DB에서는 보통 코사인 유사도유클리드 거리가 많이 사용됩니다. 사용자의 검색 쿼리를 벡터로 변환하고, 전체 데이터 중에서 이 쿼리 벡터와 가장 가까운 벡터를 찾아내는 데 활용됩니다.


3. KNN의 사용 예시

  • 벡터 데이터베이스 검색
    예를 들어 문장을 임베딩하여 벡터로 바꾸고, 유사한 문장을 찾고 싶다면? → 쿼리 벡터와 가장 가까운 벡터를 찾아주는 KNN을 사용합니다.

  • 추천 시스템
    사용자와 유사한 취향을 가진 K명의 다른 사용자를 찾아 그들이 좋아한 아이템을 추천합니다.

  • 이미지 검색
    쿼리 이미지와 임베딩 공간에서 가까운 이미지들을 K개 골라냅니다.

  • 지도 학습 (분류)
    어떤 입력 데이터를 주고, 주변의 K개 라벨을 확인한 후, 다수결로 라벨을 결정합니다.


4. KNN의 특징

장점단점
구현이 매우 단순하다데이터가 많을수록 검색 속도가 느려질 수 있다
훈련 과정이 없다 (Lazy Learning)고차원에서는 성능이 떨어질 수 있다 (차원의 저주)
다양한 유사도 함수를 적용할 수 있다메모리를 많이 차지한다

이러한 단점 때문에 벡터 DB에서는 일반적인 KNN이 아니라, 더 빠른 근사 KNN(Approximate KNN, aKNN) 알고리즘들이 사용됩니다. 예: HNSW, IVF, PQ 등


5. 마무리: KNN의 본질은 '가장 가까운 것들을 찾는 것'

KNN은 매우 단순하지만, 그만큼 강력한 직관을 제공합니다. 벡터 DB가 하는 일도 결국은 같은 원리입니다. 사용자의 검색이나 질문을 벡터로 바꾸고, 이 벡터와 가장 가까운 벡터들을 찾아내는 작업. 그것이 바로 KNN의 응용입니다.

profile
기술정리

0개의 댓글