[kakao x goorm] SVM(Support Vector Machine) 완전 정복
오늘은 머신러닝 분류 알고리즘 중에서도 강력한 성능을 자랑하는 서포트 벡터 머신(SVM)에 대해 학습했다. SVM은 데이터 분포가 복잡하거나 이상치가 있을 때도 뛰어난 정확도를 보여주며, 특히 적은 수의 특성(feature)으로도 복잡한 결정 경계를 만들 수 있는 장점이 있다.
SVM의 기본 개념
SVM은 데이터를 분류하기 위한 최적의 경계(hyperplane)를 찾는 알고리즘이다. 여러 경계 후보 중에서 가장 여유롭게 데이터를 나눌 수 있는 경계, 즉 양쪽 클래스 데이터와 가장 멀리 떨어진 경계를 선택한다. 이때 경계와 데이터 사이의 거리를 마진(margin)이라고 하며, 마진과 가장 가까운 데이터들을 서포트 벡터(support vector)라고 한다.
- 이 서포트 벡터를 기준으로 그어진 선이 최적의 초평면(hyperplane)이 된다.
비선형 분류와 커널 트릭(Kernel Trick)
SVM은 단순한 선형 분류뿐 아니라 비선형 분류 문제도 다룰 수 있다. 이를 위해 데이터를 고차원 공간으로 사상(mapping)하여 복잡한 패턴도 분류할 수 있도록 한다. 이 과정은 수학적으로 복잡하므로, 이를 효율적으로 처리하기 위한 기술이 커널 트릭(Kernel Trick)이다.
주요 커널 함수
커널 이름 | 설명 |
Linear | 선형 초평면 |
Polynomial | 다항식 기반 분류 |
RBF (Radial Basis Function) | 거리 기반, 가장 많이 사용됨 |
주요 하이퍼파라미터
1. C (Cost Parameter)
- 과적합을 얼마나 허용할 것인지 결정하는 값
- C가 크면 서포트 벡터를 더 정밀하게 분류 (과적합 위험)
- C가 작으면 결정 경계가 부드러워짐 (과소적합 가능)
2. Gamma (γ)
- RBF 커널 등에서 사용
- Gamma가 크면 초평면이 서포트 벡터에 민감해져 경계가 복잡해짐
- Gamma가 작으면 멀리 있는 데이터도 영향을 미쳐 경계가 단순해짐
Gamma와 Cost의 관계
- 작은 gamma → 넓은 margin → 단순한 경계
- 큰 gamma → 좁은 margin → 복잡한 경계
- 작은 cost → 과적합 억제 → 단순한 경계
- 큰 cost → 과적합 허용 → 복잡한 경계
데이터 전처리의 중요성
SVM은 데이터의 스케일(범위)에 매우 민감하기 때문에 반드시 전처리를 해줘야 한다. 각 특성(feature)의 값 범위가 달라지면 거리 계산이 왜곡되어 결과에 큰 영향을 준다.
자주 사용하는 스케일러
스케일러 | 설명 |
StandardScaler | 평균 0, 분산 1로 조정 |
MinMaxScaler | 모든 값을 0~1 사이로 조정 |
SVM의 장점과 유의사항
- 다양한 데이터셋에서 우수한 정확도를 보이는 강력한 분류 모델
- 적은 특성(feature)으로도 복잡한 경계를 생성 가능
- 저차원, 고차원 모두 잘 작동
- 소규모 데이터셋 (수천~만 단위)에 적합
- 대규모 데이터셋 (10만 이상)에서는 속도와 메모리 이슈가 발생할 수 있음
- 결과 해석이 어려움: 왜 특정 결과가 나왔는지 설명하기 어려운 모델
오늘의 회고
SVM은 이론적으로나 실무적으로나 매우 강력한 분류기법이라는 점을 다시 느꼈다. 특히 커널 트릭을 통해 비선형 문제까지도 해결할 수 있다는 점에서 응용 범위가 매우 넓다. 하지만 그만큼 데이터 스케일링과 하이퍼파라미터 조정이 중요하며, 특히 gamma와 cost 값이 결정 경계에 직접적인 영향을 준다는 점은 실전에서 매우 유용한 포인트가 될 것이다.