KNN알고리즘. 데이터를 이해하는 가장 직관적인 방법
이 글의 핵심
-
- KNN 알고리즘은 새로운 데이터를 예측할 때 가장 가까운 K개의 이웃 데이터를 참고하여 판단합니다.
- 거리 기반으로 작동하며, 복잡한 수학 없이도 개념을 쉽게 이해할 수 있어 초보자에게 적합합니다.
- 분류(Classification)와 회귀(Regression) 모두에 사용될 수 있지만, 주로 분류 문제에 널리 활용됩니다.
KNN 알고리즘, 어떻게 동작할까요?
KNN(K-Nearest Neighbors)은 말 그대로 ‘가장 가까운 이웃 K개를 참조한다’는 원리로 작동하는 알고리즘입니다. 예를 들어, 우리가 어떤 과일이 사과인지 배인지 판단해야 한다면, 주변에 있는 다른 과일들을 보고 결정하는 방식입니다.
이 알고리즘은 아래와 같은 방식으로 예측을 수행합니다.
-
- 새로운 데이터가 입력됩니다.
- 기존 데이터 중 이 새로운 데이터와 거리가 가장 가까운 K개의 데이터를 찾습니다.
- 그 K개의 데이터가 어떤 그룹(클래스)에 속해 있는지를 보고, 가장 많은 그룹을 선택합니다.
이처럼 ‘다수결 원리’에 따라 판단이 이루어집니다. 이해하기 꽤 직관적이죠?
어떤 ‘거리’를 기준으로 가까운 이웃을 찾을까요?
KNN 알고리즘에서 ‘가깝다’는 건 수학적으로 말하면 거리(Distance)를 뜻합니다. 가장 흔히 사용되는 거리 기준은 다음과 같습니다:
-
- 유클리드 거리(Euclidean Distance): 우리가 생각하는 일반적인 직선 거리입니다.
- 맨해튼 거리(Manhattan Distance): 격자 형태의 거리로, 바둑판처럼 움직이는 방식입니다.
- 민코프스키 거리(Minkowski Distance): 일반화된 거리 개념으로, 유클리드와 맨해튼을 모두 포함합니다.
특정 상황에 따라 적절한 거리 계산 방식을 선택하는 것이 중요합니다.
K의 값은 어떻게 정하나요?
K는 말 그대로 ‘가까운 이웃 몇 명을 참고할 것인가’를 의미합니다.
-
- 너무 작으면? 주변의 노이즈에 민감해져 잘못된 판단을 할 수 있습니다.
- 너무 크면? 너무 많은 데이터를 고려해서 결정 경계가 모호해질 수 있습니다.
보통은 홀수를 사용하여 다수결에서 동점이 발생하지 않도록 합니다.
적절한 K값은 보통 교차검증(cross-validation) 기법을 통해 찾습니다.
KNN의 장점과 단점은?
| 장점 | 단점 |
| 구현이 간단하다 | 계산량이 많다 (특히 데이터가 클 때) |
| 직관적이다 | 차원의 저주(Curse of dimensionality)에 취약 |
| 새로운 데이터 추가 시 별도 학습 필요 없음 | 모든 예측 시 전체 데이터를 참조해야 함 |
따라서 소규모 데이터나 명확한 군집이 존재하는 경우에 특히 잘 작동합니다.
예시로 쉽게 이해하기
실생활 예로 들어볼게요. 우리가 도서관에 갔는데, 책을 하나 집었어요. 이 책이 어떤 장르인지 모르겠죠?
그럼 주변에 비슷한 표지를 가진 책들을 살펴봅니다.
- 그 주변 책들이 전부 ‘추리소설’이라면,
- 아마 내가 고른 책도 ‘추리소설’일 가능성이 높겠죠?
이처럼 비슷한 특성을 가진 데이터를 기준으로 판단하는 것이 바로 KNN입니다.
마치 ‘알고리즘’이라기보다 ‘사람’같은 판단
KNN은 어떤 면에서는 사람이 판단하는 방식과 비슷합니다. ‘이 친구, 주변 사람들 보니까 다 음악 전공자네? 그럼 이 친구도 음악하는 사람일 확률이 높겠네.’라는 식의 추론이죠. 그래서 데이터 과학 초입 단계에서 많이 소개되는 이유이기도 합니다.
#KNN알고리즘 #머신러닝기초 #데이터과학 #기계학습 #KNearestNeighbors #유클리드거리 #분류알고리즘 #초보자머신러닝 #AI기초 #다수결알고리즘 #거리기반모델 #데이터분석 #머신러닝알고리즘 #ML기초 #파이썬KNN