K - Nearest Neighbor
K - Nearest Neighbor 는 특정 기준점에서 반경에서 K개를 기준으로 가장 많은 class 를 분류해주는 방법이다.
(Majority Voting 에 근거한 방법이겠지?)
K 를 직접 설정 해야 한다는 점에서 약간의 불편함이 존재할 수 있고, 어떤 K 를 설정했느냐에 따라 너무 큰 경우 경계가 세분화 되지 않고, 너무 작은 경우 Outlier 의 영향력이 커지고, Overfitting 이 가능하기에 조심해서 선택하는 것이 좋다.
Target Value (Label) 의 값의 유형 별 처리
1. Categorical Variable
- 가장 많이 나타나는 Class 를 y 로 추정
- K 는 홀수로 정하는 것이 tie 문제에 유용하다.
2. Continuous Variable
- 대표값(평균) 을 기준으로 y 추정
- Inverse distance weighted average (거리가 커질수록 weight 를 작게 주는 방법)
Distance 를 구하는 방법으로는 Euclidean distance, Manhatten distance (Continuous Variable), Hamming distance (Categorical Variable) 의 경우
간단하게 정리해보면 Classification 에 대한 문제에 사용한다면
Categorical Variable 의 target value 를 갖고있다고 가정하자.
m = 1, ... , M
근처 K개 중 가장 많은 범주를 선택하는 것이 이 방법의 목표이다.

K개를 기준으로 그 반경 안에서 가장 많은 class 의 값을 구하는 과정.
Continuous Variable 의 경우에서는 그 근처의 K개의 평균을 선택한다.

Overfitting --> 이 경우 Cross - Validation 을 사용할 수 있고, K를 for loop 로 변경하면서, error 값을 보며 최적의 K를 찾아야 한다.