본문 바로가기

Archive

[ML] SVM(Support Vector Machine) is apllied to Titanic_Data

반응형

이번엔 타이타닉 데이터를 SVM에 적용해보려고 한다. 우선 SVM에 대해서 살펴보자

SVM은 Support Vector Machine의 준말이다.

 

<SVM 종류>

SVM은 두 개의 매개변수( Cost, gamma )가 사용자에 의해 세팅되어야 한다!

이 두개의 매개변수를 grid search라는 경험적인 방법에 의해서만 선택한다.

여기서 grid search란 그림 1과 같이 매개변수들의 여러 조합을 테스트해서 가장 

좋은 성능을 내는 매개변수를 찾아내는 것이다.

 

1. Linear(선형) SVM 

- 사용자가 설정해야하는 매개변수 = Cost

- 최적의 선형 결정 경계(=분리 초평면) 찾는 알고리즘

- margin = 두 데이터 군과 결정 경계간의 떨어져 있는 정도

  -> SVM의 목표는 이 margin이 가장 큰 결정 경계를 찾는 것!

2. RBF(Radial Basis Function) 커널 SVM

- 사용자가 설정해야하는 매개변수 = Cost + gamma

- 주어진 데이터를 고차원 특정 공간으로 사상해주는 것

 

 

# 서포트 벡터들은 두 클래스 사이의 경계에 위치한 데이터 포인트들이다

  (그림에선 점선 위에 있는 데이터들)

서포트 벡터

<Parameter>

1. 대부분의 데이터는 밑과 같이 이상치들이 관측되는 경우가 대부분이다.

이를 해결하기 위해서 약간의 오류를 허용하는 전략이 만들어 졌는데 이에 관한

파라미터가 바로 Cost(C)이다! 

*Cost = 얼마나 많은 데이터 샘플이 다른 클래스에 놓이는 것을 허용하는지 !

           적을수록 많이 허용하고, 클 수록 적게 허용한다

           적을수록 이상치의 존재 가능성을 크게 잡아 일반적인 결정 경계를 찾아내고

           클수록 이상치의 존재 가능성을 작게 잡아 세심하게 결정 경계를 찾아낸다.

          예시로) 난 데이터 샘플 하나도 잘못 분류할 순 없어! -> Cost 크게!

                    난 약간의 오류 허용해도 괜찮아 -> Cost 낮게!

그렇기 때문에, Cost가 너무 낮으면 과소적합이 될 가능성이 커지고 너무 높으면

과대적합이 될 가능성이 커진다.

(참고로, C가 있으면 Hard margin , 없으면 soft margin svm이라 불린다!)

 

2. gamma ( RBF 커널 SVM에 해당)

gamma = 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정!

              클수록 한 데이터 포인터들이 영향력을 행사하는 거리가 짧다.

              작을수록  데이터 포인터들이 영향력을 행사하는 거리가 길어진다.

 

=> gamma 값이 커질수록 결정 경계 가까이에 있는 데이터 샘플들에 영향을 크게

     받기 때문에 결정경계의 곡률이 구불구불해진다.

 

#과연 그럼 타이타닉 데이터를 적용해서 SVM을 적용시키면 어떻게 될까?

우선 타이타닉 데이터에 대한 Feature가 2차원을 넘어버리기 때문에 RBF 커널 SVM을 적용시켜야 할 것 같다.

Cost의 디폴트 값은 1이다. train 데이터를 보았을때 개인적으로 굳이 뽑자면 'Fare' feature

에 그나마 이상치가 존재할 것 같고 나머지 feature들은 아무리 리얼밸류가 다양해도 0-3 사이에

한정되기 때문에 이상치가 그렇게 많지 않을 것으로 예상되므로 cost는 디폴트 값으로 설정하거나

조금 더 높게 잡아도 될 것 같다. 

gamma의 디폴트 값은 0.1이다. 타이타닉 데이터의 여러가지 feature중에 생존여부에 가장 크게

영향을 미칠 것으로 예상되는 Sex와 Pclass feature를 감안해서 gamma값을 디폴트값보다

조금 낮춰보는 시도를 해볼 수 있을것 같다.

 

 

 

 

 

글 참고용으로 쓴 블로그 이다. 링크 통해 들어가면 더 자세한 설명을 볼 수가 있다.

https://m.blog.naver.com/tjdudwo93/221051481147

 

SVM(Suppot Vector Machine)으로 분류(Classification)하기

-서포트 벡터 머신(Support Vector Machine)- ▶서포트 벡터 머신(SVM)이란? 서포트 벡터 머신(SV...

blog.naver.com

https://bskyvision.com/163

 

서포트 벡터 머신(SVM)의 사용자로서 꼭 알아야할 것들 - 매개변수 C와 gamma

서포트 벡터 머신(SVM)은 딥 러닝이 나온 이후에도 여전히 환영받고 있는 머신러닝(기계학습) 알고리즘이다. 웬만한 상황에서 딥 러닝 못지 않은 성능을 내고, 무엇보다도 가볍기 때문이다. 나도 분류(classificat..

bskyvision.com

 

반응형