본문 바로가기

study

지도학습 : KNN 최근접 이웃 알고리즘

지도학습의 머신러능 알고리즘에 대해 알아보고 정리를 해보았다. 출처는 아래 남겨두었다. 

1. KNN(K-Nearest Neighbor) 최근접 이웃 알고리즘

1.1. 특징

- 가장 간단한 머신러닝 알고리즘   
- 새로운 데이터를 예측할 때 가장 가까운 데이터로 예측하는 방법  
- 이웃(범위)의 수를 설정해주어야 한다  
- 거리는 유클리디안 거리방식을 사용한다  


1.2. 장단점

- 훈련 세트의 수나 피쳐 수가 많을 경우 예측이 느려진다
- 부분의 값이 0일 경우 잘 작동하지 않는다  
- 쉽지만 예측이 느리고 여러 피쳐를 처리하기에는 성능이 부족해 현업에서는 잘 쓰지 않는다

 

1.3. KNN을 활용한 분류와 회귀

# 필요한 모듈 설치
!pip install numpy scipy matplotlib ipython scikit-learn pandas pillow

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import mglearn

%matplotlib inline
# 분류
mglearn.plots.plot_knn_classification(n_neighbors=1)

from sklearn.model_selection import train_test_split
X, y = mglearn.datasets.make_forge()
X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0)

from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=3)

clf.fit(X_train, y_train)
clf.predict(X_test)
# 회귀
mglearn.plots.plot_knn_regression(n_neighbors=3)

from sklearn.neighbors import KNeighborsRegressor
X, y = mglearn.datasets.make_wave(n_samples=40)

X_train, X_test, y_train, y_test = train_test_split(X,y, random_state=0)

reg = KNeighborsRegressor(n_neighbors=3)
reg.fit(X_train,y_train)
reg.predict(X_test)

좌 - 분류 / 우 - 회귀

이웃과의 거리의 합이 가장 작을 때 테스트 값의 y값이 정해진다. 그래프를 뚫어져라보면 이해가 될것이다. 비교적 쉬운 알고리즘. 

 

추가로 앞서 말한 유클리디언 거리방식은 간단히 말하자면 피타고라스 정리를 활용하여 거리를 계산한다는 것을 의미한다. N차원의 복잡한 공간에서의 거리도 사실 이 방식의 연속으로 구할 수 있다. 아래는 2차원 평면 상에서 거리를 구하는 예제이다.

 

 

 

출처

 

파이썬 라이브러리를 활용한 머신러닝(번역개정판) : 사이킷런 핵심 개발자가 쓴 머신러닝과 데이터 과학 실무서

현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없습니다. 사이킷런(scikit-learn)과 같은 훌륭한 머신러닝 라이브러리가 복잡하고 난해한 작업을 직관적인 인터페이스로 감싸주는 덕분이죠. 이 책에서는 사이킷런의 핵심 개발자가 복잡한 수학을 동원하지 않고 실용적으로 머신러닝을 구축하는 모든 단계를 설명합니다. 미적분, 선형대수, 확률 이론을 공부하지 않았어도 이 책을 통해 머신러닝을 활용할 수 있게

www.hanbit.co.kr

 

태그