AI 기초

KNN(최근접 이웃) 이란 무엇인가?

mm
Unite.AI를 Google의 선호 소스에 추가

K-최근접 이웃(KNN)은 질의점에 가장 가까운 라벨이 지정된 학습 예제로부터 결과를 예측합니다. 분류의 경우, 이웃들이 클래스에 대해 투표합니다. 회귀의 경우, 이들의 목표값을 평균하거나 다른 방식으로 결합합니다.

KNN은 인스턴스 기반, 비일반화 방법으로, 주로 학습 단계에서 학습 예제와 선택적인 검색 인덱스를 저장합니다. 이는 학습, 검증, 테스트 분할이 필요하지 않다는 의미는 아닙니다. 보류된 데이터에 대한 평가가 k, 거리 측정 방법, 특성 처리 및 투표 규칙을 선택하는 데 필수적입니다.

핵심 요점

  • KNN은 지역적으로 예측하며, 먼저 데이터셋을 클러스터로 나누지 않습니다.
  • 특성 스케일링은 거리가 이웃을 정의하기 때문에 매우 중요합니다.
  • 작은 k는 잡음에 민감하고, 큰 k는 지역 구조를 부드럽게 만들 수 있습니다.
  • 고차원, 관련 없는 특성, 클래스 불균형, 느린 검색 등이 성능을 제한할 수 있습니다.
K-nearest-neighbors comparison for one query point using k equals 1, k equals 5 with weighted voting, and an overly large k that crosses class boundaries
k 값을 선택하면 지역 예측에 사용되는 이웃이 달라지고, 편향-분산 트레이드오프를 제어합니다.

KNN 분류 작동 방식

  1. 질의와 학습 예제를 동일한 특성 공간에 표현합니다.
  2. 질의와 학습 예제 사이의 거리를 계산합니다.
  3. k개의 가장 가까운 예제를 선택합니다.
  4. 다수 클래스에 투표하거나 거리 가중 투표를 사용해 예측합니다.

거리 가중 투표는 가까운 이웃에게 더 큰 영향을 부여합니다. 동점이 발생하면 문서화된 규칙이 필요하고, 동일 거리의 이웃이 서로 다른 라벨을 가질 경우 구현 세부 사항이나 순서에 따라 결과가 달라질 수 있습니다.

KNN 회귀

회귀의 경우, 일반적으로 이웃 목표값의 평균을 예측값으로 사용합니다. 거리 가중은 더 먼 관측치의 영향을 감소시킬 수 있습니다. 지역 목표값에 이상치가 포함된 경우 중앙값이나 강건한 집계 방법이 유용할 수 있습니다.

거리 측정 방법

연속형 특성에는 유클리드 거리가 일반적이며, 맨해튼 거리는 절대 차이의 합을 사용하고, 코사인 거리는 크기보다 방향에 초점을 맞춥니다. 이외에도 이진, 범주형, 지리적, 시퀀스 혹은 학습된 임베딩 데이터에 적용되는 다양한 거리 측정 방법이 존재합니다.

KNN을 “비모수”라고 부르는 것은 결정 경계에 대해 고정된 유한 차원의 함수 형태를 가정하지 않는다는 의미입니다. 그러나 선택된 표현과 거리 측정이 인접한 점들을 서로 관련 있게 만든다는 전제는 여전히 존재합니다.

스케일링이 중요한 이유

한 특성의 범위가 0~1이고 다른 특성의 범위가 0~100,000이라면, 일반적인 유클리드 거리는 두 번째 특성에 의해 지배됩니다. 표준화, 정규화 혹은 도메인 특화 변환은 학습 파티션에서 학습하고 검증, 테스트, 프로덕션 데이터에 적용해야 합니다.

관련 없는 특성도 이웃을 왜곡합니다. 특성 선택, 차원 축소, 혹은 학습된 표현을 활용할 수 있지만, 각 선택은 데이터 누수 없이 검증되어야 합니다.

k 선택하기

k = 1일 경우, 모델이 잡음과 잘못 라벨된 예제에 과도하게 따를 수 있습니다. k가 커질수록 예측은 부드러워지고 한 점에 대한 민감도가 감소합니다. k가 너무 크면 먼 클래스나 영역이 지배하여 모델이 과소적합될 수 있습니다.

