본문 바로가기
인공지능/머신러닝

KNN 알고리즘

by hihijh826 2024. 6. 12.
728x90
반응형
SMALL

📍분류/예측을 위한 학습 방법

☑️Model-based Learning (모델 기반 학습)

  • 데이터로부터 모델을 생성하여 분류/예측 진행 (즉, 분류/예측 모델을 학습)
  • linear regression, logistic regression, decision tree, SVM, neural network, ...

☑️Instance-based Learning (사례 기반 학습)

  • 별도의 모델 생성없이 데이터 베이스에 있는 자료들을 분류/예측에 사용
  • 각각의 관측치 (instance) 만을 이용하여 새로운 데이터에 대한 예측을 진행
  • 대표적으로 KNN 알고리즘이 있음.

 

📍K-최근접 이웃(K-Nearest Neighbors, KNN) 알고리즘

- 새로운 데이터 포인트의 분류를 결정하기 위해 가장 가까운 k개의 이웃 데이터 포인트를 참조

- Instance-based learning으로 분류와 회귀 모두 사용 가능

- 별도의 모델 생성 없이 인접한 데이터를 분류 / 예측 

 

📍K-최근접 이웃(KNN) 알고리즘 개요

☑️분류(범주형)

- 데이터를 가장 가까운 속성에 따라 분류하여 레이블링 하는 알고리즘

- 새로운 데이터를 분류할 때, 해당 데이터와 거리가 가까운 k개의 다른 데이터를 선택하고, 이 k개의 데이터 중 가장 빈도 수가 높은 레이블을 새로운 데이터의 레이블로 분류

- ex ) K=3이고, 이웃들이 각각 클래스 A, A, B에 속한다면, 새로운 데이터 포인트는 클래스 A로 분류

☑️회귀(예측)(연속형)


-  K개의 이웃의 평균값을 사용하여 새로운 데이터 포인트의 값을 예측

☑️ k 결정 


- k 가 작은 경우:  오버피팅 overfitting 발생  : 새로운 데이터 대한 일반화 능력이 떨어지는 현상 

- k가 큰 경우 : 언더피팅 underfitting 발생: 모델이 훈련 데이터와 테스트 데이터 모두에 대해 일반화 능력이 부족한 상태 

 

=> k의 값을 조정해가며 가장 높은 예측 성능을 보이는 k 값을 찾아야 됨

 

☑️ 데이터 간의 거리 측정

- KNN 알고리즘에서 거리를 기반으로 데이터를 분류하므로, 각 특징(feature)의 스케일(크기)이 매우 중요

- 거리 측정 전 feature scaling 필수! 

단위가 큰 특정 변수에 의해 거리가 결정되는 것을 방지하기 위함

ex : 자치시 별 1인당 범죄율: 0~1, 주택 1가구 당 평균 방의 개수: 1~7, 주택가격: $120,000~

 

☑️ 거리 측정 함수 

(1)Euclidean Distance

X, Y값 간 차이 제곱합의 제곱근

• 데이터의 분포나 상관관계 고려 x

두 관측 치 사이의 직선 거리 (최단거리)

𝑑(𝑋,𝑌)= σ𝑖=1𝑛 (𝑥𝑖− 𝑦𝑖)2  ( σ𝑖=1𝑛 -> i=1에서 n까지의 합)

L2 distance라고도 함

(2) Manhattan Distance

 

• Taxicab distance 혹은 L1 distance라고도 함

X에서 Y로 각 좌표축 방향으로만 이동할 때

계산되는 거리 (격자거리)

𝑑(𝑋,𝑌)= σ𝑖=1𝑛 |𝑥𝑖− 𝑦𝑖|

(3) Mahalanobis Distance

 

𝑋 − 𝑌 𝑇𝛴−1 𝑋 − 𝑌 = 𝑐2

즉, 타원의 방정식

데이터의 분포나 상관관계 고려

- 원일 경우 Euclidean Distance 와 동일

 

 

(4) Correlation Distance

 

데이터 간의 Pearson correlation을 거리측도로 사용함

• 두 벡터 간의 상관 관계를 기반으로 한 측정 방법  ( 두 변수간의 상관관계 고려 ) 

데이터 패턴의 유사도 반영이 가능함

𝑑𝑐𝑜𝑟𝑟(𝑋,𝑌)= 1 − 𝑟, 𝑤ℎ𝑒𝑟𝑒 𝑟 = ( 𝐶𝑜𝑣(𝑋,𝑌) )  /  ( 𝜎𝑋∙𝜎𝑌 ) (correlation)

−1 ≤ r ≤ 1

0 ≤ 𝑑𝑐𝑜𝑟𝑟(𝑋,𝑌) ≤ 2

 

 

☑️weighted KNN 

- KNN 알고리즘의 확장으로, 각 이웃의 중요도를 고려하여 예측 수행

기본 KNN은 단순히 가장 가까운 ( k )개의 이웃의 다수결로 새로운 데이터 포인트를 분류하는 반면, Weighted KNN은 각 이웃의 거리에 따라 가중치를 부여하여 더 정확한 예측을 수행

 

- 가중치 

• 거리 기반 가중치: 가까운 이웃일수록 더 큰 가중치를 부여하고, 먼 이웃일수록 더 작은 가중치를 부여합니다.
• 가중치 함수: 일반적으로 사용하는 가중치 함수는 거리의 역수입니다. 즉, 거리 ( d )에 대해 가중치는 ( \frac{1}{d} )로 주어집니다.

 

 

 

☑️ KNN 적용 시 고려사항


1. K 값 선택: K의 값은 모델의 성능에 큰 영향을 미칩니다. 일반적으로 교차 검증(cross-validation)을 통해 최적의 K 값을 찾습니다.
2. 거리 척도 선택: 데이터의 특성에 따라 적절한 거리 척도를 선택해야 합니다.
3. 데이터 전처리: 특성 값의 범위가 크게 다를 경우, 표준화 또는 정규화(normalization)를 통해 각 특성의 값을 스케일링하는 것이 중요합니다.

 

📍KNN의 장점과 단점

 

☑️장점

 

- 단순함: 이해하고 구현하기 쉬운 알고리즘

- 수치 기반 데이터 분류 작업에서 우수함

- 적은 하이퍼파라미터

- 학습 데이터가 많을 때 효과적 
- 유연성: 분류와 회귀 모두에 사용 가능
- 비모수적: 데이터의 분포에 대한 가정이 필요 없음

☑️단점


- 계산 비용: 모든 거리 계산이 필요하므로 데이터 양이 많아지면 계산 비용이 증가

- 시간이 오래걸림 

- 파라미터 k 값과 데이터 특성에 맞는 거리측도를 찾아야 하며, k의 선택이 중요함

- 공간 복잡 : 모든 학습 데이터를 메모리에 저장해야 하므로 공간 복잡도가 큽니다.
- 고차원 데이터에서 성능 저하: 고차원 데이터에서는 거리 계산의 효율성이 떨어져 성능이 저하될 수 있습니다. 이를 "차원의 저주(Curse of Dimensionality)" 라고 합니다.

 

 

 



728x90
반응형
LIST

'인공지능 > 머신러닝' 카테고리의 다른 글

Word Embedding( 단어 임베딩)  (0) 2024.06.15
Text analysis  (0) 2024.06.14
딥 뉴럴 네트워크(Deep Neural Network, DNN)  (0) 2024.06.12
Model Evaluation  (0) 2024.06.09