Knowledge/인공지능

서포트 벡터 머신(SVM)

gyulee0220 2018. 1. 21. 12:29

1. 정의

  학습 데이터가 벡터 공간에 위치 한다고 생각하고, 선형 분리자를 찾는 기하학적 모델


2. 특징

  - 두 그룹을 구분하는 직선식을 찾는다. 직선식을 사이에 두고 최대한 두 그룹이 멀리 떨어져 있어야 한다.

  - 사전 학습이 있는 지도 학습

  - 데이터를 2개의 그룹으로 분류함

  - 벡터 공간은 각각 좌표계에 학습 데이터가 위치한 공간


3. SVM 모델

  - 두 개의 그룹을 분리하는 직선 y%3D%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccdot%20x%2Bb%20을 찾는다.

  - w는 직선에 수직은 법선 벡터이고, 크기는 w의 절대값이다.

  - w는 직선을 회전시키는 성질을 갖는다.

  - b는 스칼라 상수이고, b 값에 따라 직선이 상하좌우로 평행이동한다.

  - w*x 는 스칼라 곱으로도 표현 가능하고, 그 값은 w*x*cos z로 계산된다. (z: 두 벡터 사이의 각도)

  - 구한 값의 양의 값 혹은 음의 값에 따라 두 경계를 비교한다.


4. 분석 과정


 <하드 마진>

  1) 두 그룹을 나누는 직선식을 1차식으로 가정한다. (y%3D%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccdot%20x%2Bb%20)


  2) 이 직선이 이동하면서 1영역의 데이터와 만나는 선을 %5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccdot%20%5Ccombi%20_%7B%20%5Cbeta%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%3D%5Cquad%201%20라고 하고, 같은 방법으로 다른 영에서 만난 선을 %5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccdot%20%5Ccombi%20_%7B%20%5Calpha%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%3D%5Cquad%20-1%20라고 하자. 이 두 선을 서포트 벡터 라고 한다.


  3) 두 서포트 벡터사이의 거리인 마진 M을 구한다. 마진은 (X_a-X_b)의 w방향 성분이다. (X_a-X_b의 벡터가 w와 동일해야 최소값이 되므로) 따라서, 마진은 벡터 X_a-X_b와 w의 단위 벡터와의 스칼라 곱이 된다.

  마진은 아래 식으로 구할 수 있고, 마진이 최대가 되도록 구해야 한다.

M%5Cquad%20%3D%5Cquad%20%5Cfrac%20%7B%20w%20%7D%7B%20%5Cleft%5C%7C%20w%20%5Cright%5C%7C%20%20%7D(%5Ccombi%20_%7B%20%5Calpha%20%20%7D%7B%20x%20%7D-%5Ccombi%20_%7B%20%5Cbeta%20%20%7D%7B%20x%20%7D)%5Cquad%20%3D%5Cquad%20%5Cfrac%20%7B%20%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D(%5Ccombi%20_%7B%20%5Calpha%20%20%7D%7B%20x%20%7D-%5Ccombi%20_%7B%20%5Cbeta%20%20%7D%7B%20x%20%7D)%20%7D%7B%20%5Cleft%5C%7C%20w%20%5Cright%5C%7C%20%20%7D%20 


  서포트 벡터의 차이가 2라는 점을 이용한다면, 아래 식으로 바꿀 수 있다.

M%5Cquad%20%3D%5Cquad%20%5Cfrac%20%7B%202%20%7D%7B%20%5Cleft%5C%7C%20w%20%5Cright%5C%7C%20%20%7D%20 

  마진을 최대로 하기 위해서는 w가 최소가 되어애 한다.


  4) 최소가 되는 w를 구하기 위해 아래의 최적화 식을 구한다.

%5Clim%20_%7B%20w%2Ca%20%7D%7B%20%5Cfrac%20%7B%201%20%7D%7B%202%20%7D%20%7D%5Ccombi%20%5E%7B%202%20%7D%7B%20%5Cleft%5C%7C%20%5Cquad%20w%5Cquad%20%20%5Cright%5C%7C%20%20%7D%20 


  그리고 앞에서 두 선의 조건에 따라 모든 데이터는 아래의 조건을 만족한다.

%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%5Calpha%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%5Cge%20%5Cquad%201%20

%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%5Cbeta%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%5Cle%20%5Cquad%20-1%20 


  두 개의 부등식을 수학적인 편의성을 위해 다음과 같이 하나로 표현한다.

%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D(%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%20%7D%7B%20x%20%7D%2Bb)%5Cquad%20%5Cge%20%5Cquad%201%20 


  5) 라그랑지언을 이용해 조건식이 포함된 최적화 문제로 변환한다.

%5CL%20%3D%5Clim%20_%7B%20w%2C%5Calpha%20%20%7D%7B%20%5Cfrac%20%7B%201%20%7D%7B%202%20%7D%5Ccombi%20%5E%7B%202%20%7D%7B%20%5Cleft%5C%7C%20%5Cquad%20w%5Cquad%20%20%5Cright%5C%7C%20%20%7D%20%7D%5Cquad%20-%5Cquad%20%5Csum%20_%7B%20i%20%7D%5E%7B%20%20%7D%7B%20%5Ccombi%20_%7B%20i%20%7D%7B%20a%20%7D%5Cleft%5C%7B%20%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D(%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccdot%20%5Ccombi%20_%7B%20i%20%7D%7B%20x%20%7D%2Bb)-1%20%5Cright%5C%7D%20%20%7D%20 


  (라그랑지언 방정식 생략)

