K-최근접 이웃(K-NN) – 직관적이지만 강력한 예측 알고리즘
머신러닝을 처음 접했을 때, 수식 없이도 이해할 수 있는 알고리즘이 있을까 궁금했습니다. 복잡한 계산 없이도 직관적인 방식으로 작동하는 모델이 있다면 초심자에게 큰 도움이 되리라 생각했는데, 그때 만난 알고리즘이 바로 K-최근접 이웃이었습니다. 데이터 포인트 간 거리만 계산하면 되기에 매우 단순하지만, 실제로도 다양한 문제에서 꽤 강력한 성능을 보여주었습니다. K-최근접 이웃 알고리즘의 기본 개념 K-최근접 이웃(K-Nearest Neighbors, K-NN)은 매우 직관적인 방식으로 동작하는 지도 학습 알고리즘입니다. 새로운 데이터 포인트가 주어졌을 때, 이미 알려진 학습 데이터 중에서 가장 가까운 K개의 이웃을 찾아 그들의 레이블을 기반으로 결과를 예측합니다. 분류 문제에서는 다수결 방식으로, 회귀 문제에서는 평균값으로 예측 결과를 결정합니다. 예를 들어 K가 3일 경우, 가장 가까운 세 개의 이웃 중 둘이 'A'이고 하나가 'B'라면 'A'로 분류됩니다. 이 알고리즘은 학습 단계가 거의 없고, 예측 시점에 계산이 집중되는 대표적인 사례 기반 학습(lazy learning)입니다. 데이터 간의 유사도를 측정하는 것이 핵심이며, 대부분 유클리드 거리(Euclidean Distance)를 사용하지만 맨해튼 거리, 코사인 유사도 등 다양한 거리 측정 방법도 적용 가능합니다. K 값의 선택과 거리의 중요성 K-NN에서 가장 중요한 하이퍼파라미터는 바로 K 값입니다. K를 너무 작게 설정하면 소수의 데이터에 과도하게 민감해져 과적합(overfitting)이 발생할 수 있으며, 반대로 너무 크게 설정하면 멀리 떨어진 이웃까지 고려하게 되어 일반화 성능이 떨어질 수 있습니다. 적절한 K 값을 찾기 위해서는 교차 검증 등의 방법을 활용할 수 있으며, 일반적으로 홀수 값을 사용해 동률을 피합니다. 데이터의 밀도나 분포에 따라 최적의 K 값이 달라질 수 있으므로 실험적으로 확인하는 것이 필요합니다. 또한 거...