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://ratsgo.github.io/machine%20learning/2017/05/29/SVM2/
'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 |
댓글