[ML] K-최근접 이웃(K-Nearest Neighbors)이란?
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
(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
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기