🧱 서포트 벡터 머신(SVM) 완전 정리 💡
“데이터를 가장 여유 있게 가르는 강력한 분류기!”
(회귀 버전: SVR ✨)
🎯 1️⃣ 개념 한 줄 요약
SVM은 두 클래스를 가장 넓은 ‘여유(마진)’로 구분하는 선(결정경계) 을 찾는 알고리즘이에요.
이 경계를 만드는 데 중요한 데이터들을 서포트 벡터(Support Vectors) 라고 부릅니다.
💬 쉽게 말하면,
“두 그룹을 구분하는 선을 그릴 때, 가장 안정적인 선을 찾는 모델이에요!”
🧠 2️⃣ SVM의 핵심 아이디어: 마진(Margin) 최대화
- 마진(Margin) : 경계선과 가장 가까운 데이터 포인트 간의 거리
- 목표 : 이 거리를 최대로 만드는 결정경계(초평면) 찾기
- 완벽히 분리 안 될 때는 👉 소프트 마진(Soft Margin) 으로 약간의 오차 허용
📌 핵심 문장
“완벽하게 나누는 것보다 여유 있게 나누는 것이 더 똑똑하다!”
⚙️ 3️⃣ 두 가지 중요한 하이퍼파라미터 💡
① C (규제 강도)
| C 값 | 특징 | 결과 |
| 🔺 크다 | 오분류 거의 허용 안 함 | 복잡한 경계 → 과적합 위험 |
| 🔻 작다 | 오분류 조금 허용 | 단순한 경계 → 과소적합 가능 |
💬 쉽게 말해,
“C는 모델의 엄격함을 조절하는 슬라이더예요!”
② γ (감마, RBF 커널에서 사용)
| γ 값 | 특징 | 결과 |
| 🔺 크다 | 각 점의 영향 범위 좁음 | 요철 많은 경계 → 과적합 위험 |
| 🔻 작다 | 영향 범위 넓음 | 부드러운 경계 → 과소적합 가능 |
💬 즉,
“γ는 각 점의 영향 반경 크기를 결정하는 파라미터예요.”
🎛️ 4️⃣ 커널 트릭(Kernel Trick) — 비선형 데이터 해결사!
선형으로 나눌 수 없는 데이터를 고차원으로 옮겨,
선형처럼 분리할 수 있게 도와주는 마법 같은 변환이에요. 🪄
| 커널 종류 | 특징 | 주로 사용하는 상황 |
| 🔹 선형(Linear) | 단순하고 빠름 | 텍스트처럼 고차원 희소데이터 |
| 🔸 다항(Polynomial) | 곡선 경계 가능 | 패턴이 복잡한 데이터 |
| 🌊 RBF(가우시안) | 가장 일반적 | 거의 모든 비선형 데이터 |
| 🌗 시그모이드 | 드물게 사용 | 신경망 형태와 유사할 때 |
✅ 기본 팁:
“먼저 Linear, 안 맞으면 RBF 써보기!”
🧩 5️⃣ 서포트 벡터와 손실 함수
- 서포트 벡터(Support Vectors)
- → 결정경계 근처에 있는 핵심 데이터들로, 실제로 경계를 결정하는 역할
- 힌지 손실(Hinge Loss)
- → 마진 바깥쪽은 패널티 없음,
- 경계 근처나 침범한 데이터만 손실 계산
💬 즉,
“SVM은 딱 중요한 데이터만 써서 선을 그리는 효율적인 모델이에요!”
🧪 6️⃣ 실무에서 자주 쓰는 설정들
✔ 스케일링 필수 – 거리 기반 모델이라 표준화 꼭 해야 함
✔ 불균형 데이터 – class_weight=’balanced’ 옵션으로 조정
✔ 다중분류 – OvR(One vs Rest) 또는 OvO(One vs One) 전략 사용
✔ 확률 예측 – 기본적으로 확률 아님! → probability=True로 설정 시 가능
✔ 튜닝 팁 – 교차검증(k-Fold) + GridSearchCV로 C, γ 조정
📊 7️⃣ 평가 & 해석 포인트
- 평가지표: Accuracy, F1, Recall, ROC-AUC
- 비선형 커널 사용 시 해석 어려움 (로지스틱 회귀보다 덜 직관적)
- 서포트 벡터 개수 많음 → 경계 복잡 → 과적합 위험 신호 🚨
🔬 8️⃣ SVM vs 다른 모델 비교
| 모델 | 장점 | 단점 | 유리한 상황 |
| 🧱 SVM | 고차원, 비선형에 강함 | 확률 출력 어려움 | 데이터 크기 중간, 경계 뚜렷할 때 |
| 📊 로지스틱 회귀 | 해석력 좋음(계수 의미) | 비선형 약함 | 단순한 선형 관계 문제 |
| 🌳 트리/앙상블 | 범주형/비선형에 강함 | 많은 데이터 필요 | 복잡한 데이터 패턴 |
🧰 9️⃣ 하이퍼파라미터 튜닝 순서
1️⃣ 데이터 스케일링 (Train 데이터 기준)
2️⃣ Linear SVM으로 기본 성능 확인
3️⃣ RBF로 확장 후 C, γ 조합 탐색
4️⃣ Stratified k-Fold로 교차검증
5️⃣ 최적 모델로 전체 데이터 재학습 → Test 1회 평가
🧮 10️⃣ 직관으로 이해하기
- C 크게 → “오분류 싫어!” → 복잡한 경계 (과적합 ⚠️)
- C 작게 → “조금 틀려도 돼~” → 부드러운 경계 (일반화 👍)
- γ 크게 → “한 점에만 민감!” → 요철 많은 경계
- γ 작게 → “넓게 보고 판단!” → 완만한 경계
📦 11️⃣ 보너스 🎁 — SVM 회귀(SVR)
분류가 아니라 수치 예측을 하고 싶을 때 쓰는 버전이에요.
- Epsilon-Insensitive Loss : 오차가 ε 안에 있으면 무시, 그 밖만 벌점
- 파라미터 : C(규제), ε(허용폭), γ(RBF용)
- 장점 : 이상치에 강하고, 비선형 회귀 가능
🧾 12️⃣ ADsP 시험 핵심 요약 ✍️
✅ 마진 최대화 & 서포트 벡터 개념
✅ Soft Margin → C로 오분류 허용 조절
✅ 커널 트릭: 선형 / 다항 / RBF 구분
✅ C, γ 변화에 따른 과적합·과소적합 직관
✅ 스케일링 필수
✅ 불균형 시 class_weight=’balanced’
✅ SVM은 기본 확률 출력 ❌
✅ 다중분류: OvR / OvO 전략 사용
🌈 마무리 한 줄 요약
💡 SVM = “가장 여유 있게 데이터를 나누는 선(경계)”을 찾는 모델!
C(엄격함)와 γ(영향 반경)를 잘 조절하고,
스케일링 + 교차검증까지 챙기면 💪 최고의 분류기 완성!