본문 바로가기

머신러닝(ML)

K-최근접 이웃( K-Nearest Neighbor )란...

K-최근접 이웃( K-Nearest Neighbor 이하 KNN )

  • 머신러닝에서 사용되는 분류( Classification ) 알고리즘
  • 특성이 유사한 데이터는 서로 수치적으로 근접해 있을 거라는 가정하에 사용됨.
  • 학습 절차가 따로 없음( 새로운 데이터가 들어 온 경우 기존 데이터와의 거리를 기준으로 분류하기 때문 )
  • KNN은 따로 모델을 만들지 않기 때문에 게으른 모델( Lazy model ) 또는 Instance-based Learning이라고도 함.

분류는 클래스의 수에 따라 다시 클래스가 2개인 이항 분류( binary classification )와 클래스가 3개 이상인 다항 분류( multi class classification )으로 나눈다.

아래 그림을 보자.

  • x, y값을 가진 모든 빨강, 파란 점(데이터) 두 분류가 있다.
  • 아직 미분류 상태인 하얀 점인 새로운 데이터가 발생했다고 하자.
  • K = 1 이라 하면 가장 가까운 이웃 한개의 속성으로 분류된다.
  • K-최근접 이웃(K-Nearest Neighbor) 알고리즘은 새로운 점(데이터)를 파랑 또는 빨강으로 분류하는 거다.

아래는 K에 따른 분류의 예다.

위의 K = 4 인 경우는 어떤가? 난감하다. 빨강, 파랑이 동률이다. 대게 K는 홀수로 선택한다. 물론 동률이 나왔을 때 처리할 수 있는 몇가지 방법이 있긴 하다. 이웃 중 가장 가까운 이웃을 따른다거나 또는 아주 단순히 랜덤으로 찍는다거나. 그러나, 걱정하지 말자 충분한 데이터는 좋은 결과를 보여줄 것이다.

장점

  • 통계적 가정 불필요 (비모수적 방법)
  • 단순하다
  • 성능이 좋다
  • 모델을 훈련(학습)하는 시간이 필요 없다

단점

  • 데이터가 커질수록 많은 메모리 필요
  • 처리시간(분류시간) 증가.

두 점 사이의 거리를 구하는 법은 아래 링크를 참조하자.

2020/06/10 - [머신러닝(ML)] - 두 점 사이의 거리 공식