AI 101
KNN (K-Nearest Neighbors)이란?

K-Nearest Neighbors (KNN)이란?
K-Nearest Neighbors는 기계 학습 기술 및 알고리즘으로 회귀 및 분류 작업 모두에 사용할 수 있다. K-Nearest Neighbors는 대상 데이터 포인트를 둘러싼 선택한 수의 데이터 포인트의 레이블을 조사하여 데이터 포인트가 속하는 클래스에 대한 예측을 만든다. K-Nearest Neighbors (KNN)는 개념적으로 간단하지만 매우 강력한 알고리즘이며, 이러한 이유로 가장 인기 있는 기계 학습 알고리즘 중 하나이다. KNN 알고리즘을 깊이 있게 살펴보자. KNN이 작동하는 방식을 잘 이해하면 KNN의 최선과 최악의 사용 사례를 оцен할 수 있다.
K-Nearest Neighbors (KNN) 개요

Photo: Antti Ajanki AnAj via Wikimedia Commons, CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)
2D 평면에 데이터셋을 시각화해 보자. 그래프에 퍼져 있는 작은 클러스터로 구성된 데이터 포인트를 상상해 보자. KNN은 데이터 포인트의 분포를 조사하고, 모델에 주어진 인수에 따라 데이터 포인트를 그룹으로 분리한다. 이러한 그룹에는 레이블이 할당된다. KNN 모델이 하는 주요 가정은 서로 가까운 위치에 있는 데이터 포인트/인스턴스가 매우 유사한 반면, 다른 그룹에서 멀리 떨어진 데이터 포인트는 해당 데이터 포인트와 유사하지 않다는 것이다.
KNN 모델은 그래프의 두 점 사이의 거리를 사용하여 유사성을 계산한다. 점 사이의 거리가 클수록 유사성이 낮다. 거리를 계산하는 방법은 여러 가지 있지만 가장 일반적인 거리 度量은 단순히 유클리드 거리(직선 거리)이다.
KNN은 지도 학습 알고리즘이므로 데이터셋의 예제에 레이블이 할당되어야 한다. KNN에 대해 알아야 할 두 가지 중요한 사항이 있다. 첫째, KNN은 비모수 알고리즘이다. 즉, 모델을 사용할 때 데이터셋에 대한 가정은 하지 않는다. 대신 모델은 제공된 데이터에서만 구성된다. 둘째, KNN을 사용할 때 데이터셋을 훈련 세트와 테스트 세트로 분할하지 않는다. KNN은 훈련 세트와 테스트 세트 사이에 일반화를 하지 않으므로 모든 훈련 데이터가 모델이 예측을 만들 때 사용된다.
KNN 알고리즘이 작동하는 방식
KNN 알고리즘은 수행되는 동안 세 가지 주요 단계를 거친다:
- 선택한 이웃 수(K)로 K를 설정한다.
- 제공된/테스트 예제와 데이터셋 예제 사이의 거리를 계산한다.
- 계산된 거리를 정렬한다.
- 상위 K 항목의 레이블을 가져온다.
- 테스트 예제에 대한 예측을 반환한다.
첫 번째 단계에서 사용자가 K를 선택하며, 알고리즘에 얼마나 많은 이웃(얼마나 많은 주변 데이터 포인트)을 고려해야 하는지 알려준다. 두 번째 단계에서 모델은 대상 예제와 데이터셋의 모든 예제 사이의 거리를 확인한다. 거리는 목록에 추가되고 정렬된다. 이후 정렬된 목록을 확인하고 상위 K 항목의 레이블을 반환한다. 즉, K가 5로 설정된 경우 모델은 대상 데이터 포인트에 가장 가까운 상위 5개의 데이터 포인트의 레이블을 확인한다. 대상 데이터 포인트에 대한 예측을 렌더링할 때, 이는 회귀 작업인지 분류 작업인지를 확인한다. 회귀 작업의 경우 상위 K 레이블의 평균을 사용하며, 분류 작업의 경우 상위 K 레이블의 모드를 사용한다.
KNN을 수행하는 정확한 수학적 연산은 선택한 거리 度量에 따라 다르다. 거리 度量이 계산되는 방법에 대해 자세히 알아보려면 유클리드, 맨하탄 및 민코프스키와 같은 가장 일반적인 거리 度量에 대해 읽어볼 수 있다.
K의 값이 중요한 이유
KNN을 사용할 때의 주요 제한은 적절하지 않은 K 값(잘못된 이웃 수)을 선택할 수 있다는 것이다. 이렇게 하면 반환된 예측이 상당히 부정확할 수 있다. KNN 알고리즘을 사용할 때 K의 적절한 값을 선택하는 것이 매우 중요하다. 모델의 예측 능력을 최대화하면서 오류를 최소화하는 K 값을 선택하고 싶다.

Photo: Agor153 via Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)
K의 낮은 값은 KNN에 의해 렌더링되는 예측이 덜 안정적이고 신뢰할 수 없음을 의미한다. 이를 이해하기 위해 7개의 이웃이 대상 데이터 포인트 주변에 있는 경우를 고려해 보자. KNN 모델이 작동하고 K 값이 2(예측을 만들기 위해 가장 가까운 두 이웃을 확인)로 설정되었다고 가정해 보자. 대부분의 이웃(5/7)이 블루 클래스에 속하지만 가장 가까운 두 이웃이 빨간색인 경우 모델은 예제가 빨간색이라고 예측할 것이다. 모델의 추측에도 불구하고 이러한 시나리오에서는 블루가 더 나은 추측일 것이다.
이 경우 왜 가장 높은 K 값을 선택하지 않는가? 모델이 너무 많은 이웃을 고려하도록 지시하면 정확도도 낮아진다. KNN 모델이 고려하는 반경이 증가하면 결국 다른 그룹에 더 가까운 데이터 포인트를 고려하기 시작하며 분류 오류가 발생하기 시작한다. 예를 들어, 처음 선택한 점이 위의 빨간색 영역 중 하나에 있더라도 K가 너무 높게 설정되면 모델은 다른 영역의 점을 고려하기 위해 확장할 것이다. KNN 모델을 사용할 때 다양한 K 값을 시도하여 모델에 가장 좋은 성능을 제공하는 값을 확인한다.
KNN의 장단점
KNN 모델의 몇 가지 장단점을 살펴보자.
장점:
KNN은 회귀 및 분류 작업 모두에 사용할 수 있다. 다른 일부 지도 학습 알고리즘과는 달리.
KNN은 매우 정확하고 사용하기 쉽다. 해석, 이해 및 구현이 쉽다.
KNN은 데이터에 대한 가정은 하지 않으므로 다양한 문제에 사용할 수 있다.
단점:
KNN은 대부분 또는 모든 데이터를 저장하므로 모델이 많은 메모리를 필요로 하며 계산 비용이 많이 든다. 대규모 데이터셋은 예측에 오랜 시간이 걸릴 수 있다.
KNN은 데이터셋의 규모에 매우 민감하며 다른 모델과 비교할 때 관련이 없는 기능으로 인해 쉽게 방해를 받을 수 있다.
K-Nearest Neighbors (KNN) 요약
K-Nearest Neighbors는 가장 간단한 기계 학습 알고리즘 중 하나이다. KNN이 개념적으로 간단한에도 불구하고, 이는 또한 강력한 알고리즘이며 대부분의 문제에서 상당히 높은 정확도를 제공한다. KNN을 사용할 때 다양한 K 값을 실험하여最高의 정확도를 제공하는 값을 찾는 것이 중요하다.












