Broccoli's House

#2-(2) 지도학습 알고리즘 : k-최근접 이웃(k-NN) 본문

공부/머신러닝

#2-(2) 지도학습 알고리즘 : k-최근접 이웃(k-NN)

김콜리 2018. 1. 20. 23:31

※ 이 글의 내용은 O'REILLY의 <파이썬 라이브러리를 활용한 머신러닝> 책을 기반으로 한다.




지도 학습 알고리즘 : k-최근접 이웃



  • k-최근접 이웃 
 - k-최근접 이웃(k-Nearest Neighbors) 알고리즘은 가장 간단한 머신러닝 알고리즘으로써, 훈련 데이터 세트를 저장하는 것이 모델을 만드는 과정의 전부이다. 새로운 데이터 포인트가 주어지면 알고리즘이 훈련 데이터 세트에서 가장 가까운 데이터 포인트, '최근접 이웃'을 찾는다. 이때, k는 찾고자 하는 최근접 이웃의 개수를 뜻한다.



  • k-최근접 이웃 분류

- k-최근접 이웃 분류 : 알고리즘이 가장 간단하도록 k가 1인 경우, 가장 가까운 훈련 데이터 포인트 하나를 최근접 이웃으로 찾아 출력 예측에 사용한다. k가 2 이상일 때는 더 많은 이웃을 가지고 있는 클래스가 출력이 된다. 



<k가 3일때의 k-NN 분류 알고리즘 적용 모델>



<k가 각각 1, 3, 9일 때 모델들의 결정 경계>

 

 - 결정 경계(Decision Boundary) : 알고리즘이 각각의 클래스로 지정한 영역을 나누는 경계. k가 1일 때는 결정 경계가 훈련 데이터에 가깝게 따라간다. k가 증가하면 결정 경계는 부드러워지면서 더욱 단순한 모델이 된다. 



<k 값의 증가에 따른 모델 예측의 정확도>


 - k 값이 작을 때는 훈련 데이터에 대한 정확도는 높지만 테스트 데이터에 대한 정확도는 낮다. 이것은 모델이 훈련 데이터에 딱 맞게 과대적합(Overfitting)되어 있다는 것을 말한다. 반대로 k 값이 크면 모델이 너무 단순하여 훈련 데이터 세트와 테스트 데이터 세트 모두에 대하여 정확도가 더 나빠진다. 이것은 과소적합(Underfitting)되어 있는 것이다. 따라서, k의 개수(최근접 이웃의 수)에는 최적점이 존재한다.




  • k-최근접 이웃 회귀

 - k-최근접 이웃 회귀 : k 값이 작을 때의 모델은 가장 가까운 이웃의 값을 그대로 출력한다. k 값이 여러 개이면, 모델은 최근접 이웃들의 평균을 출력한다.


<k가 3일때 k-NN 회귀 알고리즘 적용 모델>


  

<k 값이 각각 1, 3, 9일 때 모델들의 예측 비교>


 - k값이 작을 때는 훈련 데이터 하나하나가 출력에 주는 영향이 크기 때문에 모델의 예측값이 훈련 데이터 포인트를 모두 지나간다. k값이 증가하면 훈련 데이터에는 잘 맞지 않지만 더 안정적인 모델이 된다.




  • k-최근접 이웃 알고리즘 평가

 - 장점 : 이해하기 매우 쉬운 모델이며, 많이 조정하지 않아도 좋은 성능을 발휘한다. 매우 빠르게 만들 수 있어서 더 복잡한 알고리즘을 적용해보기 전에 시도해 볼 수 있다.

 - 단점 : 훈련 세트가 매우 크면 예측이 느려진다. 많은 특성을 가진 데이터 세트에는 잘 동작하지 않으며, 특성 값이 대부분 0인 희소한 데이터 세트에는 특히 잘 작동하지 않는다. 따라서 예측이 느리고 많은 특성을 처리하는 능력이 부족하여 현업에서는 잘 사용하지 않는다.


Comments