안녕하세요 배도리입니다. 여러 지도학습 중 하나인 kNN에 대해서 배워보겠습니다. kNN(k-Nearest Neighbors)은 지도학습(Supervised Learning) 알고리즘 중 하나로, 데이터를 분류(Classification) 또는 회귀(Regression)하는 데 사용됩니다. kNN은 분류 문제에서 가장 간단하고 효과적인 알고리즘 중 하나입니다. 따라서 분류와 회귀의 개념을 나눠서 설명드리고 이후 실습을 통해 kNN을 확인해 보겠습니다!
kNN 분류
▪ kNN(k-최근접이웃)의 개념
▪ 특정자료의 분류기준을 정할 때, 주변 k개의 데이터가 속하는 클래스(class)들 중에서 가장 많은 클래스로 특정자료를 분류하는 방식입니다. 예시로 새로운 데이터 ‘?’가 속하는 클래스를 결정하기 위해, ‘?’에서 가장 가까운 k개의 데이터(k=5) 클래스들 중 majority voting(다수투표) 방식에 의해 최다 출현 클래스로 할당합니다.
▪ 게으른 학습(lazy learner)입니다. 훈련 데이터(training data)로부터 수학적 모형인 판별 함수 (discriminative function)를 학습하지 않습니다. 대신, 훈련 데이터 셋을 메모리에 저장합니다.
▪ 사례중심학습(instance-based learning)입니다. 훈련데이터(training data) 자체가 모형이므로 어떠한 추정 방법도 모형도 없습니다. 즉, 데이터 분포를 표현하기 위한 파라미터 추정이 필요 없습니다.
▪ kNN은 간단한 방법이지만 성능(performance)면에서 뒤쳐지지 않습니다.
▪ 그러나 차원의 저주(curse of dimension)문제가 발생할 수 있습니다. 데이터의 차원(dimensionality)이 증가할수록 성능저하가 심하고 해당 공간의 부피가 기하급수적으로 증가하므로 동일한 수의 데이터 밀도는 매우 낮아집니다.(sparse) 즉, 차원이 증가할수록 데이터 분포 분석에 필요한 샘플 데이터의 수가 기하급수적으로 증가합니다.

k의 하이퍼파라미터
kNN의 하이퍼파라미터(Hyperparameter)는 모델의 학습 과정에 영향을 주는 매개변수입니다. kNN에서 가장 중요한 하이퍼파라미터는 거리측정방법과 이웃의 수(k)입니다. 하이퍼파라미터(Hyperparameter)란, 모델의 학습 과정에 영향을 주는 매개변수를 의미합니다. 모델의 하이퍼파라미터는 학습 데이터로부터 자동으로 학습되는 모델 파라미터와는 달리, 사람이 직접 설정해야 합니다.
위에서 설명한 표현중 "'?’에서 가장 가까운 k개의 데이터" 여기서 가깝다는 것은 거리라는 개념이 있다는 뜻이겠죠? 호호
kNN에서 사용되는 거리 측정 방식은 다양합니다. kNN의 하이퍼파라미터 중 대표적인 거리측정방법들에 대해 간단히 설명하겠습니다.
거리측정방법
▪ 유클리드 거리(Euclidean Distance)
두 데이터 포인트 간의 직선 거리를 계산하는 방식입니다. 유클리드 거리는 가장 일반적으로 사용되는 거리 측정 방식 중 하나입니다. 데이터의 스케일(scale)이 크게 다를 경우, 거리 계산에서 큰 영향을 미칠 수 있습니다. 따라서, 유클리드 거리를 사용할 때에는 데이터를 정규화(normalization)하는 것이 좋습니다.

▪ 맨하탄 거리(Manhattan Distance)
두 데이터 포인트 간의 각 축에 대한 차이의 절댓값을 더한 값으로 계산하는 방식입니다. 맨하탄 거리는 데이터가 격자 형태로 구성되어 있을 때 유용합니다.

▪ 민코프스키 거리(Minkowski Distance)
유클리드 거리와 맨하탄 거리를 일반화한 거리 측정 방식입니다. 민코프스키 거리는 유클리드 거리와 맨하탄 거리를 모두 포함하는 방식입니다. p는 거리 계산 시 사용하는 하이퍼파라미터로, 일반적으로 1 또는 2 값을 사용합니다. p가 1인 경우 맨하탄 거리와 같고, p가 2인 경우 유클리드 거리와 같습니다.

