K-Nearest Neighbor Classifier (요약)
1. 언제 사용하는가?
- Vector features
- Less than 20 attributes (Computational cost 가 높기 때문)
- Training data가 충분히 많을 때
2. 장점
- Training이 매우 빠르다
- 복잡한 형태의 target function (decision boundary)도 학습 가능
- 원본 Data 정보 손실이 없다
3. 단점
- Query 답변이 느리다 (거리 계산이 느림)
- 상관없는 attribute나 outlier에 취약하다 (Smoothing 이 없음)
4. Voronoi Diagram
- KNN 방법은 모든 training data를 저장 -> 많은 Memory 소모
- Voronoi Diagram을 형성하여 Memory 소모량을 줄인다.
- Training time 증가
- Test time 감소
- Nearest를 결정하는 방법은 distance metric에 달려있음
- Euclidean (L2) distance
- Manhattan / City-block (L1) distance
- 각 Dimension을 다르게 Scale 하는 Weighted 방법도 있음
- 그 외에도 다양...
6. Standardization (표준화)
- 원본(Raw) feature들을 새로운 Z-score로 변경
$$ z_{ij} = \frac{x_{ij} - \mu_j }{\sigma_j} $$
- i번 sample의 j번 feature를 표준화
7. Efficient searching
- 효율적인 검색을 위해 데이터를 구조화
- KD tree
- Choose dimension
- Choose pivot (median)
- Split data <repeat>
8. Choosing K
- Validation data가 없고, Train data만 있다면, N-fold cross validation을 사용
- 각 K에 대하여 K-NN을 Train, Test 진행
- cross validation error가 가장 작은 K를 선택 (일반적으로 홀수)
- Train sample $\rightarrow \infty$ 이고 K가 증가하면, KNN은 Optimal Bayes Classifier에 가까워진다
댓글
댓글 쓰기