학습 데이터에 대한 교차 검증을 통해 k를 선택합니다. 이진 분류에서는 홀수 k가 동점을 줄이지만 완전히 없애지는 못합니다. 클래스 가중치, 층화 분할, 임계값 선택 및 적절한 평가지표는 클래스 불균형 상황에서 중요합니다.

차원의 저주

고차원 공간에서는 예제들이 희소해지고 가장 가깝고 가장 먼 거리들이 상대적으로 비슷해져 거리가 덜 유의미해집니다. 의미 있는 지역 이웃을 유지하려면 KNN은 엄청난 양의 데이터가 필요할 수 있습니다. 이것이 바로 차원의 저주입니다.

차원 축소 혹은 작업 특화 임베딩이 도움이 될 수 있지만, 임베딩의 기하학은 의도된 유사성 개념에 맞게 검증되어야 합니다.

검색 성능

완전 탐색 쿼리는 새로운 점을 저장된 모든 예제와 비교합니다. KD 트리와 볼 트리는 일부 정확한 검색을 가속하지만 고차원에서는 이점이 감소합니다. 근사 최근접 이웃 인덱스는 약간의 재현율 손실을 대가로 큰 속도와 메모리 이득을 제공합니다. 이 개념은 벡터 유사도 검색에도 적용됩니다.

강점 및 한계

KNN은 간단하고 불규칙한 결정 경계를 지원하며 직관적인 사례 기반 설명을 제공합니다. 그러나 상당한 메모리를 요구하고, 민감한 학습 예제가 노출될 위험이 있으며, 예측 속도가 느리고 거리 개념이 의미 없을 때 성능이 크게 떨어집니다. 대부분의 문제에서 기본적으로 높은 정확도를 보장하는 방법은 아니지만, 유용한 베이스라인으로 활용됩니다.

거리, 이웃 및 하이퍼파라미터 동작

K-최근접 이웃은 학습 예제를 저장하고 선택된 거리 하에서 k개의 가장 가까운 이웃을 기반으로 예측합니다. 분류는 다수결 혹은 거리 가중 투표를 사용하고, 회귀는 이웃 목표값을 평균합니다. 스케일링은 고범위 특성이 유클리드 거리를 지배하지 않도록 필수적입니다. 범주형, 희소형, 시퀀스형 혹은 지리적 데이터는 해밍, 코사인, 편집, 대원거리 혹은 학습된 거리 측정이 필요할 수 있습니다. 거리 측정은 유사성에 대한 모델링 가정이며, 실제 인근 사례의 의미와 일치하는지 검증해야 합니다.

작은 k는 유연하고 고분산 경계를 만들며 잡음에 민감합니다; 큰 k는 예측을 부드럽게 만들지만 소수 구조를 사라지게 할 수 있습니다. 홀수 k는 일부 이진 동점을 피하지만 일반 규칙은 아닙니다. 교차 검증 안에서 k, 거리, 가중치, 특성 집합 및 전처리를 선택합니다. 클래스 불균형은 지역 다수 투표가 희귀 결과를 무시하게 만들 수 있으므로 클래스별 재현율과 이웃 구성을 점검해야 합니다. 고차원 거리들은 집중되는 경향이 있고, 관련 없는 특성은 이웃을 악화시킵니다; 특성 선택, 차원 축소 혹은 학습된 임베딩이 도움이 될 수 있습니다.

인덱싱, 불확실성 및 프로덕션 운영

단순 추론은 질의를 모든 학습 점과 비교합니다. KD 트리와 볼 트리는 적절한 저차원에서 도움이 되며, 근사 최근접 이웃 인덱스는 정확성보다 속도를 우선시하고 규모를 확장합니다. 이웃 검색의 재현율을 예측 품질과 별도로 측정합니다. 메모리에는 저장된 특성, 라벨 및 인덱스 구조가 포함됩니다. 업데이트는 개념적으로 간단하지만 인덱스 재구축, 버전 일관성 및 삭제 전파가 필요할 수 있습니다. 이웃이나 거리를 반환하면 기록이 노출될 수 있으므로 민감한 학습 예제를 보호해야 합니다.