이외에도 많은 거리 측정 방법들이 있고이 중에서 데이터의 특성에 맞는 거리 측정 방법을 선택해야 합니다. 기회가 된다면 다른 거리측정 방법들에 대해서도 설명드리겠습니다.
다음 kNN의 하이퍼파리미터 이웃의 수(k)입니다
이웃의 수(k)는 kNN에서 새로운 데이터를 분류할 때 고려할 가까운 이웃의 수를 의미합니다. k 값이 작을수록 모델은 적은 수의 이웃 데이터만 고려하게 됩니다. 이 경우, 모델이 학습 데이터에 지나치게 맞추려고 하므로 과대적합(overfitting) 문제가 발생할 가능성이 높습니다. 즉, 모델이 학습 데이터에는 높은 정확도를 보이지만, 새로운 데이터에 대해서는 일반화(generalization)하기 어려울 수 있습니다.
반면, k 값이 크면 모델은 더 많은 이웃 데이터를 고려하게 됩니다. 이 경우, 모델의 표현력이 감소하므로 과소적합(underfitting) 문제가 발생할 가능성이 높습니다. 즉, 모델이 학습 데이터와 새로운 데이터 모두에 대해서 정확도가 낮아질 수 있습니다.

이렇듯 k값에 따라서 모델의 정확도와 일반화가 변화되므로 적절한 k값을 선택해야합니다. 이를 편향과 분산의 상충관계로 설명할수 있습니다.
▪ 편향과 분산의 상충관계(Bias-Variance Trade-off)
편향(bias)이란학습된 모델이 ‘학습 데이터’에 대해 만들어 낸 예측값과 실제값 간의 평균적 차이입니다. high bias경우 에는 학습 데이터의 특성을 반영하지 않고, 모델을 지나치게 단순화하게 만듭니다. (oversimplification)
분산(variance)이란 학습된 모델이 ‘테스트 데이터’에 대해 만들어 낸 예측값과 실제값 간 차이들에 대한 변동성(variability)을 의미합니다. high variance경우 학습 데이터의 지역적 특성을 지나치게 반영하여, 새로운 데이터에 대한 일반화가 어렵습니다.

결국 kNN의 K가 갖는 의미는? 새로운 테스트 자료에 대해 k의 개수에 따라 분류 결과가 달라집니다. kNN에 방식들이 존재하는데 그중 다수결 방식(Majority voting)은 이웃의 범주 중에서 제일 많은 범주로 새 데이터의 범주를 분류합니다. 예시로 새로운 테스트 데이터의 범주가 k값에 따라 변경됩니다.
반면 가중합 방식(Weighted voting)은 가까운 이웃의 정보에 좀 더 높은 가중치 부여하여 새로운 데이터의 범주(클래스) 불변합니다.
kNN의 장단점은 명확합니다.
장점
▪ 학습데이터 내에 끼어있는 노이즈의 영향을 크게 받지 않음
▪ 학습데이터 수가 많다면 꽤 효과적인 알고리즘
단점
▪ 최적 이웃의 수(k)와 어떤 거리 척도(distance metric)가 분석에 적합한지 불분명해 데이터 각각의 특성에 맞게 연구자가 임의로 선정해야 함
• Best k는 데이터마다 다르기 때문에 가장 적합한 hyperparameter를 찾아내기 위해 Grid search 방식으로 탐색
▪ 새로운 관측치와 각각의 학습 데이터 사이의 거리를 전부 측정해야 하므로, 계산 시간이 오래 걸리는 한계가 있음
다음 게시글에는kNN 분류를 코드로 실습을 진행해보겠습니다.
'Machine Learning_모델설계_Python' 카테고리의 다른 글
| kNN_3 분류 실습(표준화, 결과분석) (3) | 2023.05.13 |
|---|---|
| kNN_2 분류 실습 (3) | 2023.05.10 |
| 기계학습(Machine Learning) 방법론 (2) | 2023.05.08 |
| 데이터 전처리_3 (0) | 2023.05.07 |
| 데이터 전처리_2 (1) | 2023.05.05 |