머신러닝 마스터하기: KNN 알고리즘 작동 원리와 최적의 K값 선정하는 방법 가이드

썸네일

데이터 과학과 인공지능의 시대가 도래하면서, 머신러닝(Machine Learning)은 더 이상 전문가들만의 전유물이 아닙니다. 수많은 알고리즘 중에서 입문자가 가장 먼저 접하게 되면서도, 그 직관적인 원리 덕분에 실무에서도 강력한 도구로 활용되는 모델이 있습니다. 바로 KNN(K-Nearest Neighbors, K-최근접 이웃) 알고리즘입니다. '유유상종'이라는 옛말처럼 비슷한 특성을 가진 데이터끼리 모여 있다는 가정에서 출발하는 이 모델은 단순함 속에 강력한 성능을 숨기고 있습니다.

하지만 단순히 라이브러리를 호출하여 사용하는 것만으로는 KNN의 진정한 성능을 끌어낼 수 없습니다. 데이터의 특성에 맞는 거리 측정 방식과 모델의 성능을 좌우하는 핵심 하이퍼파라미터인 'K'값을 어떻게 설정하느냐가 관건이기 때문입니다. 이번 포스팅에서는 머신러닝의 기초이자 핵심인 KNN 알고리즘 작동 원리와 최적의 K값 선정하는 방법 가이드를 심도 있게 다루어 보겠습니다. 기초 개념부터 실전 튜닝 전략까지, 여러분의 데이터 분석 역량을 한 단계 높여줄 내용을 확인해 보세요.


KNN 알고리즘이란 무엇인가? : 게으른 학습의 미학

KNN 알고리즘은 지도 학습(Supervised Learning) 의 대표적인 알고리즘 중 하나로, 레이블(정답)이 있는 데이터를 기반으로 새로운 데이터의 클래스를 분류하거나 값을 예측하는 데 사용됩니다. KNN의 가장 독특한 특징은 '게으른 학습(Lazy Learning)' 방식을 취한다는 점입니다.

일반적인 머신러닝 알고리즘(예: 선형 회귀, 의사결정 나무 등)은 훈련 데이터를 통해 수학적 모델을 미리 학습시키고, 이 모델을 통해 예측을 수행합니다. 이를 'Eager Learning'이라고 합니다. 반면, KNN은 별도의 학습 과정을 거치지 않습니다. 훈련 데이터를 그저 메모리에 저장하고 있다가, 실제 예측 요청이 들어왔을 때 비로소 연산을 시작합니다. 이러한 특성 덕분에 KNN은 사례 기반 학습(Instance-based Learning) 이라고도 불리며, 데이터의 분포를 특정 함수로 가정하지 않는 비모수적(Non-parametric) 방법론에 속합니다. 이는 데이터가 불규칙하거나 사전 지식이 부족한 상황에서도 유연하게 대처할 수 있다는 큰 장점을 제공합니다.


KNN 알고리즘 작동 원리 상세 분석

KNN의 작동 메커니즘은 매우 직관적이고 명쾌합니다. 복잡한 수식 없이도 이해할 수 있는 이 과정은 크게 4단계로 나뉩니다.

  1. 데이터 포인트 입력 (Query): 우리가 예측하고자 하는 새로운 데이터(Query Point)가 입력됩니다.
  2. 거리 계산 (Distance Calculation): 입력된 새로운 데이터와 기존에 저장된 모든 훈련 데이터 사이의 거리를 각각 계산합니다. 이 과정이 KNN의 연산 비용을 결정하는 핵심입니다.
  3. 이웃 선택 (Neighbor Selection): 계산된 거리를 기준으로 가장 가까운 K개의 이웃을 선택합니다. 여기서 K는 사용자가 지정하는 숫자입니다.
  4. 결과 도출 (Voting or Averaging):
    • 분류(Classification) 문제라면, 선택된 K개의 이웃 중 가장 많이 등장한 클래스로 새로운 데이터를 분류합니다. 이를 다수결 원칙(Majority Vote) 이라고 합니다.
    • 회귀(Regression) 문제라면, 선택된 K개의 이웃들이 가진 타겟 값(수치)의 평균을 구하여 예측값으로 반환합니다.

이처럼 KNN은 '어떤 기준으로 거리를 잴 것인가''몇 명의 이웃(K)을 참고할 것인가' 라는 두 가지 핵심 질문에 대한 답을 찾는 과정이라고 볼 수 있습니다.

