티스토리 뷰

카테고리 없음

최근접 이웃 KNN

루돌푸다요 2024. 3. 29. 18:20

최근접 이웃 알고리즘 수행 방법 

더보기

유유상종이란 같은 집단끼리 서로 다르고 사귄다는 뜻이죠. 이와 비슷한 아이디어에서 착안한 것이 바로 
K-Nearest Neighbor(KNN, KNN) 이랍니다. 주변의 데이터를 보고 내가 알고 싶은 데이터를 예측하는 방식입니다.

  • K = 3 이라면, 별 1개와 세모 2개이므로 ? 는 세모로 예측 될 것 
  • K = 7이라면, 별 4개와 세모 3개이므로 ? 는 별로 예측 될 것 

위와 같이 확인할 주변 데이터 K 개를 선정 후에 거리 기준으로 가장 많은 것으로 예측하는 것이 바로 KNN 의 기본 원리

그럼 K 는 몇으로 정해야 하는 걸까요? 또 거리는 어떻게 측정 해야 하는 것 일까요 ? 

 

하이퍼 파라미터의 개념 

파라미터(Parameter) : 머신러닝 모델이 학습 과정에서 추정하는 내부 변수이며 자동으로 결정되는 값 

Ex ) 선형회귀에서 가중치와 편향 , (혼동주의) Python에서는 함수 정의에서 함수가 받을 수 있는 인자를 지정하는 개념 

하이퍼 파라미터 : 데이터 과학자가 기계 학습 모델 훈련을 관리하는데 사용하는 외부 구성 변수 이며 모델 학습 과정이나 구조에 영향을 미침 

더보기

여기서 Data Science 학문과 연관되는 것이 바로 하이퍼 파라미터예요. 근래의 머신러닝 모델은 정확성과 동시에 복잡성이 증가해서, 왜 좋은 결과가 나왔는지 그 원리는 정확하게 파악하지 못하는 경우가 생기거든요. 

 

이때 모델의 하이퍼 파라미터 변수를 바꾸면서 좋은 평가 지표가 나올 때까지 실험하고 원리를 밝혀내는 것이 바로 데이터 사이언스의 기반이고 과학이라는 단어가 붙은 이유 랍니다. 

 

 

거리의 개념 

-2차원 그래프에서 두 점의 거리를 설정하는 것은 쉬워 보입니다. 바로 직선의 거리를 구하면 됩니다. 

우리는 두 점의 좌표가 주어지면 피타고라스의 정리로 거리를 구할 수 있습니다. 어려운 말로 유클리드 거리 라고 합니다. 

그 외에도 맨해튼 거리 등 다양한 거리의 계산 방법이 있습니다. 거리 개념은 머신러닝에서 데이터 간의 유사도를 측정할 때 자주 등장하는 개념이니 한번 이해해봅시다. 

 

유클리드 거리 공식

기본적으로 거리 기반의 알고리즘이기 때문에 단위의 영향을 크게 받습니다. 따라서 피처에 대한 표준화가 반드시 수반되어야 합니다.

 

KNN 모델의 정리 

  • 장점 
    - 이해하기 쉽고 직관적, 모집단의 가정이나 형태를 고려하지 않음, 회귀, 분류 모두 가능함 
  • 단점 
    - 차원 수가 많을 수록 계산량이 많아짐 
    - 거리 기반의 알고리즘이기 때문에 피처의 표준화가 필요함 
Python 라이브러리 

sklearn.neighbors.KNeighborsClassifier

sklearn.neighbors.KNeighborsRegressor