고전 머신러닝 도구
특징 벡터가 주어지면 어떤 분류기를 쓰고, 언제 어떤 것을 고르는가?
k-최근접 이웃 (k-NN)
k-NN은 가장 가까운 개 이웃의 다수결로 분류하는, 가장 직관적인 알고리즘이다. 따로 학습하는 단계 없이 학습 데이터를 모두 저장해 두고, 새 샘플이 들어오면 거리를 계산해 개 이웃을 찾는다.
| 선택 | 효과 | 위험 |
|---|---|---|
| (작은 ) | 결정 경계가 매우 복잡해 학습 데이터에 꼭 맞는다 | 과적합(overfitting): 잡음에 약하다 |
| 큰 | 결정 경계가 부드러워지고 잡음에 강해진다 | 과소적합(underfitting): 경계가 지나치게 단순하다 |
| 홀수 | 이진 분류에서 동점을 막는다 | 흔히 , 교차 검증(cross-validation)으로 정한다 |
k-NN은 유클리드 거리를 쓰므로 특징 스케일링이 꼭 필요하다. SNR(5~25 dB)과 엔트로피(0~4)를 그대로 쓰면 SNR이 거리를 지배하므로, z-score 표준화를 한 뒤에 적용한다.
결정 트리 (decision tree)
결정 트리는 데이터를 조건(rule)으로 되풀이해 나누는 트리 구조 모델이다. 내부 노드는 특징 하나에 대한 임계값 조건이고, 리프 노드(leaf)는 최종 클래스나 예측값이다.
노드마다 불순도(impurity)를 가장 많이 줄이는 특징과 임계값으로 나눈다. 분류에는 Gini 불순도나 information gain을, 회귀에는 분산 감소를 쓴다.
| 장점 | 단점 |
|---|---|
| 결정 과정을 직관적으로 해석할 수 있다("Doppler > 3 m/s이면 차량") | 데이터에 깊이 맞추면 과적합한다. max_depth 제한이 필요하다 |
| 특징 스케일링이 필요 없다(순위 기반 분할) | 데이터가 조금 바뀌어도 트리 구조가 크게 바뀔 수 있다(불안정) |
| 분류와 회귀를 모두 한다 | 혼자 쓰면 random forest보다 성능이 낮다 |
랜덤 포레스트 (random forest)
랜덤 포레스트는 결정 트리 개를 **앙상블(ensemble)**로 묶어 예측을 투표하는 방법이다. 각 트리는 두 가지 무작위성으로 서로 달라진다.
- bagging(bootstrap aggregating): 학습 데이터에서 복원 추출한 부분집합으로 각 트리를 학습한다.
- 특징 무작위 선택: 분할할 때마다 전체 특징 개 가운데 개만 후보로 쓴다.
랜덤 포레스트는 특징 중요도(feature importance)를 함께 준다. 어떤 특징이 분할에 많이 기여했는지 수치로 알 수 있어, 레이다 특징 선택과 도메인 검증에 쓸모가 크다.
서포트 벡터 머신 (SVM)
SVM은 두 클래스를 가르는 초평면(hyperplane) 가운데 마진이 가장 큰 것을 찾는다. 가장 가까운 샘플(서포트 벡터)을 지나며 초평면과 나란한 두 경계 사이의 폭이 마진(margin)이고, 그 크기가 이다.
그림에서 ▶를 누를 때마다 경계를 하나씩 시험한다. 경계의 방향을 정하면 두 클래스의 한가운데에 경계를 두고, 가장 가까운 점까지의 거리 의 두 배를 그 경계의 마진으로 잰다. 시험한 마진이 오른쪽 곡선에 점으로 쌓이고, 마지막 단계에서 마진이 가장 큰 경계와 그 경계를 정하는 서포트 벡터가 나온다.
점은 정규화한 특징 두 개로 정한 가상의 샘플이다. 오른쪽 곡선의 가로축은 경계의 법선 방향 θ, 세로축은 마진 2m이다.
법선이 15°인 경계의 마진은 0.77이고, 법선을 60°로 돌리면 0.14로 줄어든다. 방향을 1°씩 바꾸어 보면 마진은 35.2°에서 1.19로 가장 크다. 이 경계의 두 마진 경계에 닿는 점 세 개가 서포트 벡터이고, 나머지 점은 마진 경계 밖에서 조금 옮겨도 경계가 바뀌지 않는다. SVM의 경계를 정하는 것은 경계 가까이의 몇 점뿐이다.
선형으로 나뉘지 않는 데이터도 고차원 공간으로 옮기면 나뉠 수 있다. 이때 옮긴 좌표를 실제로 계산하지 않고 커널 함수로 내적 만 계산하면 효율적이다. 이 방법을 커널 트릭(kernel trick)이라 한다.
| 커널 | 식 | 알맞은 때 |
|---|---|---|
| RBF(Gaussian) | 가장 흔하다. 복잡한 비선형 경계 | |
| polynomial | 특징 사이의 곱 상호작용이 뜻이 있을 때 | |
| linear | 고차원 특징, 텍스트 분류. 특징 수 ≫ 샘플 수 |
알고리즘 고르기
| 상황 | 추천 알고리즘 | 이유 |
|---|---|---|
| 데이터가 매우 적다(200 샘플 미만) | k-NN 또는 SVM(RBF) | 파라미터가 적고, 적은 데이터에서도 안정적이다 |
| 해석 가능성이 중요하다(국방, 항공관제) | 결정 트리, 랜덤 포레스트 | "왜 이렇게 판단했는가"를 규칙으로 설명할 수 있다 |
| 특징 중요도를 분석해야 한다 | 랜덤 포레스트 | feature_importances_를 바로 준다 |
| 고차원 특징, 복잡한 클래스 경계 | SVM(RBF 커널) | 고차원에서도 마진 최대화가 효과적이다 |
| 빠르게 기준 성능을 보고 싶다 | 랜덤 포레스트 | 하이퍼파라미터 기본값에서도 성능이 높고 구현이 빠르다 |
| 실시간 임베디드(ECU 등) | 결정 트리 또는 k-NN(이웃 적게) | 추론이 간단한 규칙 비교나 거리 계산으로 끝난다 |
강의 노트