본문 바로가기

데이터마이닝

KNN(K-Nearest Neighbors) 알고리즘

728x90

KNN, K-최근접 이웃(K-Nearest Neighbors) 알고리즘은 분류(Classification)와 회귀(Regression) 문제에 사용될 수 있는 비교적 단순하지만 강력한 지도 학습(Supervised Learning) 기법입니다.

 

데이터 포인트들 사이의 거리를 측정하여, 가장 가까운 K개의 이웃 데이터들의 정보를 바탕으로 해당 데이터 포인트의 레이블(분류)이나 값(회귀)을 예측합니다.

KNN의 실행 단계들

  1. 거리 측정: 새로운 데이터 포인트와 기존 데이터 포인트들 사이의 거리를 측정합니다. 거리 측정 방식으로는 유클리드 거리(Euclidean distance), 맨해튼 거리(Manhattan distance), 민코우스키 거리(Minkowski distance) 등이 있습니다.
  2. K개의 최근접 이웃 찾기: 측정된 거리를 기준으로 가장 가까운 K개의 이웃을 찾습니다. K는 사용자가 지정하는 파라미터로, 알고리즘의 성능에 큰 영향을 미칩니다.
  3. 예측: 분류 문제의 경우, K개의 이웃 중 가장 많은 속한 클래스를 새로운 데이터 포인트의 클래스로 예측합니다. 회귀 문제의 경우, K개의 이웃의 값들의 평균을 새로운 데이터 포인트의 값으로 예측합니다.

KNN의 특징

  • 비모수적 방법: KNN은 특정 분포를 가정하지 않으므로, 다양한 데이터에 유연하게 적용될 수 있습니다.
  • 단순하고 직관적: 알고리즘이 이해하기 쉽고 구현하기 간단합니다.
  • 게으른 학습기(lazy learner): KNN은 실제 학습 과정 없이, 예측 단계에서 거리를 계산함으로써 작동합니다. 이는 훈련 데이터 세트가 큰 경우 계산 비용이 매우 높아질 수 있음을 의미합니다.
  • 차원의 저주: 차원이 높아질수록, 각 차원 내에서 의미 있는 거리 정보를 유지하기 위해 필요한 데이터 양이 기하급수적으로 증가합니다. 이는 고차원 데이터에서 KNN의 성능을 저하시킬 수 있습니다.

'데이터마이닝' 카테고리의 다른 글

Mallows의 \(C_p\)  (0) 2024.03.08
statsmodels를 활용한 선형 회귀 분석 구현  (0) 2024.03.08
statsmodels의 모형식 표현  (0) 2024.03.08
회귀분석의 수행 단계들  (0) 2024.03.08
KNN 알고리즘의 구현 with Python  (0) 2024.02.17