SVM — 마진을 최대화해 최적의 결정 경계를 찾는 알고리즘

SVM이 서포트 벡터와 마진 최대화로 최적 초평면을 찾는 원리, 커널 트릭을 통한 비선형 분류, 소프트 마진과 하이퍼파라미터 C·gamma, 실전 튜닝 전략을 정리한다.

2026-08-13 · 최초 발행 2025-05-23

두 클래스를 가르는 선은 무수히 많다. SVM(Support Vector Machine)은 그중에서 양쪽 클래스 데이터와 가장 멀리 떨어진 하나만을 고른다. 1990년대 초반 개발된 이후 패턴 인식과 데이터 분석에서 높은 성능을 보이며 널리 쓰이고 있다.

마진을 최대화하는 경계 하나를 고른다

SVM의 목표는 서로 다른 클래스의 데이터를 분리하는 최적의 초평면(Hyperplane)을 찾는 것이다. 양쪽 클래스 데이터와 최대한 멀리 떨어진 의사결정 경계를 만드는 **최대 마진 분류기(Maximum Margin Classifier)**가 핵심 개념이며, 의사결정 경계에 가장 가까운 데이터 포인트들을 서포트 벡터(Support Vector), 의사결정 경계와 서포트 벡터 사이의 거리를 **마진(Margin)**이라 부른다.

SVM의 핵심은 이 마진을 최대화하는 것이고, 이는 일반화 성능을 높이는 데 기여한다. 마진이 클수록 새로운 데이터에 대한 분류 오류 가능성이 줄어든다.

초평면을 수식으로 쓰면

선형 SVM에서 초평면은 다음과 같이 표현된다.

w·x + b = 0

여기서 w는 가중치 벡터(weight vector), x는 입력 벡터(input vector), b는 편향(bias)이다.

분류는 다음 규칙을 따른다.

  • w·x + b > 0 이면 클래스 1
  • w·x + b < 0 이면 클래스 -1

최적의 초평면을 찾기 위한 최적화 문제는 다음과 같다.

최소화: ||w||²/2
제약조건: yi(w·xi + b) ≥ 1 (모든 i에 대해)

여기서 yi는 i번째 샘플의 클래스 레이블(+1 또는 -1)이다.

커널 트릭으로 비선형 문제 풀기

비선형 분류 문제에서 SVM은 '커널 트릭'을 활용해 원본 특성 공간을 더 높은 차원의 공간으로 매핑한다.

커널 함수원본 데이터 공간고차원 특성 공간선형 분류 가능한 공간

주요 커널 함수는 다음과 같다.

  1. 선형 커널(Linear): K(x, y) = x·y
  2. 다항식 커널(Polynomial): K(x, y) = (γx·y + r)^d
  3. 가우시안 RBF 커널(Gaussian RBF): K(x, y) = exp(-γ||x-y||²)
  4. 시그모이드 커널(Sigmoid): K(x, y) = tanh(γx·y + r)

커널 함수를 쓰면 계산 복잡도를 크게 늘리지 않으면서 비선형 문제를 해결할 수 있다.

고차원에 강한 대신 데이터 규모에 약하다

고차원 공간에서도 효과적으로 작동하고, 서포트 벡터만 저장하면 되는 메모리 효율성을 갖췄다. 다양한 커널 함수를 쓸 수 있고 과적합에 강한 내성이 있으며, 이론적 기반도 탄탄하다.

반면 대규모 데이터셋에서는 훈련 시간이 길고, 커널·C·gamma 등 하이퍼파라미터 튜닝이 필요하다. 확률적 출력이 기본적으로 제공되지 않고, 특성 수가 샘플 수보다 많을 때는 성능이 떨어진다.

C와 gamma가 결정 경계를 바꾼다

**C(규제화 매개변수)**는 오분류에 대한 페널티 정도를 결정한다. 작은 C는 더 부드러운 의사결정 경계를 만들어 일부 오분류를 허용하고, 큰 C는 더 엄격한 의사결정 경계로 오분류 최소화를 시도한다.