거리 측정 방식 (Distance Metrics): 유사도의 척도

데이터 간의 '가깝다'는 것을 수학적으로 어떻게 정의하느냐에 따라 모델의 성능은 달라집니다. 문제의 유형과 데이터의 특성에 따라 적절한 거리 측정 방식을 선택해야 합니다.

  • 유클리드 거리 (Euclidean Distance): 가장 보편적으로 사용되는 거리 척도입니다. 2차원 평면에서 두 점 사이의 직선거리를 구하는 피타고라스 정리를 N차원으로 확장한 개념입니다. 데이터가 연속적인 수치형 변수일 때 가장 무난하게 사용됩니다.
  • 맨해튼 거리 (Manhattan Distance): 도시의 바둑판식 도로를 따라 이동하는 거리를 상상하면 됩니다. 대각선 이동이 불가능하고 축을 따라서만 이동할 때의 거리 합입니다. 고차원 데이터에서 유클리드 거리보다 더 강건한(Robust) 성능을 보이기도 합니다.
  • 민코프스키 거리 (Minkowski Distance): 유클리드 거리와 맨해튼 거리를 아우르는 일반화된 공식입니다. 수식의 차수($p$)를 조절하여 거리를 정의할 수 있습니다.

핵심 과제: 최적의 K값 선정하는 방법 가이드

KNN 알고리즘을 사용할 때 사용자가 직면하는 가장 큰 난제는 바로 "K를 몇으로 설정해야 하는가?" 입니다. K는 모델이 스스로 학습하지 못하는 하이퍼파라미터(Hyperparameter) 이므로, 분석가가 직접 최적의 값을 찾아 설정해야 합니다. 이 과정이 바로 KNN 알고리즘 작동 원리와 최적의 K값 선정하는 방법 가이드의 핵심입니다.

K값의 크기에 따른 트레이드오프 (Bias-Variance Trade-off)

K값의 선택은 모델의 복잡도를 결정하며, 이는 과소적합(Underfitting)과대적합(Overfitting) 사이의 줄타기와 같습니다.

  • K값이 너무 작을 때 (예: K=1):

    • 가장 가까운 단 하나의 데이터만 참조하므로, 모델이 훈련 데이터의 아주 미세한 패턴이나 노이즈(Noise), 이상치(Outlier)까지 모두 학습해버립니다.
    • 결정 경계(Decision Boundary)가 매우 복잡하고 구불구불해집니다.
    • 이 상태를 과대적합(Overfitting) 이라고 하며, 훈련 데이터에는 완벽하지만 새로운 데이터에 대한 예측력은 떨어집니다. (High Variance, Low Bias)
  • K값이 너무 클 때 (예: K=100):

    • 너무 많은 이웃을 참조하게 되어, 데이터의 지역적인 특성이 무시되고 전체적인 평균에 가까워집니다.
    • 결정 경계가 지나치게 단순해지고 평활화(Smoothing)됩니다.
    • 이 상태를 과소적합(Underfitting) 이라고 하며, 데이터의 패턴을 제대로 잡아내지 못합니다. 분류 문제에서는 단순히 데이터셋에서 가장 많은 클래스로 무조건 예측해버리는 경향이 생깁니다. (Low Variance, High Bias)

최적의 K를 찾는 구체적인 전략 3가지

성공적인 모델링을 위해 K값을 선정하는 체계적인 방법들을 소개합니다.

1. 경험적 법칙 (Rule of Thumb) 가장 간단하고 기초적인 방법은 전체 데이터 수($N$)의 제곱근($\sqrt{N}$)을 K로 설정하는 것입니다. 예를 들어 데이터가 100개라면 K를 10으로 시작해보는 것입니다. 또한, 분류 문제에서 동점(Tie)이 발생하는 것을 방지하기 위해 K는 항상 홀수(Odd number) 로 설정하는 것이 관례입니다. 하지만 이는 어디까지나 시작점일 뿐, 최적의 값이라는 보장은 없습니다.

2. 교차 검증 (Cross-Validation) 활용 가장 신뢰할 수 있고 실무에서 필수적으로 사용되는 방법입니다. 훈련 데이터를 다시 '훈련 세트'와 '검증 세트'로 나누어 다양한 K값에 대해 성능을 테스트하는 것입니다. * 데이터를 K-Fold(예: 5-Fold, 10-Fold) 방식으로 나눕니다. * K값을 1부터 30, 50 등 특정 범위 내에서 변화시킵니다. * 각 K값에 대해 모델의 정확도(Accuracy) 혹은 오차율(Error Rate) 을 계산하여 기록합니다. * 검증 오차가 가장 낮게 나오는 K값을 최종 모델의 파라미터로 선택합니다.

