SVM(Support Vector Machine) ✔

홍정완·2021년 11월 19일
0

Machine Learning

목록 보기
2/3
post-thumbnail

Support Vector Machine

  • SVM은 선형 또는 비선형 분류뿐만 아니라 회귀, 이상치 탐색에도 사용
  • 특히 복잡한 분류 문제에 잘 맞으며, 중간 크기의 데이터 셋
  • 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘


5.1 선형 SVM 분류


SVM 분류기는 클래스 사이에 가장 폭이 넓은 도로를 찾는 것과 같다. => 라지 마진 분류

  • 마진 : 두 데이터 군과 결정 경계가 떨어져 있는 정도를 의미

라지 마진 분류(왼쪽)         SVM 분류기(오른쪽)


도로 바깥쪽에 훈련 샘플을 더 추가해도 결정 경계에는 영향을 미치지 않는다. (데이터가 추가되더라도 안정적으로 분류해낼 수 있다.)

도로 경계에 위치한 샘플에 의해 결정(의지) 된다. => 이런 샘플을 서포트 벡터라 부른다. (오른쪽 그림의 동그라미)

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


5.1.1 특성 스케일에 따른 민감성


  • 많은 데이터가 있지만 그중 서포트 벡터들이 결정 경계를 만드는 데 영향을 준다.
  • 서포트 벡터들의 위치에 따라 결정 경계 위치도 달라진다.
  • 결정 경계는 서포트 벡터들에 의지한다.

특성 스케일에 따른 민감성을 보여준다.


  • SVM은 특성의 스케일에 민감
  • 왼쪽 그래프는 X1 스케일이 X0 스케일보다 훨씬 커서 가장 넓은 도로가 거의 수평에 가깝다.
  • 오른쪽 그래프처럼 특성의 스케일을 조정하면 (ex.사이킷런의 StandardScaler 사용) 결정 경계가 훨씬 좋아진다.


5.2 소프트 마진 분류


Support vectors가 위치한 경계선에 여유를 두자

여유 변수(Slack Variable)

C라는 하이퍼 파라미터 제공(penalty)

모든 샘플이 도로 바깥쪽에 올바르게 분류되어 분류되어 있으면 하드 마진 분류라고 한다.

하드 마진 분류에는 두 가지 문제점이 있다.

  • 데이터가 선형적으로 구분될 수 있어야 한다.
  • 이상치에 민감하다.

이상치에 민감한 하드 마진이다.


이런 문제를 피하기 위해 유연한 모델이 필요하다

  • 도로의 폭을 가능한 넓게 유지한다.
  • 마진 오류(샘플이 도로 중간, 반대쪽에 있는 경우) 사이에 적절한 균형을 잡는다.
  • 이를 소프트 마진 분류라고 한다.

소프트 마진 SVM은 하드 마진과 달리 C라는 하이퍼 파라미터를 가진다.

넓은 마진(왼쪽)         적은 마진 오류(오른쪽)


사이킷런의 SVM 모델을 만들 때 여러 하이퍼 파라미터를 지정할 수 있는데, C는 그중 하나다.


  • C를 낮게 설정하면 왼쪽 그림과 같은 모델을 만든다.

    C 값을 줄이면 오류를 허용하는 정도가 커지며, Margin 또한 커진다.

    => C는 즉, cost는 얼마나 많은 데이터 샘플이 다른 클래스에 놓이는 것을 허용하는지 결정한다.

    마진 오류는 나쁘므로 일반적으로 적은 것이 좋다.
    하지만 이 경우에는 왼쪽 모델이 마진 오류가 많지만 일반화가 더 잘 될 것이다.

  • C를 높게 설정하면 오른쪽과 같은 모델을 만든다.

    	C 값을 크게 하면 오류를 허용하는 정도가 작아지며, Margin 또한 작아진다.
    
      SVM 모델이 과대 적합이라면 C를 감소시켜 모델을 규제할 수 있다.


5.3 비선형 SVM 분류


선형적으로 분류할 수 없는 데이터 셋이 존재
다항 특성과 같은 특성을 추가

선형적으로 분류할 수 없는 비선형 데이터 셋을 다루는 방법은 다항 특성과 같은 특성을 더 추가하는 것이다.

  • 선형적으로 구분되는 데이터 셋이 만들어진다.

특성을 추가하여 선형적으로 구분되는 데이터 셋 만들기


  • 왼쪽 그래프는 하나의 특성 X1만을 가진 데이터 셋 => 선형적으로 구분할 수 없다.
  • 오른쪽은 두 번째 특성 X2 = X1^2을 추가하여 만들어진 2차원 데이터 셋 => 선형적으로 구분 가능하다.

  • 사이킷런의 make_monns 데이터 셋과 PolynomialFeatrues 변환기, LinearSVC 사용


5.3.1 다항식 커널


다항식 특성들이 추가되면 모델 속도 느려짐
커널이라고 하는 트릭을 사용함

