취업 준비/AIVLE SCHOOL
CH5. 머신 러닝_KNeiborsClassfier
BraveTiger
2023. 3. 27. 23:23
K-최근접 이웃 알고리즘 (KNeiborsClassfier - KNN)
지도학습의 한 종류로 거리기반 분류분석 모델이다.
KNN 알고리즘의 특징
- instance-based learning(사례기반 학습): 별도의 모델없이 데이터만을 이용해서 새로운 데이터를 입력했을 때 기존의 데이터를 이용하여 분류/예측
- 데이터로부터 거리가 가까운 'k'개의 다른 데이터 레이블을 참조하여 분류하는 알고리즘 분류나 예측(회귀)에 사용되는 비모수 방식이다.
- 입력 데이터가 주어지면 입력 데이터와 가까운 K개의 데이터 레이블을 참조하여 예측하는 알고리즘으로 거리 측정에는 1. "맨해튼 거리" 계산법, 2. "유클리디안 거리" 계산법을 사용한다.
- Lazy Learning이다. 데이터를 학습하고 모델을 피팅하는 과정이 있는 다른 지도학습 알고리즘과 달리 특징이 유사한 k개의 이웃의 클래스를 분류값으로 사용하거나 평균값을 예측값으로 얻기 때문이다. 즉 실제 예측 시점(real time)에서 계산을 진행하기 때문에 별도의 모델이 사전 학습을 할 필요가 없다.
KNN 알고리즘의 장점
장점
- 단순하고 효율적
- 데이터 분포에 대한 가정이 필요없다.
- 훈련 속도가 빠르다
- 수치 기반 데이터 작업에서 성능이 우수하다.
- 이진 분류와 다중 분류 문제를 해결할 수 있다.
단점
- 모델을 생성하지 않아 특징과 클래스간 관계를 이해하기에 제한적이다.
- 적절한 K개의 선택이 필요하다.
- 데이터에 대한 편향성과 이상치에 민감하다.-> 불필요한 변수는 반드시 제거되어야 한다.
- 데이터가 많아지면 성능이 떨어진다.(하나의 분류/예측을 진행할 때마다 전체 데이터와 비교하기 때문에)
- 명목 특징 및 누락 데이터를 위한 추가 처리가 필요하다 (더미코딩: 명목 특징을 수치 형식으로 변환)
KNN 알고리즘 구현 시 주의점
KNN 구현 시 주의 점 거리기반 알고리즘이기 때문에 각 변수의 범위 차이가 크다면 범위가 큰 변수가 거리 함수에 큰 영향을 미친다. 따라서 각 변수에 대한 값을 표준값으로 재조정하기 위해 정규화를 적용하는 것이 좋다.
KNN을 활용한 실습
https://colab.research.google.com/drive/1fNRVKq9tlu06NzNjl8MVQGmmWaKZx7xL
Google Colaboratory Notebook
Run, share, and edit Python notebooks
colab.research.google.com
결론
1. KNN은 단순하고 효율적인 알고리즘이다.
2. 거리기반 알고리즘이기 때문에 전처리 과정에서 데이터의 범위를 맞춰주는 작업이 가장 중요하다.
3. 문제에 맞는 적절한 K를 찾는 것이 알고리즘의 핵심이다.
4. 실제 데이터가 새로운 범위를 가진 데이터라면 분류 성능에 다소 오류가 발생할 것이고 분류 문제를 해결하기에 다소 적절하지 않은 알고리즘으로 느껴진다.