BookmarkSubscribeRSS Feed

[EM] 서포트 벡터 머신(support vector machine, SVM) 이론

Started ‎06-10-2020 by
Modified ‎06-10-2020 by
Views 1,421

 



 

이번시간에는 서포트 벡터 머신(support vector machine, SVM)에 대하여 알아보겠습니다.

 

 

 

SVM은 분류나 회귀분석에 쓰일 수 있는 지도학습 모델입니다. 

두가지 범주로 나눌 수 있는 학습데이터로 만들어지며 새로운 데이터가 들어왔을 때 비확률적 이진 선형 분류를 합니다. p차원 공간속의 점으로 데이터들을 표현하고 이 점들이 각각 두개의 클래스 중 하나에 속할 때 다음과 같이 점들을 분리하는 (p-1)차원의 분리 초평면(hyperplane)을 찾는 것이 기본적인 목적입니다.

1.PNG

 

 

 

Margin

 하지만 단순히 데이터포인트들을 분리만 하는 hyperplane은 무수히 많습니다.

A8jpY1iBuV_gwAAAABJRU5ErkJggg__.png

최적의 분리 초평면을 구하기 위해 마진이라는 직관적인 개념을 이해해야 합니다. 마진은 hyperplane과 가장 가까운 데이터포인트까지의 거리를 뜻합니다. SVM은 최대마진을 가지는 hyperplane을 구하는 것입니다. 그리고 이때 hyperplane을 결정하는 데이터포인트들이 바로 SVM에서 SV가 의미하는 Support Vector가 됩니다.

wM79Yb0whtopQAAAABJRU5ErkJggg__.png

 

Hard margin SVM

 8BwRSmBlIW16EAAAAASUVORK5CYII_.png

 

Hard margin SVM은 단어 그대로 hard하게 분류를 하는 SVM이라고 할 수 있습니다. hard는 선형판별을 할 때 오차즉 마진의 안이나 밖에 기준과 맞지 않는 데이터를 절대 허용하지 않을 정도로 유연하지 않다는 뜻으로 풀어서 해석할 수 있습니다. Hard margin SVM은 다음과 같은 결정경계식을 가집니다.

wGv_qSfdNk1gQAAAABJRU5ErkJggg__.png

2.PNG

wMJvazZEwaxdQAAAABJRU5ErkJggg__.png

초평면의 양쪽 영역의 서포트벡터들 까지의 거리가 같아야 하며 계산의 편의를 위해 거리를 1로 하면 결정경계식을 다음과 같이 나타낼 수 있습니다.

4uqlw962YJOAAAAAElFTkSuQmCC.png

두 영역의 서포트벡터에서 초평면까지 거리를 절대값으로 변환하여 더하면 다음과 같은 식으로 표현되고 이는 마진의 크기와 같습니다.

kuV1A0hqD5F9p504EiLa8RjgZVq8ewgJxAghAC8jQlxBJgBBMQTABmLZwc5gQAhBEDGhDgCzAAC4gmAjMWzg5xAgBACIGNCHAFmA.png 8HhfF31q0Vd4MAAAAASUVORK5CYII_.png

 

3.PNG

Awd3L_sLaml5AAAAAElFTkSuQmCC.png

하지만 이 목적함수만 가지고는 데이터들을 완벽히 분류할 수 없습니다따라서 다음과 같은 제약식이 필요합니다.

yg9IAAAAASUVORK5CYII_.png

목적함수와 제약식을 한꺼번에 두고 계산하기 위해 라그랑주 승수법을 사용합니다라그랑주 승수법은 제약조건이 있는 최적화 문제를 다룰 때 사용하는 방법이지만 자세한 설명은 생략하겠습니다.

라그랑주 승수법을 사용하여 목적함수와 제약조건을 결합하면 제약이 사라진 새로운 형태의 목적함수가 만들어집니다. (라그랑주변수에 대한 조건은 만족해야 합니다.)

 

 4.PNG

5.PNG

A_qI0Elq523bAAAAAElFTkSuQmCC.png

6.PNG

새로운 데이터가 들어왔을 때 판별함수식에 대입하여 0보다 크면 +1, 0보다 작으면 -1로 분류하는 것 입니다.

 

Soft margin SVM

d2pKAJQFLApYEbi0BC6huLSPrCEsClgQsCVgSmEAJWEA1gcK3bm1JwJKAJQFLAreWgAVUt5aRdYQlAUsClgQsCUygBCygmkDhW7e.png

7.PNG

하지만 선형으로 정확하게 분류되는 데이터들은 극히 드물기 때문에 약간의 오분류를 허용하여 모델을 구축하는 Soft margin SVM이 나오게 됩니다모든 학습데이터에 대해 완벽하게 분류되는 것을 제약조건으로 가지는 기존의 Hard한 방법에서 약간의 오분류를 허용하고 전체적인 성능을 높이는 Soft한 방법으로 발전 된 형태입니다.

Soft margin SVM에서는 잘못 분류된 데이터포인트부터 해당결정경계까지의 거리를 나타내는 슬랙변수7TVxAAAAXklEQVQYV2NgwAXkuFikYHKywrxsjIwQniwPnwSEJcMmAFMgzSQCY8pxscL1yYsyMrJAdHFzSEJUyAuyIpRyIpgI28QZ.png 가 사용됩니다슬랙변수의 크기만큼 초평면의 위 또는 아래로 오분류를 허용하는 것입니다따라서 7TVxAAAAXklEQVQYV2NgwAXkuFikYHKywrxsjIwQniwPnwSEJcMmAFMgzSQCY8pxscL1yYsyMrJAdHFzSEJUyAuyIpRyIpgI28QZ.png 가 클수록 오분류의 허용범위가 넓어지는 것을 의미합니다. 슬랙변수를 추가하면 다음과 같은 목적함수와 조건식이 나오게 됩니다.