따라서 기울기와 상수는 아래와 같은 식으로 구한다.

w%3D%5Csum%20_%7B%20i%20%7D%5E%7B%20%20%7D%7B%20%5Ccombi%20_%7B%20i%20%7D%7B%20a%20%7D%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D%5Ccombi%20_%7B%20i%20%7D%7B%20x%20%7D%20%7D%20 

b%3D%5Cfrac%20%7B%201%20%7D%7B%20N%20%7D%5Csum%20_%7B%20s%5Cin%20S%20%7D%5E%7B%20%20%7D%7B%20%5Cleft(%20%5Ccombi%20_%7B%20s%20%7D%7B%20y%20%7D-%5Csum%20_%7B%20m%5Cin%20S%20%7D%5E%7B%20%20%7D%7B%20%5Ccombi%20_%7B%20m%20%7D%7B%20a%20%7D%5Ccombi%20_%7B%20m%20%7D%7B%20y%20%7D%5Ccombi%20_%7B%20m%20%7D%7B%20%5Ccombi%20%5E%7B%20T%20%7D%7B%20x%20%7D%20%7D%5Ccombi%20_%7B%20s%20%7D%7B%20x%20%7D%20%7D%20%5Cright)%20%20%7D%20 


새로운 데이터에 대한 예측은 예측은 아래의 식으로 가능하다.

 %5Cbar%20%7B%20y%20%7D%5Cquad%20%3D%5Cquad%20sgn(%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Cbar%20%7B%20x%20%7D%5Cquad%20%2B%5Cquad%20b)%20


  이 방법을 하드마진 방식으라고 한다. 두 개의 그룹을 분리하는 경계식을 엄격하게 구한다. 모든 입력값은 이 경계식을 사이에 두고 한 그룹에 속해야 한다. 이 방식은 노이즈로 인해 경계식이 안나올 수도 있고, 잘못된 결과가 노출 될 수도 있다.


 <소프트 마진>


  소프트 마진은 하드 마진 방식에서 약간의 여유인 슬랙(slack)을 두는 것이다.

  

  1) 하드 마진에서의 2개의 조건식에 슬랙 상수를 추가한다.

  %5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%5Cbeta%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%5Cle%20%5Cquad%20-1%5Cquad%20%2B%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cxi%20%20%7D%5Cquad%20%5Cquad%20for%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D%3D-1%20

%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%5Calpha%20%20%7D%7B%20x%20%7D%2Bb%5Cquad%20%5Cge%20%5Cquad%201%5Cquad%20-%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cxi%20%20%7D%5Cquad%20%5Cquad%20for%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D%3D1%20 

%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cxi%20%20%7D%5Cquad%20%5Cge%20%5Cquad%200%5Cquad%20%5Cquad%20for%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cquad%20%5Cforall%20%20%7D%20 


  2) 두 식을 합치면 아래와 같이 나타낼 수 있다.

%5Ccombi%20_%7B%20i%20%7D%7B%20y%20%7D(%5Ccombi%20%5E%7B%20T%20%7D%7B%20w%20%7D%5Ccombi%20_%7B%20i%20%7D%7B%20x%20%7D%5Cquad%20%2B%5Cquad%20b)%5Cquad%20-1%5Cquad%20%2B%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cxi%20%20%7D%5Cquad%20%5Cge%20%5Cquad%200%2C%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cxi%20%20%7D%5Cquad%20%5Cge%20%5Cquad%200%5Cquad%20for%5Cquad%20%5Ccombi%20_%7B%20i%20%7D%7B%20%5Cforall%20%20%7D%20 


  3) 하드 마진 방식과 동일하게 최적화 목적 함수를 구한 뒤, 라그랑지언을 이용하여 식을 구 할 수 있다. 단, 슬랙에 대한 식도 추가되므로 한가지 구속 조건이 추가된다. (자세한 내용은 생략)


5. 정리

  앞에서 배운 2가지 KNN과 SVM은 지도학습의 대표적인 알고리즘이다. 둘다 사전데이터에 각각 레이블이 존재해야 합니다. 두 알고리즘을 자신이 가진 데이터에 따라 잘 활용해야 합니다.

 KNN는 경우에 따라 영역 별로 나눠지지 않을 수도 있습니다. 데이터들의 특성에 따라 새로운 데이터가 접근하면 그에 따라 주변에 데이터 갯수로 비교하기 때문입니다. 그래서 반드시 영역 별로 나눠지는 데이터에는 적합하지 않습니다. 계산과정이 간단하여 쉽게 구현이 가능하나 데이터 갯수가 적으면 제대로 된 결과를 도출 되지 않습니다.

 반대로 SVM은 영역에 따라 나눠집니다. 영역별로 나눠지지 않는 데이터가 있으면 결과값이 도출 되지 않을 수 있습니다. 다만 영역별로 나눠지기 때문에 매우 하드한 모델이고, 데이터가 적어도 결과를 쉽게 도출될 수 있습니다. 다만, 구현 과정이 굉장이 어렵습니다.