1. K-NN Classifier
비모수 밀도 추정에 기반한 방법
- 확률분포모델을 미리 가정하지 않고 데이터 집합을 이용하여 확률밀도함수를 표현
- 새로운 데이터 x가 주어졌을 때
- 이웃한 k개의 학습 데이터를 찾음
- 찾아진 이웃들이 많이 속한 클래스로 할당
- 모든 학습데이터를 저장
비모수밀도추정 (Non-Parametric Density Estimation)
p(x∣Ci)=Vi(x)1NK
- Vi(x)
- Ci에 속하는 데이터들 중에서
x에서 k번째로 가까운 데이터 xki까지의 거리를
반경 ri(x)으로 하는 초구 (hypershpere)
결정 규칙
- y(x)=argmini(ri(x))
K=1인 K-NN Classifier
- y(x)=argmin{r1,r2}=1 이라면,
일반화
- xmin=argminxi∈X{d(x,xi)}
- 모든 데이터 집합 X에 대하여,
새로 들어온 데이터와 학습데이터의 거리 d 중 최소값을 갖는 데이터
- y(x)=y(xmin)
수행 단계
-
주어진 데이터 x와 모든 학습 데이터 {x1,x2,...xN}과의 거리를 계산
-
거리가 가장 가까운 데이터를 찾아 xmin으로 둔다.
- xmin=argminxi∈X{d(x,xi)}
-
xmin이 속하는 클래스에 할당한다.
즉, y(xmin)과 같은 값을 가지도록 y(x)를 결정한다.
- y(x)=y(xmin)
만약 noise가 있다면,
해당 noise에 영향을 받기가 너무 쉽다는 특성을 가지게 된다.
문제점
- 학습데이터에 대하여 Overfitting될 가능성이 있다.
2. K-NN vs Gausian
K-NN
- 비모수적 밀도 추정 방법에 기반
- 새 데이터가 주어질 때마다 학습 데이터 전체와의 거리 계산 필요
- 항상 학습 데이터 저장 -> 비용 문제 (계산량, 메모리, CPU 등) 초래
가우시안
- 모수적 밀도 추정 방법에 기반
- 학습데이터로 평균과 표준편차만 계산하여 활용
3. K-NN 설계 고려 사항
적절한 K값의 설정
-
K=1
- 바로 이웃한 데이터에만 의존하여 클래스가 결정
-
K>>1
- 주어진 데이터 주변 영역이 아닌 전체 데이터 영역에서
각 클래스가 차지하는 비율( 선험확률, 사전확률 )에 의존하게 된다.
-
주어진 데이터 분포 특성에 의존
- 데이터를 활용한 분류를 통해 가장 좋은 성능을 주는 값을 선택.
거리 함수
주어진 데이터화 학습 데이터 간의 거리 계산
- 유클리디안 (2차 노름)
- 맨하튼 거리 (1차 노름)
- p차 노름
- 내적
- 코사인 거리
- 정규화된 유클리디안 거리
- 마할라노비스 거리