-
[머신러닝] SVM 서포트벡터머신 쉽게 이해하기머신러닝 배우기 2023. 12. 11. 18:46
▶︎ SVM (Support Vector Machine) 이란?
→ 클래스를 잘 분류하도록 Margin을 최대화하는 결정 경계면을 찾는 기법
※ SVM은 옆에 있는 그래프만 머리 속에 넣어두면 됩니다.
- 마진 : 데이터 포인트와 결정 경계 사이의 거리
- 서포트 벡터 : 다른 클래스 간에 첨예하게, 가까이 붙어 있는 데이터 포인트. 로, 경계면의 방향과 위치를 정하여 모델의 학습 및 일반화에 중요한 역할을 함
그래프에 SVM 개념이 다 들어가 있습니다. 3개의 단어가 보이시죠?
1. support vectors
2. maximal margin
3. optimal separating hyperplane
→ 서포트 벡터들을 가장 잘 나누도록 마진을 최대화하는 초평면을 찾는 기법
▶︎ SVM 쉽게 이해하기
클래스끼리 패턴이 뚜렷하여 결정 경계를 찾는 것이 쉬우면 좋을텐데, 현실 세계에서는 그런 경우는 거의 없다. 데이터에 노이즈(outlier)가 포함되어 있거나 선형적으로 완벽하게 분리되지 않는 경우가 더 많다. 이러한 문제를 극복해야 한다.
1) 일부 이상치나 잘못 분류된 데이터를 허용하기 위해 soft vector machine 이라는 로버스트한 방법을 택한다. 하드 SVM은 모든 훈련 데이터가 마진 안에 속하도록 하는 것이고, 소프트 SVM은 잘못 분류되는 것을 일부 허용하는 것이다.
소프트 SVM에는 마진 안에 얼마나 많은 오류를 허용할지를 설정하는 C라는 하이퍼파라미터가 있다. 모델의 일반화와 이상치 처리의 균형을 고려하여 C를 설정해야하는데, C가 크면 마진을 작게 만들고, C가 작으면 더 많은 오류를 허용한다.
(로버스트하다 : 이상치가 들어왔을 때도 모델이 튼튼하게 잘 버텨내고 성능이 안정적이라는 뜻)
2) 데이터가 선형적으로 분리되지 않으면 직선으로(결정 경계로) 클래스를 분리할 수 없다. (= 선형 분리 불가능이라고 표현함. Linearly-Unseparable) 그래서 원래의 차원을 커널함수로 비선형 매핑을 통해 고차원 공간으로 변환을 해서 최적의 결정 경계면을 만든다. 그래서 다시 원래 차원으로 돌아오면 비선형의 결정경계로 클래스를 분류할 수 있게 된다. 커널함수도 하이퍼파라미터다. 주로 사용되는 커널 함수는 선형 커널, 다항식 커널, 가우시안(RBF) 커널 등이 있다.
▶︎ SVM 주의할 점
1. 피쳐 스케일링을 해야 함. 최대한 수학적 공식을 쓰지 않으려고 해서 넘어갔지만, 서포트 벡터의 거리를 계산해야하는 등 피쳐 간의 거리 계산이 이루어진다. 즉, SVM은 데이터 스케일에 민감함으로 피쳐 스케일링을 해야 한다.
2. 과적합을 피하고 성능을 높이기 위해, 하이퍼파라미터인 C와 커널 함수를 적당히 잘 선택해야 한다. C는 얼마나 마진을 크게 만들어서 오차를 허용할 것이냐, 커널함수는 비선형 분리를 위해 어떤 함수를 쓸 것이냐
3. imbalanced data 인 경우, 모든 모델이 그렇지만 SVM도 소수 클래스의 특성을 찾기 힘들어서 결정경계를 찾기 어렵다. 언더샘플링, 오버샘플링, 혹은 합성 샘플링의 과정을 통해 균형을 잡아줘야 한다.
4. 계산 비용, 리소스가 많이 든다. 학습 시간이 오래 걸린다.
▶︎ 그럼에도 불구하고 SVM 이 많이 쓰이는 이유는
1. 마진을 최대화하여 결정 경계를 찾음으로써 모델의 일반화 성능을 향상시키고, 비선형 문제도 해결할 수 있으며 이상치에 대한 로버스트한 모델이다.
2. 또한 보통은 이진 분류에 사용되지만, 다중 클래스 분류나 회귀 문제에도 적용 가능하다.
▶︎ 이미지 출처 (2)
이미지를 가져와서 쓰긴 했지만 내용도 괜찮기 때문에 한 번 읽어보기 추천드립니다!
이미지 출처 : https://www.hackerearth.com/blog/developers/simple-tutorial-svm-parameter-tuning-python-r/
Simple Tutorial on SVM and Parameter Tuning in Python and R
Introduction Data classification is a very important task in machine learning. Support Vector Machines (SVMs) are widely applied in the field of pattern
www.hackerearth.com
이미지 출처 : https://ankitnitjsr13.medium.com/math-behind-svm-support-vector-machine-864e58977fdb
'머신러닝 배우기' 카테고리의 다른 글
[머신러닝] HPO 최적의 하이퍼 파라미터 찾기 GridSearch 예제 (0) 2023.12.11 [머신러닝] Feature Scaling 피쳐 스케일링. 언제 어떤 Scaler를 써야할까? (Min-Max, 표준화, Robust Scaling) (0) 2023.12.11 [머신러닝] 변수가 모델에 얼마나 큰 영향을 끼치니? 확인하는 두가지 방법 feature importance, permutation importance (0) 2023.12.11 [머신러닝] 하이퍼파라미터와 AutoML (1) 2023.12.08 XG Boost 탄생과 모델의 장단점 (2) 2023.12.05