SVM

Moon·2021년 8월 10일

->본 컨텐츠는 핸즈온 머신러닝 도서 5장 SVM부분을 참고하여 작성함

기본 개념

Support vector machine(SVM)은 매우 강력한 linear 혹은 nonlinear 분류,회귀,이상치 감지(outlier detection)에 사용할 수 있는 머신러닝 모델이다. 특히 복잡한 분류에 잘 들어맞으며 작거나 중간 크기의 데이터셋에 적합하다.
SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것으로 생각할 수 있는데 이를 라지 마진 분류(large magine classification)라고 한다.

알아야 할 명사

->도로의 사이의 중간 직선을 결정 경계라 한다.(그림의 실선)
->도로 경계에 위치한 샘플을 서포트 벡터(support vector)라고 한다.(그림의 동그라미)
->마진은 두 데이터 군과 결정 경계가 떨어져 있는 정도를 가르킨다.(그림 점선 사이의 거리)


SVM은 스케일에 민감하다, 왼쪽 그림에서 수직축 스케일(0~80)이 수평축(0~6)보다 훨씬 커서 결정 경계가 거의 수평에 가까운것을 관찰할 수있다. 때문에 스케일 조정 전처리를 거치면 결정 경계가 훨씬 좋아진다.(오른쪽 그림)

하드 마진 분류 & 소프트 마진 분류란

모든 샘플이 올바르게 결정 경계 바깥쪽에 올바르게 분류되면 하드 마진 분류(hard margin classification)라고 한다. 하지만 두 가지 문제점이 존재한다.
1.데이터가 선형적으로 구분가능해야 함
2.이상치에 민감함
이로 인해, 왼쪽 그림은 하드 마진을 찾을 수 없고, 오른쪽 그림은 한개의 이상치 때문에 결정 경계의 폭이 엄청 좁아진것을 볼 수 있다.

이런 문제를 피하려면 더욱 유연한 모델이 필요하다. 즉 결정 경계의 폭을 가능한 넓게 유지하되 마진 오류(샘플이 완벽히 경계 바깥쪽에 있지 않고 중간이나 심지어 반대쪽에 있는 경우)사이에 적정한 균형을 잡는데 이를 소프트 마진 분류(soft margin classification)라고 한다. 코드로 구현 시 일반적으로 하이퍼 파라미터를 사용해 이 균형을 조절한다.

비선형 SVM 분류

선형적으로 즉 직선으로 분류할 수 없는 데이터셋이 존재한다. 이때, 한가지 방법은 특성을 더 추가하는 것 이다. 예를 들어, 왼쪽 그림처럼 특성 x1만 존재시, 선형적으로 분류할 수 없다. 하지만 특성 x2=x1^2을 추가하여 2차원 데이터 셋으로 만들면 선형적으로 구분가능하다.

위 예제처럼 다항식 특성을 추가하는 것은 잘 작동하지만 두 가지 한계점이 존재한다.
1.낮은 차수의 다항식은 매우 복잡한 데이터셋을 잘 표현하지 못함
2.높은 차수의 다항식은 많은 특성을 추가하므로 모델을 느리게 만듬
이때, 커널 트릭(kernel trick)이라는 수학적 기교를 사용한다. 커널 트릭은
->실제로 특성을 추가하지 않지만 데이터를 고차원 특성 공간으로 사상(아래 그림과 같이)해줌으로써 추가한것과 같은 결과를 얻을 수 있음
->실제로 특성을 추가하지 않기에 엄청난 수의 특성 조합이 생기지 않음

커널에는 Polynomial커널,Singmoird커널, 가우시안 RBF커널 등 종류가 있으며 가우시안 RBF커널이 성능이 좋아 자주 사용한다. 하이퍼파라미터인 다항식 커널의 차수는 탁색적 방법(즉 실험)을 통해 결정한다. 모델이 과대적합이면 다항식의 차수를 줄이고, 반대로 과소적합이면 차수를 늘려야 한다.

