Intance-based Classifiers
- Eager Learner : 모델을 학습시키고 테스트 데이터가 들어오면 예측
- Lazy Learner : 테스트 데이터가 들어오면 예측하는거 (ex : K-NN)
종류
- Rote learner : train 데이터를 기억해뒀다가 test data가 들어오면 정확하게 match하는 걸 찾아서 return
- K-Nearest Neighbor : 가장 가깝다고 생각하는 instance를 return
원리
test record를 2차원 좌표로 표현한다면

근처에 가장 가까운 record를 보고 predict함
동률이 생길 수도 있어서 K값은 홀수로 함
Nearest의 기준 1 : 거리를 기준으로
- 유클리드 거리 : $\sqrt{(x_1-y_1)^2+(x_2-y_2)^2+...+(x_n-y_n)^2}$
- X = (4.9, 3.0, 1.4, 0.2), Y = (4.6, 3.1, 1.5, 0.2) → d = 0.33
- 단위가 다른경우 Normalization 해준다.
- Range Transformation : $\frac{x-min(x)}{max(x)}$
- Z-transformation : $\frac{x-mean(x)}{std(x)}$
- 맨하탄 거리 : $|(x_1-x_2)+(y_1-y_2)|$
- X = (1,2), Y = (3,1) → d = |1-3|+|2-1| = 2+1 = 3
- 체비쇼프 거리 : $max(|(x_1-x_2),(y_1-y_2)|)$
- X = (1,2), Y = (3,1) → d = max(|1-3|, |2-1|) = max(2+1) = 2
- 민코프스키 거리 : $\left ({\sum_{i=1}^{n}} \left| x_i-y_i\right|^p \right )^\frac{1}{p}$
- p=1이면 맨하탄 거리
- p=2이면 유클리드
- p=∞이면 체비쇼프
- 각각 해보면서 최선의 방법을 선택해야함 (이거 시험 나올듯)
Nearest를 결정하는 방법
- Majority vote : 모든 neighbor이 동등하게 한 표씩 행사
- Weighted vote : 가까운 test data는 높은 가중치, 먼 data는 낮은 가중치
