SVM 최대 마진 분류: 선형·RBF 커널과 C 매개변수
SVM의 최대 마진 분류 원리와 선형·RBF 커널 선택, 힌지 손실, C·감마 튜닝 및 운영 고려사항을 정리한다.
2026-08-14 · 최초 발행 2024-04-29
마진을 넓혀 분류 경계를 정하는 방식
SVM(Support Vector Machine)은 결정 경계와 가장 가까운 학습 표본 사이의 마진을 최대화하는 분류기다. 경계 형성에 직접 영향을 주는 표본은 서포트 벡터이며, 모델은 이 표본들을 중심으로 규정된다.
비선형 문제에는 커널 트릭을 사용한다. 고차원 특징 공간으로 명시적으로 변환하지 않고도 커널 함수로 내적을 계산해 선형 분리가 가능한 형태를 다룬다. 대표적인 선택지는 선형 커널과 RBF(Gaussian) 커널이다.
힌지 손실은 예측 마진이 1보다 작을 때 선형 페널티를 부과한다. 소프트 마진은 오분류와 마진 위반을 일부 허용하며, L2 규제와 결합해 경계의 복잡도를 제어한다. C 매개변수는 마진 최대화와 훈련 오류 최소화 사이의 균형을 조절한다. C가 크면 오분류 허용이 줄어들어 경계가 복잡해지는 경향이 있고, C가 작으면 규제가 강해져 경계가 단순해진다.
데이터 구조에 따라 달라지는 커널 선택
선형 커널은 특징 수가 표본 수보다 매우 큰 희소 고차원 데이터에서 확장성과 안정성을 보인다. 문서 분류처럼 희소한 특징을 다루는 경우에 적합하며, 모델 해석과 학습·추론 속도 측면에서도 유리하다.
RBF 커널은 비선형 결정 경계가 필요한 경우에 표현력을 제공한다. 이때 감마(γ)는 경계의 곡률과 과적합 정도에 큰 영향을 준다. 감마와 C를 함께 크게 잡으면 과적합 위험이 커지고, 둘을 함께 낮추면 과소적합 위험이 있다.
커널 SVM은 SMO 등의 이중 문제(dual) 해법을 사용한다. 메모리와 시간 복잡도가 O(n^2) 이상이어서 표본이 커지면 비효율적일 수 있다. 반대로 선형 SVM은 좌표 하강이나 Liblinear류 최적화를 사용해 대규모 희소 데이터에 맞는다.
| 항목 | 선형 커널 | RBF 커널 |
|---|---|---|
| 성능 | 선형 분리 가능 데이터에서 우수함 | 비선형 경계에서 우수함 |
| 확장성 | 대규모·희소 데이터에 최적 | 표본 증가 시 학습·메모리 부담 큼 |
| 일관성 | 해석 용이, 규제 효과 명확 | 감마·C 상호작용으로 민감도 높음 |
| 안정성 | 과적합 위험 낮음 | 파라미터 튜닝 실패 시 과적합 위험 |
| 운영 편의 | 빠른 학습·추론, 파이프라인 단순 | 튜닝·검증 비용 높음, 캐시/메모리 고려 필요 |
데이터 준비와 평가를 연결하는 흐름
스케일 불균형은 마진과 커널 거리 계산을 왜곡할 수 있으므로 표준화나 정규화가 필요하다. 클래스가 불균형하면 class_weight를 적용할 수 있고, 확률 출력이 필요할 때는 Platt scaling 또는 Isotonic으로 후처리한다.
선형 SVM은 C만 로그스케일로 탐색해도 충분하다. RBF SVM은 C와 γ를 함께 탐색해야 한다. 과적합이 보이면 γ 또는 C를 낮추고, 과소적합이면 γ 또는 C를 높이는 방식으로 조정한다.
커널 SVM은 표본 수가 늘수록 학습과 추론 비용이 모두 커질 수 있다. 샘플링, Nystrom, 랜덤 특성 같은 근사 기법을 고려할 수 있다. 선형 SVM은 온라인 업데이트와 주기적 재학습에 유리하다.
분류 문제에서의 적용 방식
문서·스팸 분류에서는 TF-IDF 벡터와 희소 행렬 스케일링을 입력으로 사용하고, Linear SVM에 C 로그스케일 그리드 서치와 교차검증을 적용할 수 있다. 높은 정확도와 속도를 기대할 수 있으며 중요 단어 해석도 가능하다.
제조 결함 감지에서는 공정 센서 시계열에서 통계·주파수 특징을 추출하고 표준화한 뒤, SVC(RBF)에 C·γ 그리드 또는 베이즈 최적화를 적용한다. 이 경우 재현율을 우선하는 튜닝으로 복잡한 결함 패턴에 대응한다.
신용·사기 탐지는 거래 특징 엔지니어링과 스케일링, class_weight='balanced' 적용이 출발점이다. RBF 또는 선형 커널을 선택한 다음 임계값 조정과 Platt scaling으로 확률 출력을 보정해 비용 민감도를 반영한 F1/Recall 개선을 노린다.
소규모 이미지 분류에서는 SIFT/HOG 같은 고정 특징이나 임베딩을 추출해 스케일링하고, C·γ를 튜닝한다. 데이터 증강을 함께 적용하면 적은 데이터에서도 CNN 대비 경쟁력을 유지할 수 있다.
텍스트 분류에서는 Logistic Regression 대비 13%p 정확도 개선 사례가 빈번하며 데이터 의존적이다. 비선형 데이터셋에서는 RBF SVM이 선형 모델보다 AUC를 25%p 개선할 수 있다. 고차원 소표본 환경에서는 안정적인 일반화를 확보할 수 있고, 하이퍼파라미터가 명료해 운영과 튜닝 절차를 표준화하기 쉽다.
Scikit-learn 파이프라인 예제
전제: Python 3.10+, scikit-learn 1.4+, numpy/scipy 설치됨.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC, SVC
from sklearn.model_selection import GridSearchCV, StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=5000, n_features=200, n_informative=20, random_state=42)
# 1) 선형 SVM 파이프라인
linear_pipe = Pipeline([
("scaler", StandardScaler(with_mean=False)), # 희소 행렬일 경우 with_mean=False 권장
("clf", LinearSVC(loss="hinge", dual=True, random_state=42))
])
linear_params = {"clf__C": [0.01, 0.1, 1, 10]}
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
linear_search = GridSearchCV(linear_pipe, linear_params, cv=cv, n_jobs=-1)
linear_search.fit(X, y)
print("Linear best C:", linear_search.best_params_)
print(classification_report(y, linear_search.predict(X)))
# 2) RBF SVM 파이프라인
rbf_pipe = Pipeline([
("scaler", StandardScaler()),
("clf", SVC(kernel="rbf", class_weight="balanced", probability=True, random_state=42))
])
rbf_params = {
"clf__C": [0.1, 1, 10],
"clf__gamma": ["scale", 0.01, 0.1]
}
rbf_search = GridSearchCV(rbf_pipe, rbf_params, cv=cv, n_jobs=-1)
rbf_search.fit(X, y)
print("RBF best params:", rbf_search.best_params_)
print(classification_report(y, rbf_search.predict(X)))
LinearSVC는 대규모·희소 데이터에 적합하다. RBF SVC는 probability=True로 Platt scaling 기반 확률 보정을 동시에 수행한다.