유사도 특성 추가
비선형 특성을 다루는 한가지 방법은 샘플이 특정 랜드마크(landmark)와 얼마나 닮았는지 측정하는 유사도 함수(similarity function)로 계산한 특성을 추가하는 것이다. 예를 들어 아래 왼쪽 그림에서 1차원 데이터셋에서 2개의 랜드마크 x1 =-2와 x2=1을 랜드마크로 선정하고, 가우시안 방사 기저 함수(radial basis function,RBF)을 유사도 함수로 정의한다(아래식).이식을 통해 새로운 특성을 생성한다.

->식에서 감마는 설정하는 하이퍼 파라미터, 절대치 안에 값은 랜드마크와 샘를의 거리값
->이 함수의 값은 0(랜드마크와 샘플이 멀리 떨어진 경우)부터 1(가까운 경우)사이까지 변화하며 종모양으로 나타남
->위에서 선정한 식을 통해(감마를 0.3으로 설정), x1=-1 샘플을 예를 들어 보면, x2=exp(-0.31^2) =0.74, x3=exp(-0.32^2) =0.30를 얻는다.
->감마를 증가시키면 종 모양(아래 왼쪽 그림) 그래프가 좁아진다. 결과적으로 각 샘플 영향 범위가 작아지며 결정 경계가 조금 더 불규칙해지고 샘플을 따라 구불구불하게 휘어진다. (모델이 과대 적합이면 감소시켜야 하고 과소직합일 경우엔 증가시켜야 한다.)
->아래 오래쪽 그림에서 보시다시피, 화살표로 가리킨 샘플은, 사전 선정된 랜드마크 기반으로 x1샘플을 방사 기저함수를 통해 얻은 x2,x3값으로 변환된것이다. 다른 샘플도 마찬가지, 결론적으로 선형적으로 구분이 가능해진것을 관찰할 수 있다.

랜드마크 선택방법은, 모든 샘플위치에 랜드마크를 설정하는것이다. 그러면
1.차원이 매우 커지고 변환된 데이터 가 선형적으로 구분될 가능성이 높음
2.단점은 n개의 특성을 가진 m개의 샘플이 특성을 m개가진 m개의 샘플로 변환함, 이때, 훈련 셋이 클 경우 동일한 크기의 아주 많은 특성이 만들어 지는것이다.

가우시안 RBF 커널

유사도 특성 추가 방식도 유용하게 사용되지만 훈련 세트가 클 경우 연산 비용이 많이 들어간다. 여기서 커널 트릭을 사용하여 실제로 특성을 추가한것과 같은 결과을 얻을 수 있다. 여러가지 커널 중, RBF 커널이 대부분 상황에서 가장 좋으며, 선형커널 시도해보는거도 나쁘지 않다.특히 RBF커널에서, 감마값의 설정이 중요하다. 감마는 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정한다.

이상 svm 분류에 대한 파트이다.

SVM 회귀
svm알고리즘은 선형,비선형 분류만 아니라 선형,비선형 회귀에도 사용가능하다. SVM회귀는 SVM 분류와 목표가 반대이다. 구체적으로,SVM 분류는 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 최대가 되도록 하지만 SVM 회귀는 제한된 마진 오류안에서 도로 안에 가능한 많은 샘플이 들어가도록 학습한다. 또한 도로의 폭은 ε으로 조절한다. 아래 왼쪽 그림은 마진을 크게 설정하고 오른쪽은 작게 설정한 것이다.

비선형 회귀 작업에 있어서는 분류와 마찬가지로 커널 SVM 모델을 사용한다.

이상 SVM 알고리즘 기본 개념이였고 지금부터 심화내용이다.

SVM 이론

이 절에서는 SVM의 예측, 훈련 알고리즘에 대해 살펴본다.

profile
AI 기본개념 정리

0개의 댓글