3. 엘보우 기법 (Elbow Method) 교차 검증을 통해 얻은 K값에 따른 오차율을 그래프로 그려보면, K가 증가함에 따라 오차율이 급격히 감소하다가 어느 시점부터 감소 폭이 줄어들고 평평해지는 지점이 나타납니다. 그래프의 모양이 마치 팔꿈치처럼 꺾이는 이 지점(Elbow Point)이 모델의 복잡도와 성능 사이에서 최적의 균형을 이루는 지점일 가능성이 높습니다.


필수 전처리: 데이터 스케일링 (Data Scaling)의 중요성

KNN을 사용할 때 절대 간과해서는 안 되는 것이 바로 데이터 스케일링(Scaling) 입니다. KNN은 거리 기반 알고리즘이기 때문에, 특성(Feature) 간의 단위(Scale) 차이에 매우 민감합니다.

예를 들어, '키(cm, 160~190)'와 '연봉(원, 30,000,000~100,000,000)'이라는 두 가지 특성으로 사람을 분류한다고 가정해 봅시다. 연봉의 숫자 단위가 키보다 훨씬 크기 때문에, 유클리드 거리를 계산할 때 연봉의 차이가 전체 거리를 지배하게 됩니다. 즉, 키의 차이는 결과에 거의 영향을 미치지 못하게 되는 왜곡이 발생합니다.

따라서 KNN 적용 전에는 반드시 다음과 같은 스케일링 과정을 거쳐야 합니다.

  • 최소-최대 정규화 (Min-Max Normalization): 모든 데이터를 0과 1 사이의 값으로 변환합니다. 데이터의 분포가 정해진 범위 내에 있을 때 유용하지만, 이상치에 민감할 수 있습니다.
  • 표준화 (Standardization): 데이터의 평균을 0, 표준편차를 1로 맞추어 정규분포(Z-score) 형태로 변환합니다. KNN에서는 이상치의 영향을 덜 받는 표준화 방식이 일반적으로 더 권장됩니다.

KNN 알고리즘의 장단점 총정리

마지막으로 KNN 모델의 특성을 장단점으로 요약해 보겠습니다.

장점: * 직관적이고 이해하기 쉽다: 알고리즘의 원리가 단순하여 설명력이 높습니다. * 학습 비용이 '0'이다: 별도의 훈련 과정이 없어 데이터가 추가되어도 모델을 다시 학습할 필요가 없습니다. (실시간 데이터 반영 유리) * 데이터 분포에 대한 가정이 없다: 데이터가 비선형적이거나 복잡한 분포를 가져도 잘 작동합니다.

단점: * 느린 예측 속도: 예측 시마다 모든 데이터와의 거리를 계산해야 하므로, 데이터 양이 많아지면 속도가 현저히 느려집니다. * 메모리 과부하: 모든 훈련 데이터를 메모리에 들고 있어야 하므로 저장 공간을 많이 차지합니다. * 차원의 저주 (Curse of Dimensionality): 데이터의 차원(특성 개수)이 늘어날수록 공간이 희소해져서, '가깝다'는 거리의 개념이 무의미해지고 성능이 급격히 저하됩니다.


결론

KNN은 머신러닝의 가장 기초적이면서도 데이터 본연의 정보를 가장 잘 활용하는 강력한 알고리즘입니다. 오늘 살펴본 KNN 알고리즘 작동 원리와 최적의 K값 선정하는 방법 가이드를 통해, 단순히 모델을 돌리는 것을 넘어 데이터의 스케일을 맞추고 교차 검증을 통해 최적의 K를 찾아가는 과정의 중요성을 이해하셨으리라 생각합니다.

데이터의 특성을 정확히 파악하고 적절한 전처리와 하이퍼파라미터 튜닝이 동반된다면, KNN은 복잡한 딥러닝 모델 못지않은 훌륭한 성능을 발휘할 수 있습니다. 여러분의 데이터 분석 프로젝트에서 KNN이 제공하는 직관적인 통찰력을 십분 활용해 보시길 바랍니다.

신고하기