KNN은 예측을 이해하기 쉬운 사례를 제공할 수 있지만, 근접성이 인과관계나 공정성을 의미하지는 않습니다. 이웃이 희소하거나 충돌할 경우 거리, 투표 여유, 포기 규칙을 제공하십시오. 질의 거리, 이웃 라벨, 특성 드리프트, 지연 시간 및 확인된 결과를 모니터링합니다. 전처리와 인덱스 버전을 동기화하고, 변경 후 정확한 결과와 근사 결과를 테스트합니다. 거리가 의미 있을 때 KNN은 효과적인 지역 베이스라인 및 검색 방법이지만, 유사성을 사용 가능한 특성으로 표현할 수 없을 때는 어려움을 겪습니다.

실제 예시: 제품 대체를 위한 KNN

소매업체는 표준화된 수치 속성, 범주형 호환성 및 학습된 텍스트 임베딩으로 제품을 표현하고, 머천다이저가 검토한 가중 거리 함수를 정의합니다. K와 가중치는 무작위가 아닌 향후 제품 출시를 통해 선택됩니다. 평가는 관련 대체품 재현율, 비호환 추천, 거리, 카테고리 커버리지 및 희귀 아이템에 대한 결과를 확인합니다. 인기 기반 베이스라인은 지역 유사성이 가치를 추가하는지 여부를 보여줍니다.

근사 인덱스는 정확한 이웃 대비 재현율과 지연 시간을 벤치마크합니다. 가까운 호환 아이템이 없을 경우 강제 이웃 대신 제안을 반환하지 않습니다. 제품 삭제와 속성 수정은 버전된 업데이트를 통해 인덱스에 전파됩니다. 모니터링은 거리 분포, 빈 결과, 오버라이드 및 상업적 결과를 추적하며, 판매와 실제 호환성을 혼동하지 않도록 합니다. 민감한 공급업체 조건은 설명에서 제외하고, 반환된 사례는 유사성의 증거이며 제품이 동일하다는 주장은 아닙니다.

구현 증거 및 운영 준비성

프로덕션 의사결정은 성공적인 시연만으로는 충분하지 않습니다. 의도된 사용자, 운영 환경, 입력·출력, 의존성, 소유자 및 각 주요 실패에 대한 결과를 정의합니다. 튜닝 전에 재현 가능한 베이스라인과 버전 관리된 평가 세트를 구축합니다. 일반 사례, 경계 조건, 형식 오류·누락 입력, 분포 변동, 의존성 장애, 오용 및 소외될 가능성이 높은 그룹·환경을 테스트합니다. 작업 품질을 보정·불확실성, 지연 시간, 처리량, 자원 비용, 접근성, 프라이버시 및 보안과 함께 측정합니다. 모든 변환 및 임계값을 기록해 독립 검토자가 결과를 재현하고 매력적인 프로토타입과 증거를 구분할 수 있게 합니다.

출시 전에는 릴리스, 예외, 변경, 롤백 및 폐기에 대한 권한을 지정합니다. 단계적 롤아웃을 사용하고 안전한 폴백을 유지하며, 의도적으로 주입된 실패로 모니터링을 검증합니다. 운영 텔레메트리는 입력 품질, 출력 동작, 모델·규칙 버전, 의존성 상태, 인간 개입 및 확인된 결과를 보여주되 불필요한 민감 데이터를 수집하지 않아야 합니다. 알림 임계값과 대응 담당자를 정의하고, 배포 후 실제 증거를 검토하며 오프라인 성능이 지속될 것이라고 가정하지 않습니다. 데이터 소스, 사용자, 모델, 공급업체, 정책, 하드웨어 또는 목표가 변할 때마다 재평가합니다. 유지 관리되는 시스템은 문서화된 복구, 사고 학습, 삭제·보존 절차 및 비활성화·교체 시점을 명확히 해야 합니다.

자주 묻는 질문

KNN에 학습 단계가 있나요?

파라미터 피팅이 거의 없지만 개발 과정은 존재합니다: 전처리는 학습 데이터에서 학습되고, 인덱스가 구축될 수 있으며, k, 거리 측정, 가중치 및 특성은 검증을 통해 선택됩니다.

KNN과 K-평균은 같은가요?

아닙니다. KNN은 주로 감독 학습 기반 지역 예측 방법입니다. K-평균은 K가 클러스터 중심 수인 비감독 클러스터링 알고리즘입니다.

주요 참고 자료

블로거이자 프로그래머로 Machine Learning과 Deep Learning 주제에 전문가입니다. 다니엘은 다른 사람들이 AI의 힘을 사회적善으로 사용하는 것을 돕기를 희망합니다.