본문 바로가기
AI

SVM(Support Vector Machine)

by HYEBINess 2022. 8. 14.

SVM은 널리 쓰이는 지도 학습 알고리즘입니다. 주로 분류 또는 회귀 문제를 다룰 때 사용합니다.
SVM은 마진(margin)이 최대화된 결정 경계(Decision Boundary)을 찾아 두 범주를 분류해내는 선형 분류 기법입니다.

위 그림에서 결정 경계는 B1과 B2입니다. 한 눈에 보아도 B1이 B2 보다 클래스를  더 여유 있게 분류하고 있습니다.
margin은 데이터를 2개의 클래스로 나눈 결정경계에 대한 신뢰구간이라고 할 수 있습니다. 현재의 결정 경계를 최대한 신뢰하되, 동시에 의심의 여지도 최대한 마련해 두는 것이죠. 의심의 여지를 최대한 마련해 둔다는 것은 현재의 결정 경계가 unseen data에 대해서는 완벽하지 않을 수 있음을 인정하고 현 상황에서 마진이 최대가 되는 기준을 택하는 것입니다. 이때 margin을 결정하게 되는 각 클래스의 샘플을 supprot vector라고 합니다. 


사용자가 조절할 수 있는 파라미터를 Hyperparameter라고 합니다. SVM에서 C와 gamma는 중요한 hyperparameter입니다. 좋은 성능을 얻으려면 C와 gamma를 잘 조정해줘야 합니다. C는 데이터 샘플들이 다른 클래스에 놓이는 것의 정도를 결정합니다.

이때 C의 유무에 따라 Hard Margin SVM, Soft Margin SVM으로 구분됩니다. Hard Margin SVM은 매우 엄격하게 두 개의 클래스로 분류하는 방법으로, 모든 샘플은 무조건 한 개의 클래스에만 속하도록 하는 방법입니다. 그러나 현실에는 이상치가 전혀 존재하지 않는 데이터가 많지 않습니다. Soft Margin 방식을 이용하면 이 문제를 해결할 수 있습니다.

위 그림과 같이 이상치가 존재하는 경우 데이터를 완벽하게 분리해낼 수 없습니다. 이러한 문제를 해결하기 위해서 C를 조절하여 약간의 오류를 허용하도록 할 수 있습니다. C의 값을 작게 하면 이상치들이 있을 가능성을 크게 보아 좀 더 일반적인 결정 경계를 찾아낼 수 있습니다. 반대로 C의 값을 크게 설정할수록 이상치를 허용하지 않는 결정 경계가 만들어집니다.

왼쪽 그림은 C를 낮게 설정한 경우입니다. 하나의 샘플을 다른 클래스로 분류했지만 좀 더 일반적인 결정경계를 찾아냈습니다. 반면 오른쪽 그림과 같이 C를 높게 설정한 경우에는 모두 샘플을 정확히 분류해냈지만, 새로운 데이터가 들어왔을 때 제대로 분류해내지 못할 가능성이 큽니다. C가 너무 높으면 underfitting이 될 가능성이 크고, C가 너무 낮으면 overfitting이 될 가능성이 크기 때문에 적절한 C를 찾아주는 것이 중요합니다.

 

reference

* https://excelsior-cjh.tistory.com/66

* https://towardsdatascience.com/hyperparameter-tuning-for-support-vector-machines-c-and-gamma-parameters-6a5097416167

* https://ratsgo.github.io/machine%20learning/2017/05/29/SVM2/

* https://bskyvision.com/entry/%EC%84%9C%ED%8F%AC%ED%8A%B8-%EB%B2%A1%ED%84%B0-%EB%A8%B8%EC%8B%A0SVM%EC%9D%98-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A1%9C%EC%84%9C-%EA%BC%AD-%EC%95%8C%EC%95%84%EC%95%BC%ED%95%A0-%EA%B2%83%EB%93%A4-%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98-C%EC%99%80-gamma

 

 

'AI' 카테고리의 다른 글

특이값 분해(SVD, Singular Value Decomposition)  (0) 2022.09.02
Gradient boost  (0) 2022.08.29
L1 Regularization & L2 Regularization  (0) 2022.08.12
Generalization, Normalization, Standardization  (0) 2022.08.12
binary & multinomial  (0) 2022.08.08

댓글