다항식 특성을 추가하는 것은 간단하고 (SVM뿐만 아니라) 모든 머신러닝 알고리즘에서 잘 작동한다.

  • 하지만 낮은 차수의 다항식은 매우 복잡한 데이터 셋을 잘 표현하지 못하고,
  • 높은 차수의 다항식은 굉장히 많은 특성을 추가하므로 모델을 느리게 만든다.

이때, SVM을 사용할 때 커널 트릭이라는 수학적 기교를 적용할 수 있다.

  • 커널 트릭은 실제로는 특성을 추가하지 않으면서 다항식 특성을 많이 추가한 것과 같은 결과를 얻을 수 있다.
    (즉, 주어진 데이터를 고차원 특성 공간으로 사상해 주는 것)

  • 실제로 특성을 추가하지 않기 때문에 엄청난 수의 특성 조합이 생기지 않는다.


🖐 그 중 가우시안 RBF 커널이 성능이 좋아 자주 사용된다.

다항식 커널을 사용한 SVM 분류기


  • SVC Class 사용
  • 왼쪽은 3차 다항식 커널을 사용해 SVM 분류기를 훈련시킨다.
  • 모델이 과대적합이라면 다항식 차수를 줄이고, 과소적합이면 늘려야한다.
  • 매개변수 coef()는 모델이 높은 차수와 낮은 차수에 얼마나 영향을 받을지 조절(default = 0)


5.3.2 가우시안 RBF 커널


가우시안 RBF 커널은 다항 특성 방식과 마찬가지로 유사도 특성 방식도 머신러닝 알고리즘에 유용하게 사용된다.

  • 추가 특성을 모두 계산하려면 연산 비용이 많이 들어감 (훈련 세트가 클 경우 특히 더)
  • 여기서 커널 트릭을 이용하면 유사도 특성을 많이 추가하는 것과 같은 결과를 얻을 수 있다.

RBF 커널을 사용한 SVM 분류기 - gamma(y)와 c를 바꾸어 훈련시킨 모델 들


  • 커널에는 Polynomial 커널, Sigmoid 커널, 가우시안 RBF 커널 등 종류가 많은데, 그중 가우시안 RBF 커널이 성능이 좋아 자주 사용된다.

    	각 커널마다 최적화를 도와주는 매개변수들이 있으며, RBF 커널의 경우 gamma를 조정해야 한다.
    
    	gamma는 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정한다.
    
    	gamma는 가우시안 함수의 표준편차와 관련되어 있는데, 클수록 작은 표준편차를 가진다.



  • SVM 기본 매개변수인 C도 있으므로, 총 2개의 파라미터를 설정해야 한다.

    	gamma를 증가시키면 종 모양 그래프가 좁아져서 각 샘플의 영향 범위가 작아지고. 
    	또한 결정 경계가 조금 더 불규칙해지고 각 샘플을 따라 구불구불하게 휘어진다.
    	작은 gamma 값은 넓은 종 모양 그래프를 만들고, 샘플이 넓은 범위에 걸쳐 영향을 주므로 결정 경계가 더 부드러워진다.
    
    	=> 즉, 하이퍼 파라미터 gamma가 규제의 역할을 한다.
    	모델이 과대적합이면 감소시켜야하고, 과소적합이면 증가시켜야한다.



  • 파라미터 C를 보면, C가 1000으로 큰 값일 때는 이상치를 인정하지 않으면서 분류한다.

    	C와 gamma 모두 적정 값을 찾아야 한다.
    	C는 데이터 샘플들이 다른 클래스에 놓이는 것을 허용하는 정도를 결정한다.
    	gamma는 결정 경계의 곡률을 결정한다.



  • 다른 커널도 있지만 거의 사용되지 않는다.

    	어떤 커널은 특정 데이터 구조에 특화되어 있음
    	문자열 커널이 가끔 텍스트 문서나 DNA 서열을 분류할 때 사용된다.



  • 여러 가지 커널 중, 선형 커널을 먼저 시도해 보는 것이 좋다.

    	LinearSVC가 SVC(kernel = "linear")보다 훨씬 빠르다.
    	특히, 훈련 세트가 아주 크거나 특성 수가 많은 경우에 좋다.
    	훈련 세트가 너무 크지 않으면 가우시안 RDF 커널도 좋다.(대부분 이 커널이 잘 맞음)
    	시간과 컴퓨팅 성능이 충분하다면 교차 검증과 그리드 탐색을 사용해 다른 커널도 시도해 볼 수 있을 것이다.


5.4 SVM 회귀


회귀에 적용하는 방법은 분류와 반대

분류의 목표는 정해진 margin 오류 안에서 두 클래스 간의 폭이 가능한 최대가 되도록 한다.

