본문 바로가기
ML | DL/머신러닝 이론|실습

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

by Leeys 2020. 10. 30.
반응형

*제가 이해한 내용을 적은 것이니, 틀렸을 경우 지적해주세요!

 

서포트 벡터 머신은 경계가 되는 초평면 사이 결정경계 양쪽 마진을 최대화 하는 것을 목적으로 하는 것이다.

* 초평면 : 경계를 만드는 선

* 마진 : 결정경계를 기반으로 서포트 벡터까지의 거리

 

 

서포트 벡터 머신

 

그림을 보면 점선 사이에 있는 변수들이 Support Vectors인 것을 알 수 있다.

이 변수들을 초평면을 기준으로 최대한 떨어트려놓는게 서포트 벡터 머신인데

이유를 설명하자면 이 그래프에서 세로로 가운데에 선을 그렸다고 상상해보자

그러면 파란색과 빨간색 변수들이 초평면 사이에 붙어있게 된다.

중앙에 새로운 빨간색 변수가 중간에 추가되면 그것은 빨간색 변수인지 파란색 변수인지 기계가 구분하지

못하게 된다. 그래서 초평면 사이에 마진을 최대화 하는 것이다.

 

서포트 벡터 머신은 이상치허용을 정할 수 있다.

 

 

 

슬랙변수(크사이)로 오차비용이 조정 가능한데, C라는 상수값을 통해서 늘리거나 줄여서 오버피팅과 언더피팅 사이의 적절한 점을 찾아야 한다. 

 

- hard magin(하드 마진) : 위에 그래프에서 하드마진을 보면 마진의 길이가 서포트벡터에 딱 맞춰있다. 이것은 C의 값

을 늘려서 error의 허용폭을 적게 하겠다는 것으로 과대적합이 될 수 있다. 

(C값을 늘리면 -> 오차에 대한 비용이 크다 -> 에러의 허용을 적게 한다 -> 과대적합 가능성)

 

- soft margin(소프트 마진 : 위에 그래프에서 소프트 마진을 보면 하드마진과 달리 마진의 길이가 길고 그 안에 여러개의 변수들이 포함되어 있다. C의 값을 줄여서 error의 허용폭을 크게 하겠다는 것으로 과소적합이 될 수 있다.

(C값을 내리면 -> 오차의 대한 비용이 작다 -> 에러의 허용폭을 크게 하겠다 -> 과소적합 가능성)

 

*과대적합(overfitting) : 데이터가 훈련셋에만 너무 딱맞아서 새로운 데이터가 들어왔을 때 패턴을 감지 못하는 것을 말한다. (훈련셋 정확도는 99%인데 테스트 데이터로 예측하니 70% 으로 나오는 경우)

 

*과소적합(underfitting) : 데이터가 훈련셋에서도 패턴을 감지못하고 새로운 데이터가 들어와도 패턴을 감지 하지 못하는 것(훈련셋 정확도도 60%인데 테스트 데이터도 40% 나오는 경우)

 

 

위에서는 선형으로 해결할 수 있는 데이터들 이였다.

 

 

 

이 그래프는 비선형이다 일자로 그려서는 해결이 불가능하다.

그래서 어떤 대단한 사람들이 생각한 것이 일명 '커널 트릭(Kernel trick)'을 사용하는 것이였다.

커널트릭은 이런 비선형 그래프에 한차원을 더 만들어 결정경계를 만들자!

이런식의 내용이다.

위 그래프를 예로 현재 2차원이기 때문에 한차원을 더 만들면 3차원이 된다.

그럼 파란색 점들은 위로 빨간색 점들은 아래로 가게 되고 가운데에 공간이 생길것이다.

그 초평면에 결정경계를 그리는 것이다.

이 방식에는 이름이 있는데 다항식 커널(polymomial kernel)이다.

 

제일 많이쓰는 방식은 방사 기저 함수(RBF, 가우시안 커널)이 있다.

다항식 커널이 고차원을 늘려서 결정경계를 그리는 방식이라면

RBF 커널은 무한대로 차원을 늘려서 결정경계를 그리는 것이다..

수학식은 패스하고, 여기서는 gamma값이 라는걸 조절 할 수 있는데

아까 위에서 본 C와 비슷하다 낮은값이면 오류의 허용을 많이하는 것이고

큰 값이면 오류의 허용을 적게하는 것이다.

 

 

 

마지막으로 서포트 벡터 머신이 분류에 자주 사용되지만 회귀에도 사용된다.

간단하게 말하면 분류에서는 최대 마진길이를 찾는게 목적이지만,

회귀에서는 그 마진안에 변수들이 최대한 많이 들어오는 것을 찾는것이다!

 

 

반응형

댓글