KNN(최근접 이웃 알고리즘, k-Nearest Neighbors)은 기계 학습에서 자주 사용되는 비모수적 분류 및 회귀 방법이다. KNN은 주어진 데이터 포인트의 k개의 최근접 이웃을 찾고, 이들 이웃의 클래스 또는 값을 기반으로 해당 데이터 포인트의 클래스를 결정하거나 예측값을 산출한다.
KNN의 기본 원리는 다음과 같다. 사용자가 입력한 데이터 포인트와 훈련 데이터 세트의 각 포인트 간의 거리(주로 유클리드 거리)를 계산하여 가장 가까운 k개의 데이터를 식별한다. 이때 k는 사용자에 의해 정해지는 하이퍼파라미터로, 데이터 분포나 문제의 성격에 따라 적절히 조정해야 한다.
분류 문제에서는 k개의 최근접 이웃 중에서 가장 많은 클래스를 가진 이웃의 클래스를 입력 데이터의 클래스로 할당한다. 반면 회귀 문제에서는 k개의 이웃의 평균값을 반환하여 입력 데이터의 예측값으로 사용한다.
KNN의 장점으로는 명시적인 학습 과정이 필요 없으며, 직관적이고 이해하기 쉬운 모델이라는 점이 있다. 그러나 단점으로는 계산 비용이 크고, 고차원 데이터에서는 '차원의 저주'로 인해 성능이 떨어질 수 있다. 또한, 데이터의 불균형 문제에 민감할 수 있으며, 이웃의 수 k를 설정하는 것이 중요하다.
KNN은 이미지 인식, 추천 시스템, 문서 분류 등 여러 분야에서 활용되며, 간단하면서도 효과적인 기법으로 인식받고 있다.