kNN과 같이 기존 데이터를 사용해서 새로운 데이터가 입력되었을 때, 분류하는 방법이 있습니다. 이름은 Support Vector Machine (SVM) 입니다. 만약 영화의 장르와 같이 명확한 분류 기준은 없지만 기존에 분류된 장르에 해당하는 데이터가 있다면 기존 데이터를 SVM 알고리즘을 이용해서 분류할 수 있습니다. 오늘 포스팅에서는 SVM에 대해 간단히 공유하겠습니다.
SVM 이란?
SVM은 많이 사용하고 있는 신경망보다 사용이 간결하며 분류나 회귀 분석에서 사용 가능합하지만, 분류에서 주로 사용하고 있는 기법입니다. SVM은 Support Vector와 Hyperplane(초평면)을 이용해서 분류를 수행하게 되는 알고리즘입니다. 간단하게 설명하자면 평면 상태에서 아래와 같이 Hyperplane으로 경계를 나눠주어 분류하는 방식입니다.
그렇다면, Hyperplane인 분류 기준이 어느 위치에 있어야 잘 분류한 것일까요? 어느 한쪽에 치우치지 않게 분류하며, 공통되는 빈 공간의 경우라도, 양쪽 데이터와 균등한 위치에 분류 기준을 세워줘야합니다.
어느 한 쪽에 치우치지 않은 분류
양쪽 데이터 균등 위치에 분류 기준 위치
SVM 분류 방법
앞서 설명한 바와 같이 최고의 마진을 가져가는 방법으로 분류 기준을 세워줘야 합니다. 따라서, 비어 있는 마진이 많아야 새로운 데이터가 들어와도 분류가 잘 될 가능성이 큽니다. SVM이 잘 적용된 이상적인 분류는 아래와 같습니다. 마진을 최대로 가져감으로써 새로운 데이터에 대한 분류를 정확히 할 수 있습니다.
SVM 모델을 만드는 방법에는 마진을 최대화하는 방법과 오류를 최소화하는 방법이 있지만, 새로운 데이터의 분류를 위해서 마진을 최대로 가져가는 일반화 방법을 사용하는 것이 좋습니다. Hyperplane의 위치와 Support Vector의 위치로써 Margin을 결정할 수 있습니다.
SVM 장점
SVM의 장점은 범주나 수치 예측 문제에 사용 가능하며, 오류 데이터에 대한 영향이 없다는 데에 있습니다. 또한, 과적합이 되는 경우가 적고 신경망보다 사용하기 쉽다는 장점이 있습니다.
범주, 수치 예측 문제 사용
오류 데이터 영향이 적음
과적합 되는 경우가 적음
신경망보다 사용하기 쉬움
SVM 단점
SVM의 단점은 여러 개의 조합 테스트가 필요한다는 데에 있습니다. 최적의 모델을 찾기 위해서 커널과 모델에서 다양한 테스트가 필요합니다. 따라서, 여러 연산이 필요하고 입력 데이터 셋이 많을 경우에 학습 속도가 느립니다. 또한, 신경망과 같이 해석이 어렵고 복잡한 블랙박스 형태로 되어있습니다. 물론, 해석 자체가 불가능한 것은 아니고 어느 정도는 가능합니다.
여러 개의 조합 테스트 필요
학습 속도가 느림
해석이 어렵고 복잡한 블랙박스
SVM 사용 방법
오류를 감안해서 분류할 것인지, 최적 마진을 목표로 할 것인지에 대한 사전 정의가 필요합니다. 이에 따라서 두가지 방법으로 SVM을 최적화 할 수 있습니다.
1. 마진 최대 : 오류 일부 발생
2. 오류 최소화 : 오류 절대 발생 X
마진을 최대화하여 데이터를 일반화하게 되면 일부 오류가 발생할 수 있으나, 새로 들어오는 데이터에 대해서는 마진이 넓어 잘 분류될 가능성이 높습니다.
반면에, 오류 발생 가능성을 최소화하게 되면 오류가 발생할 가능성은 거의 없지만, 새로 들어오는 데이터에 대해서는 마진이 좁아서 분류가 잘못될 가능성이 비교적 높습니다. 따라서, 상황에 따라 마진을 최대화 할 것인지, 오류를 최소화 할 것인지를 결정하여 모델을 만들어야 하지만 마진을 최대화하는 것이 새로 입력되는 데이터를 분류하는 SVM의 목적에 부합합니다.
댓글