HpFCSKeQTALWNehSCA_BAAtxSfTkGimEcA3DLmVQgCiA8BcEvx6RQkinkEwC1jXoUggPgQ_D9h3KUxuOxb9QAAAABJRU5ErkJggg.png

wEs724IGcgPQAAAAABJRU5ErkJggg__.png

Hard margin SVM에서와 마찬가지로 라그랑주 승수법을 이용하여 최적화된 파라미터를 구할 수 있습니다마찬가지로 분류함수에 구한 매개변수들을 대입하면 새로운 데이터의 분류를 할 수 있게 됩니다.

 

Kernel trick

5GOAIZD4CnOeZ38e8hRwBznM_BjgCmY8A53nm9zFvIUeA85yPAY5A5iPAeZ75fcxbyBH4Ly840vclf9GAAAAAAElFTkSuQmCC.png

Soft margin을 통해 약간의 오분류를 허용하는 선형분류의 유연성이 생기긴 했지만 애초에 선형으로 분류가 불가능한 위 그림과 같은 데이터는 Kernel trick을 이용한 SVM을 통해 분류가 가능합니다.

8.PNG

위의 그림처럼 저차원의 비선형 분류경계를 가지는 데이터를 고차원으로 매핑 시킨 후 분류 초평면을 찾기 위해 차원 매핑에 커널함수를 사용하게 됩니다. 하지만 데이터들을 고차원으로 매핑하고 이를 다시 내적하는 과정에서 연산이 매우 크게 늘어나는 단점이 있습니다.

그래서 나오게 된 방법이 Kernel trick입니다. 매핑함수를 7TVxAAAAQUlEQVQYV2NgIAeIcfJBtcFY4jyMjIwsvAwM4tyswpx8Qkx8DCLMgiBZfnYklhgHG1SWQZQLpEMAbA6mechiEKsAzF0D.png 라고 할 때 Q4SzZffNeweT_5O9OPNpn7wBS8ZDsIFLiQgAAAAAElFTkSuQmCC.png는 Q4SzZffNeweT_5O9OPNpn7wBS8ZDsIFLiQgAAAAAElFTkSuQmCC.png=Ax 같이 선형변환이 가능하다고 가정합니다. 선형변환이 가능하다면 내적도 선형변환을 통해 가능 할 것입니다. 따라서 선형변환이 이루어지는 두 내적공간만 정의 해주면 매핑과 내적을 동시에 하는 다음과 같은 커널함수를 만들 수 있습니다.

 MwRynwv9nQGM6iICCRFABqKDIAI0EUAG0kQfZSMCyED0AUSAJgLIQJroo2xEABmIPoAI0EQAGUgTfZSNCCAD0QcQAZoIIANpoo_y.png

고차원에서의 복잡한 연산없이 저차원에서 함수계산만으로 원하는 풀이를 할 수 있는 커널 함수를 사용하여 증가한 연산량의 문제를 해결하는 것입니다이 뒤로의 판별경계를 구하는 과정은 앞에서의 과정과 같습니다커널함수의 종류로는 기본적인 Linear커널과 다음과 같은 종류들이 있습니다.

 

Qaqy3T0hHOP8ykI6kOHFBHGm1gKyDQxgiA_04bGxCgDiDQkQgAB9SRRhvYCgi0MQLAAbWxAQHqAAIdiQBwQB1ptIGtgEAbIwAcUB.png

마치며

오늘은 분류모형으로 많이 쓰이는 SVM에대해 알아보았습니다. SVM은 선형결정경계를 사용하여 이진분류를 하는 것을 기본으로 하는 모델이지만 데이터에 따라 유연하게 대처할 수 있는 여러가지 방법들이 있습니다오늘 소개해드린 Soft margin을 사용하여 데이터의 noise를 해결 할 수도 있고 Kernel trick을 사용하여 비선형 분류도 수행할 수도 있습니다이 외에 데이터에 라벨이 지정되어 있지 않다면 클러스터링기법을 통해 그룹화를 진행하여 SVM을 가능케 할 수도 있습니다또한 다범주 문제도 다중 바이너리분류로 접근하면 1대 전체혹은 모든 범주를 11로 비교하는 방법 등을 통해 해결 할 수 있다고 알려져있습니다.

 

 

Reference

https://dev.datasift.com/blog/building-better-machine-learned-classifiers-faster-active-learning

https://docs.opencv.org/2.4/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html

http://gentlej90.tistory.com/43

https://en.wikipedia.org/wiki/Support_vector_machine

https://www.slideshare.net/kambliruta/event-classification-prediction-using-support-vector-machine

http://blog.hackerearth.com/simple-tutorial-svm-parameter-tuning-python-r

http://www.cogsys.wiai.uni-bamberg.de/teaching/ss06/hs_svm/slides/SVM_and_Kernels.pdf

 

Version history
Last update:
‎06-10-2020 10:29 PM
Updated by:
Contributors

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

Article Labels
Article Tags