KNN(k-nearest-neighbors)는 새로운 관측값이 주어지면 기존 데이터 중에서 가장 속성이 비슷한 k개의 이웃을 먼저 찾는다. 그리고 가까운 이웃들이 갖고 있는 목표 값과 같은 값으로 분류하여 예측한다.
따라서 KNN 알고리즘은 지도학습의 한 종류로 거리기반 분류분석 모델이다. k 값에 따라 예측의 정확도가 달라지므로, 적절한 k값을 찾는 과정이 매우 중요하다.
KNN은 데이터 간 거리를 참조할 때 '유클리디안 거리' 계산법을 사용한다. 간단하지만 이미지 처리, 영상 인식, 추천 알고리즘, 데이터의 패턴 인식 등으로 사용할 수 있다. 명목 데이터를 처리하고자 할 때, 유클리디안 거리 계산은 명목 데이터를 처리할 수 없으므로, 수치 형식으로 변환해야 한다. 이때 '더미 코딩'을 활용할 수 있다.
장단점
장점 | 단점 |
ㆍ효율적이다 ㆍ단순하다. 때문에 알고리즘 구현이 쉽다 ㆍ훈련 단계가 빠르다 ㆍ기저 데이터 분포에 대한 가정을 하지 않는다 ㆍ수치 기반 데이터 분류 작업에서 성능이 우수하다 |
ㆍ모델을 생성하지 않아 특징과 클래스 간 관계를 이해하는 데 제한적이다 ㆍ 적절한 k의 선택이 필요하다 ㆍ 데이터가 많아지면 분류 속도가 느려지고 계산량이 많아진다 ㆍ 명목 특징 및 누락 데이터를 위한 추가 처리가 필요하다 |
참고: https://m.blog.naver.com/bestinall
데이터 마케팅 공부방 (best.in.all) : 네이버 블로그
데이터 분석과 마케팅을 업으로 하고 있습니다. 데이터에 관해 함께 공부하고 성장해가고 싶습니다.
m.blog.naver.com
예제
데이터 전처리
- titanic 데이터셋에 대해 누락 데이터 처리 및 더미 코딩 등의 전처리를 진행ㆍ완료했다.
훈련/검증 데이터 분할
- 데이터 정규화 및 7:3 비율로 훈련/검증 데이터를 분할했다.
모형 학습 및 검증
- 결과에 따라서 215명의 승객 중에서 미생존자를 정확히 예측한 TN은 108명, 미생존자를 생존자로 잘못 분류한 FP는 17명, 생존자를 미생존자로 잘못 분류한 FN은 30명, 생존자를 정확하게 예측한 TP는 60명으로 확인할 수 있다.
- metrics 모듈의 classification_report() 함수를 사용하면 정확도, 재현율, f1-score, support 지표를 출력한다.
- f1-score을 보면 미생존자(0) 예측의 정확도가 0.82이고, 생존자(1) 예측의 정확도는 0.72이다.