Yolo 비전 선전
선전
지금 참여하기
용어집

K-최근접 이웃 (KNN)

K-최근접 이웃(KNN)을 살펴보세요. 이 지도 학습 알고리즘이 분류 및 회귀에 어떻게 적용되는지, 시각적 검색에서의 활용 방법, 그리고 Ultralytics 통합 방식을 알아보세요.

K-최근접 이웃(KNN)은 분류 및 회귀 작업 모두에 사용되는 지도 학습 분야에서 강건하고 직관적인 알고리즘입니다. 단순성으로 구별되는 KNN은 훈련 단계에서 모델을 구축하거나 매개변수를 학습하지 않기 때문에 종종 "게으른 학습자"로 분류됩니다. 대신 전체 훈련 데이터 세트를 기억해 두고 예측 요청이 있을 때만 계산을 수행합니다. 이 알고리즘의 핵심 원리는 특징 유사성에 기반합니다: 다차원 특징 공간 내에서 유사한 속성을 가진 데이터 포인트들은 서로 근접한 위치에 존재한다고 가정합니다.

알고리즘의 작동 방식

K-최근접 이웃 알고리즘의 작동 원리는 거리 계산에 기반합니다. 새로운 쿼리 점이 입력되면, 알고리즘은 저장된 데이터셋을 검색하여 새 입력점에 가장 가까운 'K'개의 훈련 샘플을 찾습니다.

  1. 거리 측정: 시스템은 쿼리 지점과 데이터베이스 내 다른 모든 지점 간의 거리를 계산합니다. 가장 일반적인 측정 기준은 점들 사이의 직선 거리를 측정하는 유클리드 거리입니다. 데이터 유형에 따라 맨해튼 거리 (택시 기하학)나 밍코프스키 거리 같은 다른 측정 기준이 사용될 수 있습니다.
  2. 이웃 선택: 거리 계산 후 알고리즘은 이를 정렬하여 상위 'K'개 가장 가까운 항목을 식별합니다.
  3. 의사 결정:
    • 분류용: 이 알고리즘은 "다수결 투표" 방식을 사용합니다. K개 이웃 중 가장 빈번하게 나타나는 클래스 레이블이 쿼리 점에 할당됩니다. 이는 기본적인 이미지 분류 작업에서 널리 사용됩니다.
    • 회귀의 경우: 예측값은 연속형 변수를 추정하기 위해 K개 최근접 이웃의 값을 평균하여 계산됩니다.

적합한 'K' 선택하기

'K'의 최적값 선택은 하이퍼파라미터 튜닝에서 핵심 단계입니다. K의 선택은 모델 성능과 새로운 데이터에 대한 일반화 능력에 상당한 영향을 미칩니다.

  • 낮은 K 값: K 값이 작을수록(예: K=1) 모델은 데이터 내 잡음과 이상치에 매우 민감해지며, 이는 과적합을 초래할 수 있습니다.
  • 높은 K 값: 큰 K 값은 결정 경계를 부드럽게 하여 잡음의 영향을 줄이지만 뚜렷한 패턴을 흐리게 할 가능성이 있어 과소적합을 초래합니다.

실제 애플리케이션

심층 신경망에 비해 단순함에도 불구하고, KNN은 특히 고급 특징 추출 기법과 결합될 때 현대 AI에서 여전히 매우 중요한 역할을 합니다.

  • 추천 시스템: KNN은 미디어 스트리밍 및 전자상거래에서 협업 필터링을 용이하게 합니다. 유사한 시청 기록이나 구매 행동을 가진 사용자(이웃)를 식별함으로써 플랫폼은 사용자의 "가장 가까운 이웃"의 선호도를 기반으로 사용자가 좋아할 가능성이 높은 제품을 추천할 수 있습니다.
  • 이상 탐지: 사이버 보안 및 금융 분야에서 KNN은 이상 탐지에 활용됩니다. 거래나 네트워크 활동은 특징 공간에 매핑되며, "정상" 활동의 밀집된 클러스터에서 멀리 떨어진 새로운 데이터 포인트는 잠재적 사기 또는 보안 침해로 표시됩니다.
  • 시각 검색: 현대적인 벡터 검색 엔진은 종종 근사적 최근접 이웃(ANN) 알고리즘—KNN의 최적화된 변형—에 의존하여 YOLO26과 같은 모델이 생성한 고차원 임베딩을 기반으로 유사한 이미지를 신속하게 검색합니다.

과제 및 고려 사항

KNN은 효과적이지만 차원의 저주에 직면합니다. 특징(차원) 수가 증가함에 따라 데이터 포인트는 희소해지고 거리 측정법은 효과성을 상실합니다. 또한 모든 훈련 데이터를 저장하기 때문에 KNN은 메모리 집약적일 수 있으며 대규모 데이터셋에서 높은 추론 지연 시간을 겪을 수 있습니다. 이를 해결하기 위해 실무자들은 주성분 분석(PCA) 과 같은 차원 축소 기법으로 데이터를 전처리하거나 KD-트리 같은 특수 데이터 구조를 활용해 검색 속도를 높입니다. 기업급 데이터셋 확장 및 모델 훈련을 위해서는 Ultralytics 활용하여 복잡한 데이터 전처리에 필요한 컴퓨팅 자원을 관리할 수 있습니다.

KNN과 K-평균법 구별하기

K-최근접 이웃(K-Nearest Neighbors)과 K-평균 군집화( K-Means clustering)를 구분하는 것이 중요합니다. 유사한 명칭으로 인해 종종 혼동이 발생하기 때문입니다.

  • KNN은 라벨링된 데이터를 사용하여 예측을 수행하는 지도 학습 알고리즘입니다.
  • K-평균법은 비지도 학습 알고리즘으로, 구조적 유사성을 기반으로 라벨이 없는 데이터를 클러스터로 그룹화하는 데 사용됩니다.

구현 예시

다음 코드 스니펫은 널리 사용되는 Scikit-learn 라이브러리를 활용한 간단한 KNN 분류 워크플로우를 보여줍니다. 컴퓨터 비전 환경에서는 입력 "특징"이 일반적으로 YOLO26과 같은 딥 러닝 모델을 통해 추출된 후 KNN 분류기로 전달됩니다.

from sklearn.neighbors import KNeighborsClassifier

# Simulated feature vectors (e.g., extracted from YOLO26) and labels
# Features: [Size, Redness], Labels: 0=Apple, 1=Orange
features = [[0.8, 0.9], [0.9, 0.8], [0.2, 0.3], [0.3, 0.2]]
labels = [0, 0, 1, 1]

# Initialize KNN with 3 neighbors
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(features, labels)

# Predict the class of a new object [Size=0.85, Redness=0.85]
prediction = knn.predict([[0.85, 0.85]])
print(f"Predicted Class: {prediction[0]} (0=Apple, 1=Orange)")

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기