본문 바로가기
프로젝트(진행중)/머신러닝 한 걸음씩

EP 04. KNN(최근접 이웃) 개념과 장단점

by 일말고프로젝트 2021. 9. 6.

1. KNN 개념

 

위키백과

 

K-최근접 이웃 알고리즘이다. 말 그대로 K개의 가장 가까운 이웃 중에서 가장 공통적인 항목, 과반수에 의해 객체를 분류하는 방식이다. 위 그림을 예로 들어보면, K= 3일 경우 빨간색 2, 파란색 1이기 때문에 초록원은 빨간색을 부여받게 된

다. K=5일 겅우에는 빨간색 2, 파란색 3이므로 파란색을 부여받게 되는 것이다.

 

 

이러한 KNN은 머신러닝 중 지도학습에 속하고, 그 중 분류에 속한다. 지도학습인 이유는 정답이 있는 주어진 데이터를 활용해 카테고리에 다라 분류하는 문제이기 때문이다. 

 

2. 장/단점

 

 1) 장점

  - 단순하고 효율적임

  - 초기 데이터 분포의 가정이 필요 없음

  - 별도의 훈련이 필요없음(저장)

  - 수치 기반 데이터 분류 작업시 성능이 우수함

 

  2) 단점

   - 설명력이 떨어짐

   - K 선택이 중요함

 

3. 주의할 점

 

변수별 데이터 범위에 따라 영향도가 매우 크게 차이날 수 있기 때문에 거리 기반의 모델의 경우 Scaling이 필수.

 

4. KNN 구현

 

import numpy as np
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

iris = load_iris()
knn = KNeighborsClassifier(n_neighbors = 3)

X_train, X_test, Y_train, Y_test = train_test_split(iris['data'], iris['target'], test_size=0.25, stratify = iris['target'])

Y_train

knn.fit(X_train, Y_train)

y_pred = knn.predict(X_test)
print("prediction accuracy: {:.2f}".format(np.mean(y_pred == Y_test)))

prediction accuracy: 1.00

 

 

 

댓글