kNN(k-Nearest Neighbor)란?

머신러닝은 지도학습과 비지도학습으로 나눠지고, 지도학습은 분류와 회귀(예측)으로 나눠진다. 우리는 이 글에서 지도학습 중 분류의 대표적인 알고리즘인 kNN을 알아보고자 한다.


별은 어느 집단에 속할까?

위 그래프에 빨간 동그라미는 A집단, 초록색 세모는 B집단으로 분류되어있다. 그리고 우린 가운데 별이 어느 집단에 속할 것인지 알아보고자 한다. 여기서 쓰이는 개념이 kNN(k-Nearest Neighbor), 즉 최근접 이웃 알고리즘이다.


k의 개수 정하기

k=3일때 별은 A집단이 된다.

첫 번째 방법은 kNN중에 k의 개수를 정해줘야 한다. 여기서 k란 가장 가깝게 접하는 요소들을 몇개까지 볼 것인지 정해주는 것이다. 위에서는 k를 3개로 사용해주어서 A집단 2개, B집단 1개가 별에 대해 최근접 이웃인 것이다. 결과적으로는 A집단 2개 > B집단 1개 이므로 파란색 별은 A집단이라고 예측하여 분류하게 된다.

단, 여기서 주의할 점은 k는 될수록 작은 수를 사용하는 것이 좋다. 또한 k는 기본적으로 홀수의 개수를 사용한다. 왜냐하면 짝수를 쓰게 되면 2:2, 3:3같은 동률인 상황이 만들어져 답을 구하지 못하게 되기 때문이다. 이렇게 k를 다르게 정할수록 결과가 다르게 나오기 때문에 데이터를 보고 최선의 k를 찾아야 한다.


NN(최근접거리) 구하는 방법

NN은 피타고라스로 구할 수 있음

위의 예시는 2차원일 때 예시이다. n차원일 때는 보통 유클리드 거리로 점과 점 사이의 거리를 구한다. 하지만 위 그림은 2차원이므로 피타고라스 정리를 활용했다. A집단 동그라미 예시 좌표가 (2,3), 별 좌표가 (3,2)이므로 a와 b 모두 1이 될 것이고 피타고라스 정리를 쓰면 d는 루트2가 될 것이다. 그래서 저 두 도형 사이의 거리, 즉 NN(최근접거리)는 루트2가 될 것이다.


정리

kNN 알고리즘은 가장 직관적인 알고리즘으로 특정 공간 내에서 input데이터와 제일 근접한 k개의 요소를 찾아, 더 많이 일치하는 집단으로 분류하는 알고리즘이다. k(최근접이웃 기준개수)에 따라 결과값이 매우 달라지기 때문에 이 k의 개수를 정하는 것이 매우 중요하다. 아직까지 k의 개수를 구하는 최적의 방법은 정형화 되어 있지 않아 사람이 직접 찾아줘야 한다. k는 보통 홀수를 사용한다.

NN(최근접거리)를 구해 집단 간의 거리를 구할 수 있고, 이 거리는 다양하게 활용할 수 있기 때문에 매우 중요하다.

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기