KNN은 새로운 데이터 포인트가 들어왔을 때, 가장 가까운 K개의 이웃들의 다수결로 분류하는 알고리즘입니다. 마치 "새로운 동네로 이사왔을 때, 가장 가까운 이웃 K명의 성향을 보고 그 동네의 특성을 파악하는 것"과 같습니다.
가장 일반적으로 사용되는 유클리디안 거리를 예시로 설명하겠습니다.
두 점 A(x₁, y₁)와 B(x₂, y₂) 사이의 거리:
d = √[(x₁-x₂)² + (y₁-y₂)²]
상황: 새로운 과일이 들어왔을 때 사과인지 배인지 분류하는 문제
기존 데이터:
과일1(사과): (120g, 13brix)
과일2(사과): (130g, 12brix)
과일3(배): (180g, 11brix)
과일4(배): (170g, 10brix)
과일5(사과): (125g, 14brix)
새로운 과일 X: (140g, 11brix)가 들어왔을 때, K=3이라면:
1) 거리 계산:
2) 가장 가까운 3개 선택:
3) 다수결 판정:
가장 가까운 3개 중 사과가 3개, 배가 0개이므로 새로운 과일 X는 '사과'로 분류됩니다.
K=1일 경우: 과일2(사과)만 보고 판단 → 노이즈에 민감
K=5일 경우: 모든 데이터 사용 → 과대적합 위험
이처럼 K값은 데이터의 특성과 노이즈를 고려해 적절히 선택해야 합니다. 일반적으로 데이터 개수의 제곱근을 K값으로 사용하는 것이 좋습니다.
장점:
단점:
이 그래프에서:
그래프를 보면 새로운 데이터 포인트 X는 사과 데이터(검은 점)들과 더 가깝기 때문에 사과로 분류됨을 시각적으로 확인할 수 있습니다.
KNN 알고리즘의 핵심은 "비슷한 특성을 가진 데이터는 비슷한 범주에 속할 것이다"라는 단순하면서도 강력한 가정에 기반합니다. 마치 우리가 새로운 사람을 만났을 때, 그 사람과 가장 비슷한 성향을 가진 지인들을 떠올려 그 사람의 성향을 추측하는 것과 같은 원리입니다.