티스토리 뷰

svm_kaggle발표용

오늘은 SVM이 무엇인지에 대하여 살펴봅시다. 복잡한 수식은 이 글에서 다루지 않으며 간단하게 발전해온 과정과 알고리즘의 아이디어만 다룹니다.

 

 

 

 

Maximal margin classifier (최대 마진 분류기)

 

훈련관측치를 2차원 공간위에 그렸다고 생각해봅시다. 위 그림은 2차원 공간에 있는 훈련관측치를 1차원의 초평면으로 이등분한 것입니다. 당연히 초평면을 기준으로 얼마나 훈련관측치를 잘 분류하느냐가 최대 관심사일 것입니다. 여기서 잠시 초평면에 관해 설명하겠습니다. p 차원 공간에서 초평면(hyperplane) 은 차원이 p-1 인 평평한 affine(아핀: 부분공간이 원점을 지날 필요가 없다) 부분공간입니다. 무슨 말이냐구요? 2차원에서의 초평면은 1차원 부분공간, 즉 선이고 3차원에서는 평평한 2차원 부분공간, 즉 평면이라는 뜻입니다.

 

그런데 이 초평면은 p차원 공간에서 무한히 생길 수 있습니다. 따라서 훈련관측치를 가장 잘 분류하는 초평면을 골라야합니다. 이제 최대 마진 초평면이 등장하는군요. 마진(margin)이란 관측치들에서 초평면들까지의 가장 짧은 거리로 마진이 가장 큰 초평면이 관측치를 가장 잘 분류한다고 판단합니다.

최대 마진 초평면은 1) 선형경계를 가지며 2)관측치의 특정 부분집합에만 의존한다(=서포트벡터) 3) 개별관측치에 민감하다(데이터가 추가됨에따라 초평면이 변함) 특성을 가지고 있습니다.

 

 

 

 

Support Vector Classifier (서포트 벡터 분류기)

위의 최대 마진 분류기가 hard margin 이라면 SVC는 soft margin에 해당합니다. 실제 데이터 상에서는 모든 관측치를 완벽하게 분류하는 초평면은 존재하지 않을 수도 있으며 이를 완화하기위하여 마진을 넘어가도 허용해주는 것이 SVC입니다. 그림을 보면 보라색 관측치 1은 마진을 넘어갔고 심지어 관측치 12는 아예 다른 클래스로 분류되었습니다. 이렇게 잘못분류되었을지라도 허용해주는 것이 SVC이며 이는 규제 매개변수C로 조절합니다.

 

 

 

 

 

Support Vector Machine (서포트 벡터 머신)

마지막으로 SVM입니다. 최대 마진 분류기와 서포트 벡터 분류기는 모두 선형경계를 가지고 있습니다. 따라서 데이터가 선형적으로 나눠질 수 없다면 분류할 수 없습니다. 이를 위해 비선형 결정 경계를 제공하는 것이 SVM입니다. SVM은 설명변수들끼리 곱하거나 설명변수를 n차로 높이는 방식을 이용하여 비선형적인 특성을 더했습니다. 그러나 이렇게 되면 어떤 변수를 선택해서 비선형적으로 만들어야하는지 모르고 연산량이 많아지는 단점이 있습니다. 이를 극복하기 위해 kernel 기법을 도입했죠. 커널기법의 수식은 복잡하므로 여기선 간단히 계산상의 잇점을 위해 쓴다고만 언급하고 넘어가겠습니다.

 

 

 

이 커널에도 polynomial kernel, rbf kernel(=Gausian kernel), linear kernel,sigmoid kernel이 있습니다. 그럼 우리는 데이터 분석시 어떤 커널을 써야할까요? 미시간주립대학의 Sebastian Raschka단순한 공간부터 복잡한 공간으로 커널을 진행하라고 조언합니다. 만약 데이터가 linearly seperable하다면 처음부터 잘 적용되겠죠. (metric의 performance로 판단가능)

예를 들자면, 한 데이터가 LinearSVM 과 RBF kernel SVM 둘다에서 잘 작동한다고 칩시다. 그럼 굳이 RBF를 쓸 이유가 없다는 겁니다. linearSVM은 parametric model인 반면 rbf는 nonparametric model이죠. 또 rbf는 튜닝해야할 파라미터들이 더 많아서 복잡합니다.

특이한 점은 polynomial 커널은 별 신경을 안 쓴 점인데요. 성능상, 그리고 계산상의 이유로 덜 효율적이기때문이라고 합니다. 결론적으로 linear한 문제일 경우 linear SVM 또는 logistic Regression을, nonlinear한 문제라면 비선형 커널인 rbf 커널 등을 써라는 거네요.

 

 

sklearn에서 하이퍼파라미터를 튜닝할 때 해당 파라미터가 어떤 의미인지 알아야겠죠? 커널마다 파라미터가 다르기 때문에 sklearn에서 유심히 살펴보아야합니다. rbf 커널의 경우 C와 gamma를 튜닝합니다. C는 이상치의 허용정도라 보면 됩니다. C가 클수록 허용정도가 작아지기 때문에 경계가 구불구불한 모습이 보이네요. gamma는 커널폭의 역수이기 때문에 값이 커질수록 폭이 좁아집니다.

 

 

 

그림출처

  • ISLR

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함