새소식

Data theory/딥러닝

[딥러닝] KNN

  • -

들어가기 전!

모델 베이스 기법과 인스턴스 베이스 기법의 종류를 가볍게 보고 넘어가자. 

더보기

Model-based learning: 선형/비선형 모델, Neural Network, 의사결정나무, Support vector machine...

☞데이터로부터 모델을 생성하여 분류/예측 진행

Instance-based learning: K-nearest neighbor, Locallly weighted regression...

☞별도의 모델 생성 없이 인접 데이터를 분류/예측에 사용

이 중 Nearest Neighbor를 알아보자.


KNN(K-Nearest Neighbor)

미지의 데이터로부터 K개의 가장 가까운 이웃을 선택하고 해당 이웃의 정보로 미지의 데이터를 분류/예측한다.

특징

  • Instance-based learning: 각각의 관측치만을 이용하여 새로운 데이터 예측
  • Memory-based learning: 모든 학습 데이터를 메모리에 저장한 후 이를 바탕으로 예측
  • Lazy learning: 모델을 별도로 학습하지 않고 테스트 데이터가 들어와야 작동하는 알고리즘

 

분류 알고리즘

  1. 분류할 관측치 x를 선택
  2. x로부터 인접한 k개의 학습 데이터 탐색
  3. 탐색된 k개 학습 데이터의 majority class c를 정의
  4. c를 x의 분류 결과로 전환

예측 알고리즘

  1. 예측할 관측치 x를 선택
  2. x로부터 인접한 k개의 학습 데이터 탐색
  3. 탐색된 k개 학습 데이터의 평균을 x의 예측 값으로 반환

KNN의 하이퍼파라미터

1. K

인접한 학습 데이터를 몇 개까지 탐색할 것인가?

K가 매우 작을 경우: 지역적 특성을 지나치게 반영함(Overfitting)

K가 매우 클 경우: 다른 범주의 개체를 너무 많이 포함(Underfitting)

▶ 일정 범위 내로 K를 조정하여 가장 좋은 예측 결과를 보이는 K값을 선정한다.

분류 모델 예측 모델
$$MisclassError_k=\frac{1}{k}\sum_{i=1}^{k}I(c_i\neq \hat{c_i}) $$ $$for\,k=1,2,....k$$ $$SSE_k=\sum_{i=1}^{k}(y_i-\hat{y_i})^2$$ $$for\,k=1,2,...k$$

2. Distance Measure(1-유사도)

데이터 간 거리를 어떻게 측정할 것인가?

다양한 거리 측도가 존재하지만 데이터 내 변수들이 각기 다른 데이터 범위 및 분산을 가지므로 데이터 정규화(또는 표준화)를 통해 이를 맞추는 것이 중요하다. 

2-1. 유클리디안 거리

일반적으로 사용하는 거리 척도. 두 관측치 사이의 직선 거리를 의미한다. $$d_{(X,Y)}=\sqrt{\sum_{i=1}^{p}(x_i-y_i)^2}$$

예) A=(2,0,0), B=(0,3,2)이면 $d_{(A,B)}=\sqrt{(0-2)^2+(3-0)^2+(2-0)^2}=\sqrt{17}$

2-2. 맨하탄 거리

직선 거리가 아닌, 각 좌표축 방향으로만 이동한 거리를 의미한다. $$d_{Manhattan(X,Y)}=\sum_{i=1}^{p}\left| x_i-y_i \right|$$

2-3. 마힐라노비스 거리

변수 내 분산과 공분산을 모두 고려하여 거리를 계산하는 방법. 공분산 행렬이 항등 행렬인 경우 유클리드 거리와 동일하다. $$d_{Mahalanobis(X,Y)}=\sqrt{(X-Y)^T{\sum}^{-1}(X-Y)}$$

 

2-4. 상관계수 거리

데이터 간 피어슨 상관계수를 거리 척도로 직접 사용. 데이터 패턴의 유사도를 반영할 수 있다. $$d_{Corr(X,Y)}=1-r  \;\;(이때 \; r=\sigma_{XY})$$

 

2-5. 스피어만 상관계수 거리

$$d_{Spearman(X,Y)}=1-\rho$$ $$이때\; \rho=1-\frac{6\sum_{i=1}^{n}(rank(x_i)-rank(y_i))^2}{n(n^2-1)}$$

$\rho$는 스피어만 상관계수이며 데이터의 Rank를 이용하여 상관거리를 계산한다. $\rho$는 -1과 1 사이의 값을 가진다.

 

거리 측도에 대한 자세한 설명은 이전 포스팅을 참고하시길...

 

 

[딥러닝] 군집 분석 (Clustering)

들어가기 전... 머신러닝의 앙상블 기법에 대해 알아보자. 더보기 앙상블이란? 여러 Base 모델들의 예측을 다수결 또는 평균을 이용하여 예측의 정확성을 향상시키는 방법이다. Base 모델이 서로

bubble2.tistory.com

 

 


KNN의 장점과 한계점

장점

  • 데이터 내 노이즈에 영향을 크게 받지 않으며 (마할라노비스 거리처럼) 데이터의 분산을 고려할 경우 강건하다.
  • 학습 데이터의 수가 많을 경우 효과적이다.

한계점

  • 파라미터 K의 값을 설정해야 한다.
  • 어떤 거리 척도가 분석에 적합한지 알 수 없기 때문에 데이터의 특성에 맞는 거리 척도를 임의로 선정해야 한다.
  • 새로운 관측치와 각각의 학습 데이터 간 거리를 전부 측정해야 하므로 계산 시간이 오래 걸린다.

 


Weighted KNN

거리 내 K개의 관측치가 전부 같은 가중치를 가져야 하는가? 라는 질문에서 출발한 모델.

즉 새 데이터와 기존 관측치의 거리에 따라 다른 가중치를 부여한다.

분류 모델 예측 모델
$$\hat{c}_{new}=max_c\sum_{i=1}^{k}w_iI(w_i\in c)$$  $$\hat{y}_{new}=\frac{\sum_{i=1}^{k}w_iy_i}{\sum_{i=1}^{k}w_i}$$ $$where \, w_i=\frac{1}{d_{(new,x_i)}^2}$$

마무리하며...

KNN은 새로운 관측치를 분류하거나 예측할 수 있는 아주 단순한 접근 방식이다.

선형 모델과 같이 학습 데이터로부터 특정 형태의 모델을 제시하는 것이 아니라 학습 데이터 내 유사한 관측치들만을 토대로 새로운 데이터를 예측한다.

Weight KNN알고리즘으로 데이터의 가중치를 고려할 수 있으며 보다 정확한 모델을 구축할 수 있다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.