이번엔 타이타닉 데이터를 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
서포트 벡터 머신(SVM)의 사용자로서 꼭 알아야할 것들 - 매개변수 C와 gamma
서포트 벡터 머신(SVM)은 딥 러닝이 나온 이후에도 여전히 환영받고 있는 머신러닝(기계학습) 알고리즘이다. 웬만한 상황에서 딥 러닝 못지 않은 성능을 내고, 무엇보다도 가볍기 때문이다. 나도 분류(classificat..
bskyvision.com
'Archive' 카테고리의 다른 글
[ML적용Case] Titanic Data applied to Decision Tree model (0) | 2019.11.25 |
---|---|
Think whether ML/DL is applied to the selected data. (0) | 2019.11.17 |