===== **k-최근접 이웃 (k-Nearest Neighbors, KNN)** ===== > 지도학습 알고리즘 ==== 개념 ==== 좌표계 위에 데이터들을 뿌리고, 새로운 데이터가 들어왔을 때 그 주변에 있는 **k개**의 데이터들이 무엇인지에 따라 새로운 데이터의 정체를 파악(분류)하는 방법. ====장단점==== ^ 장점 (Pros) ^ 단점 (Cons) ^ | 모델이 매우 단순하고 직관적이라 이해하기 쉽다. | 데이터가 많아질수록 예측 속도가 매우 느려짐. (모든 데이터와의 거리 계산 필요) | | 별도의 **훈련(Training) 과정이 없어** 빠름. (데이터를 저장하는 것이 전부) | 예측에 모든 데이터를 사용하므로 **메모리 사용량이 많다.** | | 데이터 분포에 대한 가정을 하지 않아 유연. (비모수 모델) | 데이터의 **단위(Scale)에 큰 영향**을 받으므로, 데이터 전처리(Scaling)가 필수적. | | 분류와 회귀 문제에 모두 쉽게 적용 가능. | 최적의 **이웃 수(k)**를 찾는 것이 중요하며, k값에 따라 결과가 달라짐. | ==== KNN 동작 방식 (이미지 예시) ==== {{https://upload.wikimedia.org/wikipedia/commons/e/e7/KnnClassification.svg?width=300|KNN 동작 방식 예시}} ^ KNN 분류 예시. 초록색 점은 k=3일 때 빨간 삼각형으로, k=5일 때 파란 사각형으로 분류된다. - 데이터 점 찍기: 기존의 데이터들을 정답(레이블)과 함께 좌표 공간에 모두 점으로 찍음. (위 그림의 빨간 삼각형, 파란 사각형) - 새로운 점 등장: 정답을 모르는 새로운 데이터 점이 하나 등장. (초록색 원) - 이웃 찾기: 새로운 점에서 가장 가까운 순서대로 **k개**의 이웃 데이터 점을 찾음. - 투표하기: 찾은 k개의 이웃들이 어떤 그룹에 속해있는지 보고, 가장 많은 그룹으로 새로운 점을 분류. (이를 **다수결(Majority Vote)** 이라함.)