AI

KNN(K-Nearest Neighbors) 알고리즘 기본개념

땅콩새싹 2021. 7. 14. 20:17

 


 

K-Nearest Neighbors 알고리즘은 어떤 데이터에 대한 답을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용하는 알고리즘입니다. 

출처:towardsdatascience

빨간 점의 새로운 데이터가 주어졌을 때 이 데이터를 Class A로 분류할지, Class B로 분류할지 판단하는 문제입니다.

k=3 으로 주어졌을 때 빨간 점의 가장 가까운 주변의 3개의 데이터를 확인하고, 3개의 데이터 중 더 많은 데이터가 포함되어 있는 범주로 분류합니다. 위의 그림에서는 노란점(Class A) 1개 보라점(Class B) 2개가 있기 때문에 k=3 일 때는 해당 데이터가 Class B로 분류됩니다.

k=6 으로 주어졌을 때는 원 안에 노란점(Class A) 4개 보라점(Class B) 2개가 있습니다. 따라서 k=6 일 때는 해당 데이터가 Class A로 분류됩니다.

KNN은 K의 값을 어떻게 정하냐에 따라 결과 값이 바뀔 수 있습니다. 따라서 가장 적합한 K를 찾는 것이 이 알고리즘의 관건이라고 할 수 있겠습니다. K의 default 값은 5입니다.

코드로 내용을 더 보겠습니다.

 

github 코드 첨부

https://github.com/erdnussretono/K-Nearest-Neighbors_1/blob/main/KNN.ipynb

 

erdnussretono/K-Nearest-Neighbors_1

Contribute to erdnussretono/K-Nearest-Neighbors_1 development by creating an account on GitHub.

github.com

 

 

scikit-learn 정리

  • KNeighborsClassifier()는 k-최근접 이웃 분류 보델을 만드는 scikit-learn class입니다.

 

  • n_neighbors 매개변수로 이웃의 개수를 정하고 default 값은 5입니다.

 

  • p 매개변수로 거리를 재는 방법을 지정합니다. 1일 경우 맨해튼 거리, 2일 경우 유클리디안 거리를 사용합니다. default 값은 2입니다.

 

  • n_jobs 매개변수로 사용할 CPU 코어를 정할 수 있습니다. -1로 설정하면 모든 CPU 코어를 사용해 이웃 간의 거리 계산 속도를 높힐 수 있습니다. fit() 매서드에는 영향을 주지 않습니다.

 

  • fit() : scikit-learn model training method.       ex) fit(traing data, target data)

 

  • predict() : scikit-learn model prediction method.       ex) predict(새로운 data 1개)

 

  • score() : 훈련된 scikit-learn model 성능 측정.       ex) score(test data, test target)