가장 가까운 이웃(KNN)은 분류와 회귀 작업에 모두 사용되는 머신 러닝(ML) 의 기본 알고리즘입니다. 단순하고 직관적인 접근 방식이 특징입니다. KNN은 기본 데이터 분포에 대한 가정을 하지 않기 때문에 비모수적 방법으로 분류됩니다. 훈련 데이터 단계에서 일반 모델을 구축하지 않고 전체 데이터 세트를 저장한 후 예측이 필요할 때만 계산을 수행하기 때문에 '지연 학습' 알고리즘이라고도 합니다.
KNN 작동 방식
KNN의 핵심 아이디어는 유클리드 거리와 같은 거리 메트릭을 사용하여 정의되는 유사성을 기반으로 합니다. 보이지 않는 새로운 데이터 포인트를 예측할 때, 알고리즘은 저장된 학습 데이터 세트에서 가장 가까운 데이터 포인트(이웃)를 'K' 개 식별합니다. 'K' 값은 사용자가 정의한 정수로, 고려되는 이웃의 수를 나타냅니다.
- 분류의 경우: 새 데이터 포인트는 가장 가까운 이웃 K 개 중 가장 일반적인 클래스에 할당됩니다. K=3이고 두 개의 이웃이 클래스 A에 속하고 한 개가 클래스 B에 속하는 경우 새 포인트는 클래스 A로 분류됩니다.
- 회귀의 경우: 새 데이터 요소에 대한 예측은 일반적으로 가장 가까운 이웃 K 개 값의 평균(또는 때로는 중앙값)입니다.
거리 메트릭의 선택과 'K'의 값은 모델의 성능에 큰 영향을 미치는 중요한 하이퍼파라미터입니다.
'K'의 값 선택하기
최적의 'K'를 선택하는 것이 중요합니다. 'K' 값이 작으면 모델이 노이즈와 이상값에 민감해져 과적합이 발생할 가능성이 있습니다. 반대로 'K' 값이 크면 의사 결정 경계가 지나치게 평활화되어 잠재적으로 과소 적합 및 높은 계산 비용이 발생할 수 있습니다. 교차 검증과 같은 기법을 사용하여 편향-편차 트레이드 오프의 균형을 맞추는 적절한 'K'를 찾는 경우가 많습니다.
KNN의 애플리케이션
KNN의 단순성은 특히 해석 가능성을 중시하는 다양한 애플리케이션에 적합합니다:
- 추천 시스템: KNN은 '가장 가까운' 이웃(비슷한 취향을 가진 사용자)의 선호도를 기반으로 사용자에게 영화나 제품 등의 아이템을 추천할 수 있습니다. 넷플릭스와 같은 서비스에서도 유사한 인스턴스 기반 방법을 모색하고 있습니다.
- 이미지 인식: 기본적인 이미지 분류 작업에서 KNN은 훈련 세트에서 가장 유사한 이미지의 클래스를 기반으로 이미지를 분류할 수 있습니다(예: 픽셀 유사성을 기반으로 손으로 쓴 숫자를 식별). MNIST와 같은 간단한 데이터 세트에는 효과적이지만, 더 복잡한 작업에는 종종 정교한 모델이 필요합니다.
- 이상 징후 탐지: KNN은 이웃 클러스터에서 멀리 떨어진 데이터 포인트를 식별함으로써 이상값이나 이상 징후를 탐지하는 데 사용할 수 있으며, 사기 탐지나 제조 과정에서 불량품 식별과 같은 영역에서 유용합니다. 이상 징후 탐지 방법에 대해 자세히 알아보세요.
- 유전자 발현 분석: 생물정보학에서 KNN은 유전자 발현 패턴을 기반으로 샘플을 분류하여 유사한 유전자 프로필을 함께 그룹화하는 데 도움을 줍니다. 의료 분야에서의 AI에 대해 자세히 알아보세요.
KNN의 장점과 단점
KNN은 여러 가지 이점을 제공하지만 제한 사항도 있습니다:
장점:
- 단순함과 직관: 이해와 구현이 쉽습니다.
- 학습 단계가 없습니다: 데이터 세트를 저장하여 즉시 학습하므로 새로운 데이터에 적응할 수 있습니다.
- 유연성: 다중 클래스 분류를 자연스럽게 처리하고 회귀에 맞게 조정할 수 있습니다.
단점:
- 계산 비용: 예측은 모든 학습 지점까지의 거리를 계산해야 하므로 특히 대규모 데이터 세트의 경우 속도가 느리고 계산 비용이 많이 들 수 있습니다.
- 관련 없는 특징에 대한 민감도: 차원이 높은 데이터(차원의 저주)나 관련 없는 특징이 있는 경우 성능이 크게 저하됩니다. 차원 축소와 같은 기술이 필요할 수 있습니다.
- 피처 스케일링의 필요성: 데이터 규모에 민감하며, 범위가 큰 피처가 거리 계산을 지배할 수 있으므로 정규화가 필요합니다.
- 최적의 'K' 결정하기: 'K'에 대한 최적의 값을 찾으려면 신중한 하이퍼파라미터 튜닝이 필요합니다.
KNN과 관련 개념
KNN을 다른 알고리즘과 구별하는 것이 중요합니다:
- K-평균 클러스터링: 둘 다 'K'와 거리 측정값을 사용하지만, K-Means는 유사성을 기반으로 데이터를 그룹으로 묶는 비지도 학습 알고리즘입니다. KNN은 레이블이 지정된 이웃을 기반으로 분류 또는 회귀를 위한 지도 학습 알고리즘입니다.
- 서포트 벡터 머신(SVM): SVM은 클래스를 구분하기 위한 최적의 하이퍼플레인을 찾는 지도 알고리즘입니다. KNN의 인스턴스 기반 접근 방식과 달리 SVM은 명시적 모델을 구축하며, 고차원 데이터에서 더 나은 성능을 발휘하는 경우가 많습니다.
- 의사 결정 트리: 의사 결정 트리는 특징 분할을 기반으로 모델을 구축하여 분류 또는 회귀에 대한 명확한 규칙을 제공합니다. KNN은 명시적인 규칙이 아닌 로컬 유사성에 의존합니다.
KNN은 특정 작업과 기본적인 ML 개념을 이해하는 데 유용하지만, 실시간 객체 감지와 같은 복잡한 문제에는 다음과 같은 고급 모델의 이점이 더 큰 경우가 많습니다. Ultralytics YOLO와 같은 고급 모델이 특히 대규모 컴퓨터 비전 데이터 세트에서 뛰어난 속도와 정확도를 제공합니다. 이러한 모델을 훈련하고 배포하려면 Ultralytics HUB와 같은 플랫폼을 사용할 수 있습니다.