728x90
KNN, K-최근접 이웃(K-Nearest Neighbors) 알고리즘은 분류(Classification)와 회귀(Regression) 문제에 사용될 수 있는 비교적 단순하지만 강력한 지도 학습(Supervised Learning) 기법입니다.
데이터 포인트들 사이의 거리를 측정하여, 가장 가까운 K개의 이웃 데이터들의 정보를 바탕으로 해당 데이터 포인트의 레이블(분류)이나 값(회귀)을 예측합니다.
KNN의 실행 단계들
- 거리 측정: 새로운 데이터 포인트와 기존 데이터 포인트들 사이의 거리를 측정합니다. 거리 측정 방식으로는 유클리드 거리(Euclidean distance), 맨해튼 거리(Manhattan distance), 민코우스키 거리(Minkowski distance) 등이 있습니다.
- K개의 최근접 이웃 찾기: 측정된 거리를 기준으로 가장 가까운 K개의 이웃을 찾습니다. K는 사용자가 지정하는 파라미터로, 알고리즘의 성능에 큰 영향을 미칩니다.
- 예측: 분류 문제의 경우, 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 |