본문 바로가기
전공/머신러닝

[ML] K-NN(K-Neighbor Nearest)이란?

by mhiiii 2024. 4. 2.
728x90

KNN, K-최근접 이웃 알고리즘 

KNN은 새로운 입력과 현재 데이터 중 가장 가까운 K개의 데이터를 찾아 가장 많은 분류 값으로 분류

특징

  • 지도학습
  • 유클리디안 거리 사용
  • k는 보통 홀수를 많이 사용

 

"가장 가까운"이라는 개념은 현실의 3차원이 아닌 그 이상의 N차원의 일반적인 데이터에서 어떻게 정의할까?

 

우리의 눈으로 확인할 수 없을 뿐, 거리 계산은 동일하게 벡터 공간에서 두 벡터의 유클리디안 거리를 기반으로 계산

 

 

$$ dist =  \sqrt{(x_1-y_1)^2 + (x_2-y_2)^2 + ... + (x_n-y_n)^2 }$$

 

장점

  • 이중, 다중 분류 다 적용 가능
  • 수치형 레이블에 대해서 높은 정확도

단점

  • 속도가 느림
  • 하나의 예측을 진행할 때마다 전체 데이터와 비교하기 때문에 연산 횟수 증가
  • 이상치에 민감

 

예시 코드

from sklearn.neighbors import KNeighborsClassifier
from sklearn.neighbors import KNeighborsRegressor

knn = KNeighbors(n_neighbors=k) #객체 생성

knn.fit(xdata,ylabel)

knn.predict(xtest) #최빈 or  과반수 이상인 레이블 값 하나 반환
knn.predict_proba(xtest) #각 분류 카테고리에 속할 확률들을 반환

 

 

Reference

https://ineed-coffee.github.io/posts/KNN/

 

KNN 개념 정리 및 활용 (sklearn)

:mag: Index

ineed-coffee.github.io

https://computer-science-student.tistory.com/56

 

kNN(k Nearest Neighbor) 알고리즘

kNN 알고리즘이란? kNN 알고리즘은 데이터로부터 거리가 가까운 'k'개의 다른 데이터의 레이블을 참조하여 분류하는 알고리즘으로 거리를 측정할 때 유클리디안 거리 계산법을 사용한다. kNN 알고

computer-science-student.tistory.com

https://goldenrabbit.co.kr/2022/07/14/%ED%99%95%EC%8B%A4%ED%9E%88-%EC%95%8C%EC%95%84%EB%91%90%EB%A9%B4-%EB%A7%8C%EC%82%AC%EA%B0%80-%ED%8E%B8%ED%95%B4%EC%A7%80%EB%8A%94-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-10%EA%B0%80%EC%A7%80-%EC%95%8C/

728x90