5-1
Shared on April 2, 2026
K-Nearest Neighbors (KNN) 및 서포트 벡터 머신(SVM) 개요
개요
- KNN: 학습 단계가 없고, 새로운 데이터가 들어오면 학습 데이터와의 거리를 계산해 가장 가까운 K개의 이웃을 찾고 다수결(또는 거리 가중)로 클래스를 결정한다.
- SVM: 데이터 포인트 간의 마진을 최대화하는 결정 경계를 찾는 모델로, 하드/소프트 마진과 커널 트릭을 통해 비선형 분류를 수행한다.
핵심 개념
- 거리 측정
- 유클리디안 거리
- 맨해튼 거리
- 민코프스키 거리 (P값 조정)
- k 값 선택
- 보통 √(학습 데이터 수) 기준, 홀수로 설정하여 투표 동률 방지
- 교차 검증으로 최적 k 탐색
- 가중 투표
- 단순 다수결 → 거리 가중(거리 가깝을수록 투표 가중치 증가)
- 스케일링
- 거리 기반이므로 각 특성의 범위가 비슷해야 함
- 계산 복잡도
- O(n·d) (n: 데이터 수, d: 차원) → 대규모 데이터 시 느림
- 트리 기반 가속
- KD-트리, Ball-트리 등으로 검색 범위 축소
- SVM 핵심 요소
- 결정 경계: 클래스 구분선
- 마진: 경계와 가장 가까운 포인트까지 거리 × 2
- 서포트 벡터: 마진 경계에 놓인 포인트
- 하드 마진: 오분류 허용 없음
- 소프트 마진: 오분류 허용, 정규화 파라미터 C 사용
- 커널 트릭: 비선형 데이터에 대해 고차원 공간으로 매핑 없이 유사하게 동작
상세 노트
KNN 동작 원리
- 새로운 샘플
xq가 들어오면 학습 데이터 전체와 거리를 계산 - 거리 정렬 → 가장 가까운
k개의 이웃 선택 - 클래스 확인 → 다수결(또는 거리 가중)으로
xq의 클래스 결정
중요: 학습 단계가 없으므로 모델 저장만 필요하지만, 예측 시 모든 데이터와 거리 계산이 필요해 대규모에서는 비효율적.
거리 계산 방법
- 유클리디안:
√(∑(xi - yi)²) - 맨해튼:
∑|xi - yi| - 민코프스키:
(∑|xi - yi|^p)^(1/p)p=1→ 맨해튼,p=2→ 유클리디안
k 값 결정
- 일반적으로
k = √N(N: 학습 데이터 수) - 홀수로 설정해 투표 동률 방지
- 교차 검증(Validation Set)으로 최적 k 탐색 → 테스트 세트로 최종 검증
가중 투표
- 가장 가까운 이웃에 높은 가중치를 부여
- 거리 가중:
weight_i = 1 / distance_i(또는 거리의 역수) - 다수결보다 더 정밀한 분류 가능
스케일링 및 차원
- 스케일링: Min-Max, Standardization 등으로 범위 통일
- 차원의 저주: 차원이 늘어나면 거리 계산이 무의미해짐 → 차원 축소(주성분분석 등) 필요
트리 기반 가속
- KD-트리, Ball-트리 등으로 검색 공간 절약
- Brute-Force: 모든 데이터와 거리 계산 → 가장 느림
- 트리 학습이 필요 → KNN이 아닌 “트리 학습 + KNN” 형태
SVM 기본 구조
- 결정 경계: 두 클래스 사이의 선(또는 하이퍼플레인)
- 마진: 경계와 가장 가까운 포인트까지의 거리 × 2
- 서포트 벡터: 마진 경계에 있는 포인트
- 하드 마진: 오분류 허용 없음 → 완벽히 분리 가능한 경우
- 소프트 마진: 오분류 허용 → 정규화 파라미터
C조정
커널 트릭
- 비선형 분포를 선형 분류기로 처리하기 위해 고차원 공간에 매핑
- 실제로는 고차원으로 확장하지 않고 커널 함수를 사용해 내부적으로 계산
- 대표 커널: 선형, 다항식, RBF(Radial Basis Function)
Takeaway: KNN은 구현이 단순하고 비선형 데이터에 강하지만, 대규모 데이터에서는 느리고, SVM은 마진을 최대화해 일반화 성능이 뛰어나지만 파라미터 튜닝이 필요하다.