kNN알고리즘은 모든데이터 분류에 사용할 수 있는 아주 간단한 지도학습 알고리즘이다.
kNN 알고리즘 이란 현재 데이터를 특정값으로 분류하기 위해 기존의 데이터 안에서 현재 데이터로부터 가까운 k개의 데이터를 찾아 k개의 레이블 중 가장 많이 분류된 값으로 현재의 데이터를 분류하는 알고리즘입니다.
현실공간 → 평면 이동 및 수직 이동이 가능한 3차원 공간
벡터공간 → 벡터 연산이 가능한 N차원 공간
kNN 알고리즘을 포함한 대다수의 머신러닝 알고리즘에서 사용되는 공간이란 개념은 벡터 공간을 의미합니다. 벡터 공간은 우리가 살고 있는 공간보다 더 포괄적인 개념이기 때문에 특별히 현실 공간의 데이터(위도, 경도)가 없어도 데이터의 특성을 벡터 공간의 축으로 지정해서 데이터 간의 거리를 계산할 수 있습니다.
출처 나의 첫 머신러닝/딥러닝 허민석
x 값을 3정슛 성공 횟수, y 값을 블로킹 성공 횟수로 2차원 벡터 공간에서 시각화 한 그림.
k가 1일경우의 분류 → 센터로 분류한다.
k가 5일 경우의 분류 → 슈팅가드 3개, 센터 2개이므로 슈팅가드로 분류한다.
이처럼 kNN알고리즘은 k(탐색할 이웃의 개수)에 따라 데이터를 다르게 예측할 수도 있습니다. 보통 k는 1로 설정하지 않는데 → 하나의 이웃으로 현재의 데이터를 판단하기에는 정보가 너무 한쪽으로 편향돼 있기 때문입니다.
kNN알고리즘에서의 벡터 공간 거리는 유클리드 거리를 이용하여 계산합니다.
2차원일 경우
3차원 이상일 경우
이미지 출처 - wikipedia
공부 및 출처 나의 첫 머신러닝/딥러닝 허민석