민프

[AI | ML][분류기] K-Nearnest Neighbor 알고리즘 (KNN, k-최근접 이웃)에 대해서 알아보자 본문

[AI | ML]

[AI | ML][분류기] K-Nearnest Neighbor 알고리즘 (KNN, k-최근접 이웃)에 대해서 알아보자

민프야 2024. 1. 24. 16:53

K-Nearest Neighbors (KNN) 알고리즘이란?

K-Nearest Neighbors (KNN) 알고리즘은 기계 학습에서 분류 및 회귀 문제를 해결하기 위한 간단하면서도 강력한 지도 학습 분류 알고리즘 중 하나입니다.

KNN은 데이터에 기반하여 패턴을 학습하고, 새로운 데이터 포인트를 분류하거나 예측하기 위해 가장 가까운 이웃들을 참고합니다.

KNN은 지도 학습의 한 유형으로, 데이터 포인트가 어떤 클래스에 속하는지를 결정하기 위해 주변 데이터 포인트의 다수결 투표를 이용합니다.

 

 

KNN 알고리즘의 역사

K-Nearest Neighbors (KNN) 알고리즘은 1950년대에 소개되었으며, 기계 학습 및 패턴 인식 분야에서 가장 오래된 알고리즘 중 하나입니다. 이 알고리즘은 심플하면서도 효과적인 방법으로 데이터 분류 및 예측 문제를 해결하는 데 사용됩니다.

 

 

KNN 알고리즘 작동 방식

KNN 알고리즘의 작동 방식은 다음과 같습니다.

간단하게 하게 말하자면 다양한 데이터 레이블 중에서, 자신과 가까운 데이터를 찾아 자신의 레이블을 결정하는 방식입니다.

  1. 학습 단계 - KNN 알고리즘은 학습 단계가 별도로 필요하지 않습니다. 대신, 훈련 데이터셋이 알고리즘의 일부로 사용됩니다.
  2. 거리 측정 - 분류하려는 데이터 포인트와 훈련 데이터 포인트 간의 거리를 측정합니다. 일반적으로 유클리드거리맨하탄거리와 같은 거리 측정 방법을 사용합니다.
  3. K 이웃 선택:가장 가까운 K개의 훈련 데이터 포인트를 선택합니다. K는 사용자가 지정하는 하이퍼파라미터로, 일반적으로 홀수로 선택됩니다.
  4. 다수결 투표 : 선택된 K개의 이웃 데이터 포인트 중에서 가장 많은 수의 데이터 포인트가 속한 클래스를 예측 클래스로 선택합니다. 이를 다수결 투표라고 합니다.

글보단 그림이 이해하기가 좋을 것 같아서 그림으로 보여드리겠습니다.

 

위에서 말씀드렸다시피 KNN 알고리즘은 분류(Classification) 알고리즘으로써, 비슷한 특성을 가진 데이터는 비슷한 범주에 속해있다는 의미를 담고있습니다. 

https://ko.wikipedia.org/wiki/K-%EC%B5%9C%EA%B7%BC%EC%A0%91_%EC%9D%B4%EC%9B%83_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

예를 들어서 위 와 같이 데이터가 주어졌을 때, K=3일 때 초록색인 동그라미 데이터는 다른 그룹들 중 어디에 속한다고 말할 수 있을까요?

보시는 것 과 같이 가까운 데이터들에서 빨간색이 2개가 속해있어서 빨간색 그룹에 속할 것 이라고 추측할 수 있습니다.

이와 같이 주변의 가장 가까운 K개의 데이터를 보고 데이터가 속할 그룹을 판단(다수결 투표)하는 알고리즘이 K-NN 알고리즘 입니다.

이때 거리를 구하는 공식이 유클라디안거리, 맨하탄거리 공식입니다.

 

추가로 말씀드려보자면

K = 3 일 경우

초록색 원은 빨간색 그룹에 속할 것 이라고 추측할 수 있고,

 

K = 5일 경우 

초록색 원은 파란색 그룹에 속할 것 이라고 추측할 수 있습니다. 

 

적절한 K 값을 선택할 때, 데이터의 특성과 분포를 고려해야 합니다.

일반적으로 K는 홀수로 선택하는 것이 좋다고합니다. 

왜냐하면 홀수로 선택하면 다수결 투표 시 더 명확한 결과를 얻을 수 있기 때문입니다.

 

근데 가장 중요한 건 K 값을 조정하면서 교차 검증을 수행하여 최적의 K 값을 찾는 것이 베스트 일 것 같습니다.

KNN을 적용할 때는 여러 가지 K 값을 시도해보고, 테스트 데이터에 대한 성능 지표(예: 정확도)를 평가하여 적절한 K 값을 선택하는 것이 중요합니다.

 

다음 포스팅에서는 Android에서 해당 알고리즘을 적용해보겠습니다.

 


참고

https://isl.stanford.edu/~cover/papers/transIT/0021cove.pdf

https://sites.stat.washington.edu/courses/stat527/s13/readings/Altman_AmStat_1992.pdf

https://docs.google.com/file/d/0B78A_rsP6RDSVjBTa1ZUSXBGYzA/edit?resourcekey=0-ieDlJmoTUv2WllxQDQcY2Q

https://www.youtube.com/watch?v=QRWNto6BsfY&t=234s

https://en.wikipedia.org/wiki/Euclidean_distance

https://ko.wikipedia.org/wiki/K-%EC%B5%9C%EA%B7%BC%EC%A0%91_%EC%9D%B4%EC%9B%83_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

k-최근접 이웃 알고리즘 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 패턴 인식에서 k-최근접 이웃 알고리즘(또는 줄여서 k-NN)은 분류나 회귀에 사용되는 비모수 방식이다.[1] 두 경우 모두 입력이 특징 공간 내 k개의 가장 가까운

ko.wikipedia.org

 

Comments