K-최근접 이웃(KNN)
새로운 데이터와 가까운 관측값을 찾아, 이웃들의 품종을 바탕으로 분류하는 방법입니다.
처음 보는 야생 꽃의 품종을 어떻게 구분할 수 있을까요? 꽃잎의 길이와 너비가 기존에 관찰한 꽃들과 비슷하다면 같은 품종일 가능성이 높을까요? 주변에 서로 다른 품종이 섞여 있다면 어떤 기준으로 판단할 수 있을까요?
이처럼 새로운 관측값과 가까운 데이터들을 찾아 그 이웃들의 정보를 바탕으로 품종을 예측하는 방법이 K-최근접 이웃(K-Nearest Neighbors, KNN)입니다. 미리 복잡한 분류식을 구하기보다 저장된 학습자료와의 거리를 계산한다는 특징이 있습니다.
판별분석은 집단별 분포를 가정하고 결정경계를 구하며, SVM은 집단을 구분하는 마진을 최적화합니다. 반면 KNN은 새 꽃의 주변에 어떤 품종이 얼마나 모여 있는지를 직접 살펴 분류합니다. 이웃의 수 K와 거리의 정의에 따라 결과가 달라질 수 있습니다.
KNN은 생물 분류, 유사 고객 분류, 패턴 인식, 추천, 기초 예측 모델 등에 활용할 수 있습니다. 이번 글에서는 야생 꽃의 측정값으로 KNN의 작동 원리, K값 설정, 거리와 표준화, 분류 결과 읽는 방법, 다른 모델과의 차이, 분석할 때 주의할 점까지 살펴보겠습니다.
KNN이란 무엇인가요?
가까운 관측값의 정보를 활용하여 새로운 관측값을 분류하는 지도학습 방법입니다.
학습자료에는 품종을 이미 알고 있는 꽃의 꽃잎 길이·너비와 꽃받침 길이·너비가 기록되어 있습니다. 새로운 꽃이 들어오면 이 네 측정값이 비슷한 학습자료를 찾습니다. 분류 문제에서는 가장 가까운 K개의 품종을 비교하여 가장 많이 나타난 품종으로 예측하는 방식이 기본입니다.
KNN은 별도의 선형 경계나 정규분포 가정이 반드시 필요하지 않습니다. 다만 무엇을 가깝다고 판단할지를 정하는 거리 측도와 변수의 단위가 결과에 직접 영향을 줍니다.
KNN은 왜 필요한가요?
복잡한 함수를 미리 정하지 않고 관측값의 유사성으로 분류하고 싶을 때 유용합니다.
꽃의 품종을 구분하는 기준이 꽃잎 길이 하나로 명확하게 나뉘지 않더라도 여러 측정값을 함께 보면 비슷한 품종끼리 모일 수 있습니다. KNN은 이런 국소적인 구조를 분류에 활용합니다.
초기 비교 모델로 이해하기 쉽고 여러 품종을 한 번에 분류할 수 있지만, 학습자료가 매우 크면 새로운 꽃마다 이웃을 검색하는 계산 부담이 커질 수 있습니다. 데이터의 차원이 높아질수록 거리의 의미가 약해지는 문제도 있습니다.
KNN은 어떤 원리로 작동하나요?
거리 계산 → 가까운 K개 선택 → 다수결의 순서로 예측합니다.
① 꽃의 측정값을 좌표로 나타냅니다
꽃잎과 꽃받침의 길이·너비가 입력변수가 됩니다. 그림은 이해를 돕기 위해 꽃잎 두 변수만 표시한 것으로, 실제 분류는 네 변수를 함께 사용할 수 있습니다.
② 새 꽃과 학습자료 사이의 거리를 계산합니다
유클리드 거리를 사용하는 경우 변수별 차이를 제곱하여 더한 뒤 제곱근을 취합니다. 다른 거리 측도를 사용할 수도 있으며 입력변수의 단위가 비슷해야 합니다.
③ 가장 가까운 K개의 꽃을 고릅니다
K=5라면 다섯 이웃을 찾아 각 이웃의 품종을 확인합니다. 거리 기반 가중치를 설정하면 가까운 이웃에 더 많은 표를 줄 수도 있습니다.
④ 가장 많은 표를 얻은 품종을 예측합니다
예를 들어 다섯 꽃의 품종이 A 1개, B 3개, C 1개라면 새 꽃은 B로 분류합니다. 같은 표가 나오는 경우를 위한 처리 규칙도 정해야 합니다.
실제 사례: 야생 꽃의 품종 분류
꽃의 네 가지 측정값으로 세 품종을 구분합니다.
연구자가 가상의 야생 꽃 180송이를 수집했다고 가정합니다. 세 품종 A·B·C가 각각 60송이이며, 개별 꽃의 꽃잎 길이·너비와 꽃받침 길이·너비를 기록했습니다.
| 변수 | 자료 예시 | 분석 역할 |
|---|---|---|
| 꽃잎 길이 | 2.9 cm | 예측변수 |
| 꽃잎 너비 | 1.0 cm | 예측변수 |
| 꽃받침 길이 | 5.6 cm | 예측변수 |
| 꽃받침 너비 | 2.8 cm | 예측변수 |
| 품종 | A / B / C | 분류할 목표값 |
전체 180송이 중 135송이를 학습자료로, 45송이를 최종 평가자료로 사용합니다. 각 품종이 평가자료에 15송이씩 포함되도록 층화 분할했다고 가정합니다. 아래 분류 결과는 개념 설명을 위해 구성한 가상 수치입니다.
분석 전 무엇을 확인해야 하나요?
거리의 의미를 바꾸는 단위와 측정 오류를 먼저 살펴봅니다.
| 확인 항목 | 점검 내용 | 이유 |
|---|---|---|
| 자료 단위 | 네 측정값 모두 cm인지 확인 | 거리 계산의 일관성 |
| 변수 분포 | 범위와 이상값 확인 | 특정 변수가 거리 지배 방지 |
| 표준화 | 학습자료로 변환 기준 계산 | 변수 간 규모 차이 조정 |
| 중복 개체 | 같은 꽃을 반복 측정했는지 확인 | 학습·평가 누수 방지 |
| 집단 비율 | 품종별 표본 수 점검 | 소수 품종 평가의 신뢰성 |
| 새로운 환경 | 다른 계절·지역 표본 포함 여부 | 적용 범위 확인 |
KNN 분석은 어떤 순서로 진행하나요?
학습·평가 분리, 거리 정의, K 선택, 최종 평가 순서로 진행합니다.
① 목표값과 측정변수를 정합니다
품종을 정답으로, 꽃잎과 꽃받침의 네 측정값을 입력변수로 설정합니다.
② 학습자료와 평가자료를 분리합니다
평가자료 45송이는 마지막 확인용으로 남기고, 학습자료 135송이 안에서 교차검증으로 설정값을 선택합니다.
③ 표준화와 거리·가중치 방식을 결정합니다
기본적인 유클리드 거리, 맨해튼 거리, 동일 가중치와 거리 가중치를 비교할 수 있습니다.
④ 교차검증으로 K를 선택합니다
여러 K값을 동일한 교차검증 절차로 평가하고 검증 성능과 안정성을 함께 확인합니다.
⑤ 최종 평가자료에서 성능을 확인합니다
K를 정한 다음 남겨둔 평가자료를 한 번 사용해 혼동행렬과 품종별 정밀도·재현율을 계산합니다.
K값은 어떻게 정하나요?
작은 K는 주변의 작은 변화에 민감하고, 큰 K는 더 넓은 범위를 참고합니다.
| K | 특징 | 주의할 점 |
|---|---|---|
| K=1 | 가장 가까운 꽃 한 송이의 품종으로 판정 | 잡음·이상값에 민감 |
| K=3 | 가까운 세 송이의 다수결 사용 | 국소적인 패턴 반영 |
| K=5 | 다섯 송이의 품종을 종합 | 경계가 비교적 안정적일 수 있음 |
| K=15 | 더 넓은 주변의 분포 반영 | 소수 패턴이 묻힐 수 있음 |
K가 작다고 항상 정확한 것도, 홀수라고 항상 옳은 것도 아닙니다. 세 품종 분류에서는 홀수 K에도 동률이 발생할 수 있습니다. 이번 예제에서는 학습자료 내부 교차검증에서 K=5를 선택했다고 가정합니다.
분류 결과는 어떻게 해석하나요?
전체 정확도뿐 아니라 어떤 품종을 서로 혼동했는지도 확인합니다.
가상의 평가자료 45송이를 K=5로 분류한 결과입니다. 행은 실제 품종이고 열은 예측 품종입니다.
| 실제 \ 예측 | A | B | C | 합계 |
|---|---|---|---|---|
| A | 14 | 1 | 0 | 15 |
| B | 1 | 12 | 2 | 15 |
| C | 0 | 2 | 13 | 15 |
| 합계 | 15 | 15 | 15 | 45 |
전체 정확도는 86.7%(39/45)입니다. A 품종의 재현율은 93.3%(14/15), B는 80.0%(12/15), C는 86.7%(13/15)입니다. B와 C가 서로 혼동되는 사례가 있으며, 단순 정확도만으로는 이런 차이를 알기 어렵습니다.
거리와 변수 표준화는 결과에 어떤 영향을 주나요?
K가 같아도 거리 계산 방식에 따라 이웃이 달라집니다.
예를 들어 꽃잎 길이는 수 cm이고 어떤 추가 센서값이 수백 단위로 측정된다면, 단순 유클리드 거리에서는 센서값이 유사성 판단을 대부분 좌우할 수 있습니다. 표준화를 하면 변수별 규모를 맞출 수 있지만, 의미 없는 변수까지 동일한 중요도로 취급할 수 있으므로 변수 선택도 중요합니다.
| 선택 | 의미 | 검토할 사항 |
|---|---|---|
| 유클리드 거리 | 변수별 차이의 제곱합에 기반 | 크게 벌어진 값에 민감 |
| 맨해튼 거리 | 변수별 절대 차이의 합 | 축별 차이를 더함 |
| 균등 가중치 | K개 이웃을 같은 표로 처리 | 먼 이웃도 같은 영향 |
| 거리 가중치 | 가까운 이웃에 더 높은 영향 | 아주 가까운 잡음에 민감할 수 있음 |
거리의 절대적인 크기 자체보다 어떤 관측값이 가까운 이웃으로 선택되는지가 분류 결과에 중요합니다. 변수와 거리 방식을 바꾸었다면 K도 다시 교차검증으로 선택해야 합니다.
KNN에서 주의해야 할 점
가까움이 실제 유사성을 뜻하는지 확인해야 합니다.
평가자료까지 이용해 표준화하지 않았나요?
전체 자료의 통계량으로 표준화한 다음 분할하면 평가자료 정보가 학습 과정에 섞입니다.
차원이 너무 높지 않나요?
변수 수가 많아지면 대부분의 관측값 사이 거리가 비슷해질 수 있습니다. 의미 있는 변수를 선정하거나 차원 축소를 검토해야 합니다.
K를 한 번만 시도했나요?
K=1 또는 K=5가 언제나 적절하지는 않습니다. 교차검증에서 다양한 후보를 비교합니다.
학습과 평가에 같은 개체가 섞여 있나요?
같은 꽃의 반복 측정값이 양쪽에 있으면 분류 성능이 부풀려질 수 있습니다. 개체 또는 채집 장소 단위 분할을 검토합니다.
다른 지역의 꽃에도 통할까요?
채집 시기·장소에 따라 꽃의 크기가 달라질 수 있습니다. 학습자료의 범위를 벗어나는 새로운 품종에 대해서도 KNN은 기존 품종 중 하나를 선택할 수 있습니다.
다른 분석과 어떻게 다른가요?
모두 분류에 쓰이지만 학습하는 기준은 다릅니다.
| 분석 방법 | 핵심 방식 | KNN과의 차이 |
|---|---|---|
| KNN | 가장 가까운 K개 이웃으로 예측 | 직접 거리 비교 |
| 판별분석(LDA/QDA) | 집단별 분포·공분산을 이용 | 분포 가정에 기반 |
| SVM | 마진을 고려한 결정경계 학습 | 이웃보다 경계에 초점 |
| 로지스틱 회귀 | 집단 확률을 모형화 | 계수 해석이 용이 |
| 결정트리 | 변수별 조건으로 자료 분할 | 규칙 구조가 비교적 명확 |
KNN에는 분류 외에 가까운 관측값의 결과값을 평균 내는 KNN 회귀도 있습니다. 다만 여기서 다루는 것은 품종을 선택하는 KNN 분류입니다.
KNN 결과는 어떻게 보고하나요?
데이터 분할과 거리·K 선택 과정, 분류 오류를 함께 보고합니다.
실제 결과에는 표본 수, 품종별 개수, 사용한 측정변수, 표준화 방법, 거리 측도, 이웃 수와 가중치, 교차검증 방식, 독립 평가자료에서의 품종별 오류를 포함해야 합니다. 가능하면 성능의 불확실성도 함께 제시합니다.
야생 꽃의 품종을 분류하기 위해 꽃잎 및 꽃받침의 길이와 너비를 입력변수로 하여 K-최근접 이웃(KNN) 분류를 적용하였다. 전체 180송이 중 135송이를 학습자료, 45송이를 최종 평가자료로 사용하고 학습자료 내부의 교차검증으로 K=5를 선택하였다. 가상의 최종 평가자료에서 정확도는 86.7%(39/45)였으며, 품종 A·B·C의 재현율은 각각 93.3%, 80.0%, 86.7%였다. 이 수치는 방법 설명을 위한 가상 예시이다.
교차검증 과정에서 변환과 K 선택이 진행되었다는 점, 최종 평가자료를 모형 선택에 재사용하지 않았다는 점을 명시하면 결과를 재현하고 평가하기 쉽습니다.
KNN은 어디에 활용할 수 있나요?
관측값의 유사성을 활용할 수 있는 여러 분류·예측 문제에 적용됩니다.
| 활용 분야 | 예측할 대상 | 입력변수 예시 |
|---|---|---|
| 생물 분류 | 꽃·식물 품종 | 꽃잎·꽃받침 측정값 |
| 고객 분석 | 고객 유형 | 구매빈도·지출액 |
| 의료 연구 | 환자군 구분 | 측정된 임상 특성 |
| 제품 품질관리 | 정상·불량 | 센서 측정값 |
| 문서 분류 | 주제 범주 | 텍스트 특징 벡터 |
KNN을 선택할 때는 단순히 분류할 수 있는지뿐 아니라 데이터가 충분히 대표적인지, 새로운 관측값과의 거리 계산이 실제 문제에서 의미 있는지, 추론 속도가 적절한지를 함께 확인하는 것이 좋습니다.
KNN은 새로운 관측값의 주변에 어떤 데이터가 있는지를 살펴 분류하는 방법입니다.
가까운 이웃을 찾는 기준과 K값이 분류 결과를 결정합니다.
야생 꽃의 품종을 분류할 때 KNN은 꽃잎과 꽃받침의 측정값이 비슷한 꽃들을 찾아 새로운 꽃의 품종을 판단합니다. 별도의 복잡한 수식을 먼저 가정할 필요는 없지만, 어떤 변수를 사용하고 거리를 어떻게 계산하느냐에 따라 가장 가까운 이웃이 달라집니다. K값이 너무 작으면 개별 관측값의 잡음에 민감해지고, 지나치게 크면 품종 사이의 작은 차이를 놓칠 수 있습니다.
따라서 KNN을 사용할 때는 학습자료에서만 전처리 기준을 계산하고, 교차검증으로 K와 거리 방식을 정한 뒤 별도의 평가자료에서 분류 오류를 확인해야 합니다. 전체 정확도 외에 품종별 재현율과 혼동행렬을 함께 살펴보면 어떤 꽃들을 구분하기 어려운지도 알 수 있습니다. 데이터의 유사성이 실제로 품종의 유사성을 반영하는지 검토하는 일 역시 결과 해석에서 빠질 수 없습니다.
KNN은 가장 가까운 K개의 관측값으로 새 자료의 품종을 분류합니다. 거리 측도·표준화·K값은 분류 결과에 직접 영향을 주므로 학습자료 내부에서 선택해야 합니다. 정확도와 함께 품종별 혼동행렬과 재현율을 확인해야 실제 분류 성능을 이해할 수 있습니다.