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는 홀수로 선택한다. 물론 동률이 나왔을 때 처리할 수 있는 몇가지 방법이 있긴 하다. 이웃 중 가장 가까운 이웃을 따른다거나 또는 아주 단순히 랜덤으로 찍는다거나. 그러나, 걱정하지 말자 충분한 데이터는 좋은 결과를 보여줄 것이다.
장점
- 통계적 가정 불필요 (비모수적 방법)
- 단순하다
- 성능이 좋다
- 모델을 훈련(학습)하는 시간이 필요 없다
단점
- 데이터가 커질수록 많은 메모리 필요
- 처리시간(분류시간) 증가.
두 점 사이의 거리를 구하는 법은 아래 링크를 참조하자.
'머신러닝(ML)' 카테고리의 다른 글
| 서포트 벡터 머신( Support Vector Machine ) 이란... (0) | 2020.07.09 |
|---|---|
| 로지스틱회귀( Logistic Regression )란... (0) | 2020.07.09 |
| 다중선형회귀란( Multiple Linear Regression )란... (0) | 2020.07.09 |
| 선형회귀 - python code (0) | 2020.07.09 |
| 선형회귀란?( 손실, 경사하강법, 학습률 ) (0) | 2020.07.09 |