참고 서적
도서명: Data Science from Scratch (밑바닥부터 시작하는 데이터 과학) 저자 : Joel Grus 출판 : 프로그래밍 인사이트 |
Ch 12. K- Nearest Neighbor (KNN)
KNN은 모델을 만드는 것이 아님.
모델의 형태는 정해져있지 않고, 방법론 및 알고리즘이라고 일컫는다.
-김성범 교수님(고려대학교)
모델은 특정 유형의 패턴을 인식하도록 학습된 파일임!!!
KNN 분류
"내 이웃의 다수의 패턴으로 따라간다."
관측치를 정하고, 그 관측치에서 가까운 거리에 있는 이웃데이터를 탐색한다.
가까운 순서대로 "거리"를 구하고,
새로운 예측 데이터에대해 수행한다.
KNN 알고리즘의 구분 및 특징
Instance-based Learning
각각의 관측치만을 이용하여 새로운 데이터에 대한 예측 진행
Memory-based Learning
모든 학습 데이터를 메모리에 저장한 후, 이를 바탕으로 예측 시도
Lazy Learning
모델을 별도로 학습하지 않고, 테스팅 데이터가 들어와야 비로소 작등하는 게으른 알고리즘
Linear Model (Classification) VS KNN
Linear Model (Classification): 말 그대로 선형이다.
KNN: 비선형임
즉, KNN은 모델을 만드는 것이 아님. 모델의 형태는 정해져있지 않고, 방법론 및 알고리즘이라고 일컫는다.
KNN 분류 알고리즘 순서
- 분류할 관측치 x를 선택
- x로부터 인접한 k개의 학습 데이터를 탐색
- 탐색된 k개 학습 데이터의 majority class c를 정의
- c를 x의 분류 결과로 반환
KNN 예측 알고리즘 순서
- 예측할 관측치 x를 선택
- x로부터 인접한 k개의 학습 데이터를 탐색
- 탐색된 k개 하습 데이터의 평균을 x의 예측 값으로 반환
KNN Hyperparameter
- K
- 인접한 학습 데이터를 몇 개까지 탐색할 것인가?
- K가 매우 작을 경우: 데이터의 지역적 특성을 지나치게 반영함 (Overfitting)
- K가 매우 클 경우: 다른 범주의 개체를 너무 많이 포함하여 오분류할 위험이 있음 (Underfitting)
- Distance Measures
- Euclidean Distance
- Manhattan Distance
- Mahalnobis Distance
- Correlation Distance
- Pearson Correlation
- Spearman Rank Correlation
Hyperparameter - K
K 값을 정할 때, 가장 좋은 예측 결과를 보이는 값을 K값으로 선정한다.
혹은, error가 동시에 작아지는 지점에서 해당 K값을 사용한다.
Hyperparameter - Distance Measures
Euclidean Distance
Manhattan Distance
Mahalnobis Distance
Python에서numpy.einsum()메서드를 사용하여 Mahalanobis 거리 계산
또한 numpy.einsum()메소드를 사용하여 두 배열 간의 Mahalanobis 거리를 계산할 수 있습니다. numpy.einsum()메소드는 입력 매개 변수에 대한 Einstein 합계 규칙을 평가하는 데 사용됩니다.
import numpy as np
x = np.array([[[1,2,3],
[3,4,5],
[5,6,7]],
[[5,6,7],
[7,8,9],
[9,0,1]]])
i,j,k = x.shape
xx = x.reshape(i,j*k).T
y = np.array([[[8,7,6],
[6,5,4],
[4,3,2]],
[[4,3,2],
[2,1,0],
[0,1,2]]])
yy = y.reshape(i,j*k).T
X = np.vstack([xx,yy])
V = np.cov(X.T)
VI = np.linalg.inv(V)
delta = xx - yy
results = np.sqrt(np.einsum('nj,jk,nk->n', delta, VI, delta))
print(results)
마할라노비스 VS 유클리드 비교
https://sillon-coding.tistory.com/192
'공부정리 > Data Science' 카테고리의 다른 글
[Data Science from Scratch] Chapter 14. Simple LinearRegression (0) | 2022.08.05 |
---|---|
[Data Science from Scratch] chapter 13. Naive Bayse (0) | 2022.08.02 |
[Data Science from Scratch] ch.11 additional note (0) | 2022.07.25 |
[Data Science from Scratch] Chapter 11. machine learning (0) | 2022.07.21 |
[Data Science from Scratch] ch.7, 8 additional note - Gradient Descent without FrameWork! (0) | 2022.07.20 |