본문 바로가기

Programming/Deep Learning

KNN(K - Nearest Neighbors Alogorithm) - K-최근접 알고리즘

1. KNN(K - Nearest Neighbors)


KNN, K - 최근접 이웃 알고리즘 : 특정공간내에서 입력과 제일 근접한 K개의 요소를 찾아, 더 많이 일치하는 것으로 분류하는 알고리즘이다.



위의 좌표공간에서 파란색 점으로 되어 있는 그룹을 A그룹이라고 생각하고, 주황색 점으로 되어 있는 그룹을 B라고 하자.

이때 우리는 별 모양으로 표시된 입력값이 A그룹에 속하는지, B그룹에 속하는지를 알고싶다.


이럴때 사용되는 KNN 알고리즘은 다음과 같이 적용된다.

우선 K의 값을 정한다. 해당 K 값에 대한 설명은 밑에서 하기로 하고, 우선 K를 3이라는 값으로 정했다고 생각해보자.


입력값과 가장 근접한 K개의 요소를 찾아보자. K = 3 이므로 3개의 요소를 찾아보면 다음 그림과 같다.





별 모양의 점을 기준으로 원을 그려서 확인함으로써, 위의 빨간색 원과 같이 파란색 점 하나와 주황색 점 두개가 선택됨을 알 수 있다.

그리고 이를 통해 입력값은 주황색 점의 그룹, 즉 B의 그룹과 더 일치하다는 판단을 내릴 수 있습니다.


추가적으로 생각해보면, KNN 알고리즘은 정의한 K값에 따라서 입력값의 분류 결과가 달라질 수 있다.


만약 우리가 K를 3으로 두지않고 1로 두었다면, 아래 그림과 같은 원이 그려짐으로써 입력값은 A그룹으로 분류될 수 있다.



즉, KNN 알고리즘을 사용할 때는 적절한 K값을 찾아 설정해주는 것이 중요하다.


또한, 위와 같이 2개의 그룹에 대해 분류를 할때 만약 K값을 짝수로 한다면 어떻게 될까?

만약 K = 4 라고 설정했다면 다음과 같은 결과가 나온다.



그림에서 확인할 수 있듯이, 파란색 점 2개, 주황색 점 2개가 됨으로써 입력 값이 어떠한 그룹이라는 결론을 내릴 수 없게 된다.


그렇다고 무조건 K를 홀수 값으로 설정해야 하는 것은 아니다.

위와 같이 2개의 그룹에 대한 분류를 할때는 무조건 홀수 값을 주어야 겠지만, 만약 입력값을 3개의 그룹에 대해 분류를 할때, K = 3 으로 둔다면 각각의 그룹의 요소가 하나씩 포함되어 위와 같이 어떠한 그룹이라는 결론을 내지 못하는 상황이 올 수 있다.


즉, KNN 알고리즘을 사용할때는 분류될 그룹의 종류등을 고려하여 적절한 K값을 설정해주는 것이 중요하다.

'Programming > Deep Learning' 카테고리의 다른 글

K-Fold Cross Validaion(교차 검증) 정의 및 설명  (0) 2019.03.05