**gamma(RBF 커널 매개변수)**는 단일 훈련 샘플의 영향 범위를 결정한다. 작은 gamma는 영향 범위가 넓어 부드러운 결정 경계를 만들고, 큰 gamma는 영향 범위가 좁아 복잡한 결정 경계를 만든다.

완전히 갈리지 않는 데이터를 위한 소프트 마진

실제 데이터는 종종 완벽하게 선형 분리가 불가능하다. 소프트 마진 SVM은 일부 오분류를 허용하며 다음과 같은 최적화 문제를 해결한다.

최소화: ||w||²/2 + C∑ξi
제약조건: yi(w·xi + b) ≥ 1 - ξi, ξi ≥ 0

여기서 ξi는 slack 변수로 오분류 정도를 나타낸다. C는 규제화 매개변수로 마진 최대화와 오분류 최소화 사이의 균형을 조절한다.

sklearn으로 커널 SVM을 학습시키면

from sklearn import svm
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import numpy as np

# 샘플 데이터 생성
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0,
                           n_informative=2, random_state=1, n_clusters_per_class=1)

# 훈련/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# SVM 모델 생성 및 훈련
clf = svm.SVC(kernel='linear', C=1.0)
clf.fit(X_train, y_train)

# 예측 및 정확도 계산
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"정확도: {accuracy:.2f}")

# 결정 경계 시각화
def plot_decision_boundary(clf, X, y):
    # 메쉬 생성
    h = .02
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))

    # 예측
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)

    # 결정 경계 및 서포트 벡터 플롯
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k')

    # 서포트 벡터 강조
    plt.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1],
                s=100, facecolors='none', edgecolors='k')
    plt.title('SVM 결정 경계 및 서포트 벡터')
    plt.xlabel('Feature 1')
    plt.ylabel('Feature 2')
    plt.show()

plot_decision_boundary(clf, X, y)

텍스트 분류부터 금융까지, 쓰이는 곳

텍스트 분류에서는 스팸 메일 필터링, 감성 분석, 문서 범주화에 SVM이 쓰인다.

이미지 인식에서는 얼굴 검출, 문자 인식(OCR), 객체 분류에 활용된다.

생물정보학에서는 유전자 분류, 단백질 구조 예측, 질병 진단에 쓰인다.

금융 분야에서는 신용도 평가, 주식 가격 예측, 이상 거래 탐지에 활용된다.

다른 분류 알고리즘과 비교하면

특징: 최대 마진, 커널 트릭특징: 확률 출력특징: 계층적 결정특징: 다층 구조분류 알고리즘SVM로지스틱 회귀결정 트리신경망장점: 고차원 데이터에 강함장점: 간단하고 해석 용이장점: 비모수적, 해석 용이장점: 복잡한 패턴 학습

SVM은 마진을 최대화하고 서포트 벡터만 사용하는 반면, 로지스틱 회귀는 확률적으로 해석되고 모든 데이터 포인트를 활용한다. 결정 트리는 계층적 규칙 기반으로 비선형 관계를 자연스럽게 포착하고, 신경망은 복잡한 패턴을 학습할 수 있지만 많은 데이터가 필요하다.

튜닝 전략

커널 선택에서는 고차원·적은 샘플 수에는 선형 커널을, 저차원·많은 샘플 수에는 RBF 커널을, 특성 간 상호작용이 중요할 때는 다항식 커널을 고려한다.

하이퍼파라미터 최적화는 그리드 탐색(Grid Search), 랜덤 탐색(Random Search), 베이지안 최적화(Bayesian Optimization)로 진행한다.

특성 엔지니어링에서는 SVM이 특성 스케일에 민감하므로 스케일링(정규화/표준화)을 적용하고, PCA·LDA 등으로 차원을 축소하거나 중요 특성만 선택해 모델을 단순화한다.

최근 딥러닝 기법이 발전하면서 SVM의 활용도가 일부 줄었지만, 중소규모 데이터셋에서는 여전히 강력한 성능을 보이며 이론적 견고성과 해석 가능성에서 강점을 유지한다.

SVM서포트 벡터 머신커널 트릭마진 최대화지도학습