서포트 벡터 머신 (Support Vector Machine, SVM) #
서포트 벡터 머신(Support Vector Machine, SVM)은 통계적 학습 이론을 기반으로 한 강력한 분류 및 회귀 알고리즘이다. SVM의 핵심 아이디어는 클래스 간의 경계(결정 경계)를 최대한 넓게 만들어 일반화 성능을 향상시키는 것이다. 이 넓은 경계를 “마진(margin)“이라고 하며, 마진을 최대화하는 것이 SVM의 목표이다.
SVM의 기본 개념 #
1. 결정 경계와 마진 #
- 결정 경계(Decision Boundary): 클래스를 구분하는 초평면(hyperplane)
- 마진(Margin): 결정 경계와 가장 가까운 데이터 포인트들 사이의 거리
- 서포트 벡터(Support Vector): 마진 경계에 위치한 데이터 포인트들
2. 최적 분리 초평면 #
SVM은 다음 조건을 만족하는 최적의 초평면을 찾는다:
- 모든 훈련 데이터를 올바르게 분류
- 마진을 최대화
수학적으로 초평면은 다음과 같이 표현된다:
$$w^T x + b = 0$$여기서 $w$는 가중치 벡터, $b$는 편향이다.
선형 SVM #
1. 하드 마진 SVM (Hard Margin SVM) #
데이터가 선형적으로 완전히 분리 가능한 경우 사용한다.
목적 함수:
$$\min_{w,b} \frac{1}{2}||w||^2$$제약 조건:
$$y_i(w^T x_i + b) \geq 1, \quad i = 1, 2, ..., n$$2. 소프트 마진 SVM (Soft Margin SVM) #
데이터가 선형적으로 완전히 분리되지 않는 경우 사용하며, 일부 오분류를 허용한다.
목적 함수:
$$\min_{w,b,\xi} \frac{1}{2}||w||^2 + C\sum_{i=1}^{n} \xi_i$$제약 조건:
$$y_i(w^T x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0$$여기서:
- $\xi_i$: 슬랙 변수(오분류나 마진 내부 허용)
- $C$: 정규화 매개변수(마진과 오분류 간의 균형 조절)
커널 트릭 (Kernel Trick) #
선형적으로 분리되지 않는 데이터를 고차원 공간으로 매핑하여 선형 분리가 가능하도록 만드는 기법이다.
1. 커널 함수의 종류 #
1) 선형 커널 (Linear Kernel)
$$K(x_i, x_j) = x_i^T x_j$$2) 다항식 커널 (Polynomial Kernel)
$$K(x_i, x_j) = (x_i^T x_j + c)^d$$- $d$: 다항식의 차수
- $c$: 상수항
3) RBF 커널 (Radial Basis Function Kernel)
$$K(x_i, x_j) = \exp(-\gamma ||x_i - x_j||^2)$$- $\gamma$: 커널 계수 (높을수록 복잡한 결정 경계)
4) 시그모이드 커널 (Sigmoid Kernel)
$$K(x_i, x_j) = \tanh(\gamma x_i^T x_j + c)$$2. 커널의 선택 기준 #
- 선형 커널: 특성 수가 많고 데이터가 선형적으로 분리 가능한 경우
- RBF 커널: 가장 일반적으로 사용, 비선형 패턴이 복잡한 경우
- 다항식 커널: 특정 차수의 상호작용이 중요한 경우
라그랑주 승수법과 대우 문제 #
SVM의 최적화 문제는 라그랑주 승수법을 통해 대우 문제(dual problem)로 변환된다:
대우 문제:
$$\max_{\alpha} \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(x_i, x_j)$$제약 조건:
$$0 \leq \alpha_i \leq C, \quad \sum_{i=1}^{n} \alpha_i y_i = 0$$여기서 $\alpha_i$는 라그랑주 승수이다.
SVM의 장점 #
- 강력한 일반화: 마진 최대화로 과적합 방지
- 고차원 데이터: 특성 수가 샘플 수보다 많아도 효과적
- 메모리 효율성: 서포트 벡터만 저장하면 됨
- 커널 트릭: 비선형 패턴을 효과적으로 처리
- 전역 최적해: 볼록 최적화 문제로 전역 최적해 보장
- 노이즈 저항성: 아웃라이어에 상대적으로 강함
SVM의 단점 #
- 긴 훈련 시간: 큰 데이터셋에서 O(n³) 시간 복잡도
- 확률 정보 없음: 분류 확률을 직접 제공하지 않음
- 하이퍼파라미터 민감성: C와 γ 값에 민감
- 스케일링 필요: 특성들의 스케일에 민감
- 해석 어려움: 특히 비선형 커널 사용 시
주요 하이퍼파라미터 #
1. C (정규화 매개변수) #
- 큰 C: 하드 마진에 가까움, 과적합 위험
- 작은 C: 소프트 마진, 단순한 모델
2. γ (RBF 커널 계수) #
- 큰 γ: 복잡한 결정 경계, 과적합 위험
- 작은 γ: 단순한 결정 경계, 과소적합 위험
3. kernel (커널 종류) #
- 데이터의 특성과 문제의 복잡도에 따라 선택
다중 클래스 분류 #
SVM은 본래 이진 분류를 위한 알고리즘이지만, 다중 클래스로 확장할 수 있다:
1. One-vs-One (OvO) #
- k개 클래스에 대해 k(k-1)/2개의 이진 분류기 훈련
- 다수결 투표로 최종 클래스 결정
2. One-vs-Rest (OvR) #
- k개 클래스에 대해 k개의 이진 분류기 훈련
- 각 분류기는 하나의 클래스 vs 나머지 클래스
실제 적용 예시 #
1. 텍스트 분류 #
- 문서 분류, 스팸 필터링
- 고차원 특성 공간에서 효과적
2. 이미지 분류 #
- 얼굴 인식, 객체 분류
- 비선형 패턴 인식에 강함
3. 생물정보학 #
- 유전자 분류, 단백질 구조 예측
- 고차원 생물학적 데이터 처리
4. 금융 분야 #
- 신용 위험 평가, 사기 탐지
- 노이즈가 많은 금융 데이터에 효과적
SVM 회귀 (SVR) #
SVM은 회귀 문제에도 적용할 수 있다:
1. ε-SVR #
허용 오차 ε 내의 예측은 손실 없음으로 간주
목적 함수:
$$\min_{w,b,\xi,\xi^*} \frac{1}{2}||w||^2 + C\sum_{i=1}^{n} (\xi_i + \xi_i^*)$$2. ν-SVR #
서포트 벡터의 비율을 직접 제어
성능 최적화 #
1. 데이터 전처리 #
- 스케일링: StandardScaler 또는 MinMaxScaler 사용
- 특성 선택: 불필요한 특성 제거
- 노이즈 제거: 아웃라이어 처리
2. 하이퍼파라미터 튜닝 #
- 그리드 서치: C와 γ의 격자 탐색
- 랜덤 서치: 무작위 매개변수 조합 시도
- 베이지안 최적화: 효율적인 매개변수 탐색
3. 커널 선택 #
- 교차 검증: 다양한 커널의 성능 비교
- 도메인 지식: 문제 특성에 맞는 커널 선택
확률 추정 #
SVM은 기본적으로 확률을 제공하지 않지만, 다음 방법으로 확률을 추정할 수 있다:
1. 플랫 스케일링 (Platt Scaling) #
SVM의 출력을 시그모이드 함수에 통과시켜 확률로 변환
2. 교차 검증 기반 보정 #
교차 검증을 통한 확률 보정
최근 발전과 변형 #
1. 온라인 SVM #
스트리밍 데이터를 위한 온라인 학습 버전
2. 다중 인스턴스 SVM #
여러 인스턴스를 포함하는 백(bag) 단위 학습
3. 구조적 SVM #
구조화된 출력을 위한 SVM 확장
4. 딥 SVM #
딥러닝과 SVM을 결합한 하이브리드 모델
다른 알고리즘과의 비교 #
vs 로지스틱 회귀 #
- SVM: 마진 최대화, 서포트 벡터만 중요
- 로지스틱 회귀: 모든 데이터 포인트 고려, 확률적 해석
vs 랜덤 포레스트 #
- SVM: 이론적 기반 강함, 하이퍼파라미터 민감
- 랜덤 포레스트: 실용적, 하이퍼파라미터 덜 민감
vs 신경망 #
- SVM: 전역 최적해, 과적합 방지
- 신경망: 표현 능력 강함, 지역 최적해 위험
구현 시 고려사항 #
1. 데이터 크기 #
- 작은 데이터셋: 모든 커널 시도 가능
- 큰 데이터셋: 선형 커널이나 근사 방법 고려
2. 특성 수 #
- 고차원: 선형 커널 효과적
- 저차원: 비선형 커널 고려
3. 클래스 불균형 #
- class_weight 매개변수로 클래스 가중치 조정
- SMOTE 등의 오버샘플링 기법 적용
SVM은 이론적으로 탄탄하고 실제로도 강력한 성능을 보이는 알고리즘이다. 특히 고차원 데이터나 복잡한 비선형 패턴이 있는 문제에서 뛰어난 성능을 발휘한다. 다만 큰 데이터셋에서는 훈련 시간이 오래 걸릴 수 있으므로, 데이터의 크기와 특성을 고려하여 사용해야 한다.
참고 #
SVM의 인기 #
SVM이 2000년대 초반까지 꽤 많은 인기를 누렸다. 의사결정나무나 회귀에 비해서 가볍거나더 강력한 성능을 보였기 때문이다. SVM이 인기를 가진 또다른 이유는 멋져 보인다는 것이었다. 차원확장의 개념을 이용한 데이터 분리는 그전까지는 없던 것으로 라그랑지안으로 분할하는 물리적 방법을 이용한 것이라서 과학적으로 보이고 어려워 보인다는 것이 그 실제 이유였다. 실제로는 앙상블 모델보다 성능이 떨어지는 경우가 많았으며 최근에는 딥러닝으로 인해 사용하지 않게 되었다.
SVM의 문제 #
데이터를 판별할 때 노이즈가 있어도 제법 잘 하지만 학습데이터에 오류가 있으면 모델 성능에 큰 문제가 생기는 치명적인 단점이있다. 실제 비즈니스 환경에서는 학습데이터가 잘못된 것도 종종 찾을 수 있기 때문에 비즈니스 데이터를 다루는 일에는 부적합하다. 현실적으로 사용할 수있는 응용은 자동차 번호판 인식 정도에 사용하는 것 정도이다.