회귀의 목표는 마진의 밖이 오류에 해당, 마진 안쪽으로 최대한 많은 데이터들이 포함되도록



  • SVM 알고리즘은 다목적으로 사용할 수 있다.

    	- 선형, 비선형 분류뿐만 아니라 선형, 비선형 회귀에도 사용 가능하다.
    	- SVM을 분류가 아닌 회귀에 적용하는 방법 : 목표를 반대로 하는 것
    
    	⚪ 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 한 최대가 되도록 하는 대신, 
    	⚪ SVM 회귀는 제한된 마진 오류(도로 밖의 샘플) 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 학습
    
    	⚪ 도로의 폭은 하이퍼 파라미터 gamma로 조절

SVM 회귀

위 그림은 무작위로 생성한 선형 데이터 셋에 훈련시킨 두 개의 선형 SVM 회귀 모델을 보여준다.
하나는 마진을 크게(1.5), 다른 하나는 마진을 작게(0.5) 하여 만든다.

마진 안에서는 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없다.
(모델 prediction은 굵은 선에 해당하는 선으로 예측)
=> 이 모델을 하이퍼 파라미터에 **민감하지 않다**고 말함

2차 다항 커널을 사용한 SVM 회귀

위 그림은 임의의 2차 방정식 형태의 훈련 세트에 2차 다항 커널을 사용한 SVM 회귀이다.
비선형 회귀 작업을 처리하려면 커널 SVM 모델을 사용한다.
왼쪽 그래프는 규제가 거의 없고(아주 큰 C), 오른쪽 그래프는 규제가 상대적으로 많다(작은 C)

SVR은 SVC의 회귀 버전, LinearSVR은 LinearSVC의 회귀 버전
LinearSVR은 (LinearSVC처럼) 필요한 시간이 훈련 세트의 크기에 비례해 선형적으로 늘어난다.
SVR은 (SVC처럼) 훈련 세트가 커지면 훨씬 느려진다.


5.5 SVM 이론


SVM의 예측은 어떻게 이루어지고, SVM의 훈련 알고리즘은 어떻게 동작하는지에 대한 내용

편향을 b, 특성의 가중치 벡터를 w라 표기
입력 특성에 편향을 위한 특성이 추가되지 않는다.



5.5.1 SVM의 목표


여백(margin)의 크기는 일반화와 관련

마진을 **최대화**하는 결정 초평면(decision hyperplane)을 찾는 것이 목표


5.5.2 결정 함수와 예측


선형 SVM 분류기 모델은 단순히 결정함수를 계산해서 새로운 샘플 x의 클래스를 예측함
결과값이 0보다 크면 예측된 클래스는 양성 클래스(1), 아니면 음성 클래스(0)이 됨.

선형 SVM 분류기의 예측



iris 데이터셋의 결정 함수

특성이 두 개(꽃잎 너비와 길이)인 데이터 셋이기 때문에 2차원 평면이다.

결정 경계는 결정 함수의 값이 0인 점들로 이루어져 있다.(두 평면의 교차점으로 직선, 굵은 실선)

점선은 결정 함수의 값이 1 또는 -1인 점들
	이 선분은 결정 경계에 나란하고 일정한 거리만큼 떨어져서 마진을 형성하고 있다.
	선형 SVM 분류기를 훈련한다는 것은 마진 오류를 하나도 발생하지 않거나(하드 마진)
	제한적인 마진 오류를 가지면서(소프트 마진) 가능한 한 마진을 크게 하는 w와 b를 찾는 것


목표


마진을 가장 크게 하는 결정 초평면의 방향
즉 w를 찾는 것이 목표
마진은 색이 칠해진 데이터 포인트(Support Vector)에 의해 결정


5.5.3 Soft Margin SVM


  • Slack 변수를 추가한 소프트 마진의 목적함수


5.5.4 커널 SVM


정리

  • 선형으로 분리되지 않는 데이터를 비선형 매핑
  • 커널 함수를 이용해 저차원(L)에서 고차원(H)으로의 매핑(mapping)을 통해 해결
  • 커널 함수를 이용하는 SVM을 Kernel SVM이라 한다.
  • 커널 함수는 두 개의 벡터(데이터)를 입력으로 가짐
  • K(a, b) 형태
  • L 공간 상의 두 벡터 a 와 b를 입력 변수로 갖는 커널 함수 K(a, b) 는 K(a, b) = Φ(a)⋅Φ(b)를 만족하는 매핑 함수 Φ(⋅)가 존재해야 함
  • 커널 함수의 값과 H 상으로 매핑된 두 점 Φ(a) 와 Φ(b)의 내적이 같아야 함


개념


2차원 데이터 셋에 2차 다항식 변환을 적용하고 선형 SVM 분류기를 변환된 이 훈련 세트에 적용한다고 가정
  • 다음 식은 적용하고자 하는 2차 다항식 매핑 함수 Φ


변환된 벡터는 2차원이 아닌 3차원
두 개의 2차원 벡터 a와 b에 2차 다항식 매핑을 적용한 다음 변환된 벡터로 점곱을 하면 다음과 같다.



profile
습관이 전부다.

0개의 댓글