KNN을 활용하여 데이터를 분류할 수 있다.


✔️ K-최근접 이웃

K-최근접 이웃(KNN, K-Nearest Neighbor) 알고리즘은 가장 간단한 머신러닝 알고리즘으로, 분류(Classification) 알고리즘이다. 비슷한 특성을 가진 데이터는 비슷한 범주에 속하는 경향이 있다는 가정하에 사용한다.

1. Hyperparameter : K

K는 임의의 숫자(1, 2, …) 이며 값에 따라 분류가 달라질 수 있는 Hyper parameter 이다.

  • 두 관측치의 거리가 가까우면 y(target)도 비슷할 것이라는 가정이 사용됨
  • K 개의 주변 관측치의 Class에 대한 majority voting
  • Distance-based model, instance-based learning


KNN을 이해하기 위한 것으로 동그라미는 관측치를 의미함


(1) 왼쪽 그래프

  • 초록색 동그라미가 어떤 성별일지 찾는 상황이다.
  • K값을 3으로 설정했을 때, 관측치들끼리 거리를 구한 다음 초록색 동그라미와 거리가 가장 가까운 세 개의 관측치를 구한다.
  • 후보군을 결정할 땐 세 개의 관측치를 기준으로 다수결로 분류한다.
  • 이 그래프에선 세 관측치(남자 2, 여자 1)를 기준으로 다수결에 의해 초록색 동그라미는 남자로 분류한다.

(2) 오른쪽 그래프

  • 별 모양이 어떤 클래스에 속하는지 찾는 상황이다.
  • K가 3이면 Class B로 분류되고 K가 6이 되면 Class A로 분류된다.
  • 이 그래프를 보면 K 값에 따라서 분류 결과가 달라진다는 것을 알 수 있다.
  • 즉, 분류 경계선의 형태가 달라지면서 K가 클수록 단순화된 형태, K가 작을수록 미세한 변동을 보기 때문에 모델 복잡도가 클 것이다.

(3) K의 영향

  • 1 ~ 3번 그래프를 보면 K값이 작아지면 모델의 복잡도가 증가하고, K값이 클수록 모델이 다소 간단해지는 것을 알 수 있다.
  • 네 번째 그래프를 보면 K가 1로 커짐에 따라 Training Error는 0에 수렴하는 반면 Testing Error와 Validation Error는 줄어드다가 다시 높아지는 패턴을 보인다.
  • 모델을 구축할 때, Validation으로 최적의 K 값을 찾아내어 KNN 모델을 결정해야 한다.


2. Hyperparameter : 거리

  • 두 관측치 사이의 거리를 측정할 수 있는 방법에는 Euclidean, Manhattan, Minkowski 가 있다.
  • 범주형 변수는 Dummy Variable 으로 변환하여 거리를 계산한다.
  • 거리를 측정하는 방법도 KNN의 Hyperparameter 이다.



거리를 측정할 땐 Euclidean Distance 가 주로 사용되는데 측정하는 대상을 데이터 공간상에서 완벽하게 독립을 시켜 그 변수별로 거리를 계산하고자 할때는 manhattan distance를 사용한다.

범주형 변수는 Dummy Variable 로 변환하여 거리를 계산하는데 예를 들어 비둘기, 까치, 까마귀를 분류한다면 100, 010, 001 과 같이 새로운 변수를 도입하여 각각의 클래스를 대표하게끔 설정한다. 이때 같은 클래스들끼리는 거리가 0이고 다른 클래스들끼리는 거리 값이 측정된다.


✔️ Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기