에듀테크 프로젝트 대시보드
k-최근접 이웃 (KNN)
새 데이터가 어느 그룹인지 궁금하면 제일 가까운 이웃 k명에게 물어보고 다수결로 정한다.
수식도, 학습 단계도 없다. 그냥 모든 훈련 데이터를 통째로 외워 두었다가, 질문이 들어오면
그때 거리를 재서 답한다 — 그래서 게으른 학습(lazy learning)이라 부른다.
아래 판을 눌러(또는 드래그해) ? 점을 옮기면서, k에 따라 판정이 어떻게
바뀌는지, 그리고 결정 경계(decision boundary)가 어떤 모양이 되는지 살펴보자.
색칠된 점은 이미 정답을 아는 훈련 데이터, 흰 테두리 ? 는 분류하려는 새 점이다.
? 에서 가까운 순서로 k개를 잇는 선이 그어지고, 그 k개의
색 중 가장 많은 색으로 ? 가 판정된다. 판 아무 곳이나 누르면 ? 가 그리로 이동한다.
새 점과 모든 훈련 데이터 사이 거리를 계산한다.
보통 유클리드 거리 √(Δx²+Δy²) 를 쓴다.
거리를 오름차순 정렬해 가장 가까운
k개의 이웃만 남긴다.
그 k개의 라벨을 세어 최다 득표 클래스로 판정.
동점을 피하려고 k는 보통 홀수로 둔다.
가까운 이웃에 더 큰 표(1/거리)를 주는 가중 KNN, 라벨 대신 평균값을 내는 KNN 회귀도 있다.
이웃 딱 하나만 보면 이상치(노이즈) 한 점에 통째로 휘둘린다. 훈련 정확도는 100%지만 새 데이터에는 약한 과적합.
키(㎝)와 몸무게(㎏)처럼 단위가 다르면 숫자 큰 축이 거리를 독점한다. 각 특성을 0~1 또는 표준점수로 맞춰야 공정하다.
특성이 수십 개면 모든 점이 고만고만하게 멀어져 "가까운 이웃"이 의미를 잃는다. 차원 축소나 특성 선택이 필요.
A가 900개, B가 100개면 큰 k에서 어디를 찍어도 A로 쏠린다.
거리 가중 투표나 표본 균형이 해법.
k는 보통 교차 검증으로 여러 값을 시험해 고른다.
흔한 출발점은 k ≈ √n (n = 훈련 데이터 수).
| KNN | k-평균 | |
|---|---|---|
| 학습 종류 | 지도 학습 (라벨 필요) | 비지도 학습 (라벨 없음) |
| k의 의미 | 참고할 이웃 수 | 만들 군집(중심점) 수 |
| 하는 일 | 새 점 분류 | 데이터 그룹핑 |
| 반복 | 없음 (한 번에 계산) | 할당↔이동 반복 수렴 |