안녕하세요
이번 게시글은 Support Vector Machine의 개념과 SAS Viya에서 Support Vector Machine 옵션들에 대해서 알아보겠습니다.
Support Vector Machine (SVM)
SVM은 분류(Classification)나 회귀(regression)에 사용이 가능하며, 특히 분류 쪽의 성능이 뛰어나기 때문에 분류 분야에 많이 사용됩니다. SVM은 지도학습 알고리즘이며, 2개의 범주를 분류하는 이진 분류기로 hyper-plane(초평면)을 이용해 카테고리를 나눕니다.
SVM의 기본적인 원리는 위의 그림과 같이 파란색 데이터와 빨간색 데이터가 학습용 데이터로 주어졌을 때, 두 그룹에서 각각의 데이터 간 거리를 측정하여 두 개의 데이터 사이의 중심을 구한 후에 그 가운데에서 최적의 hyper-plane(초평면)을 구함으로써 데이터를 2개의 그룹으로 나누는 방법을 학습하게 된다. 여기서 직선으로 나눌 수 있다면 선형 분류 모델을 적용하고 직선으로 나눌 수 없는 경우 비선형 분류 모델을 사용하게 된다.
구체적으로 설명하자면, SVM은 학습데이터를 비선형 매핑(Mapping)을 통해 고차원으로 변환합니다. 이 새로운 차원에서 hyper-plane을 최적으로 하는 분리하는 선형분리를 찾습니다. 즉, 최적의 Decision Boundary(의사결정 영역)을 찾습니다.
그러면 왜 데이터를 고차원으로 보낼까요?
위의 왼쪽 그림을 보면 오른쪽에 있는 그림으로는 non-linearly separable하지만 한 차원 높은 3차원으로 Mapping하게 되면 linearly separable(선형 분리)하게 됩니다.
따라서, 충분히 큰 차원으로 적절한 비선형 매핑을 이용하면 두 개의 클래스를 가진 데이터는 초평면 hyper-plane에서 항상 분리 될 수 있습니다.
SVM은 복잡한 비선형 의사결정 영역을 모형화 할 수 있기 때문에 매우 정확하며, 다른 모델보다 over fitting되는 경향이 적습니다.
w: 가중치 벡터
x: 입력값
b: 원점(origin)에서 이동한 거리(편향,bias)
두 개의 클래스가 선형으로 분리되는 경우를 통해 SVM에 대해서 설명하고자 합니다.
데이터 집합 D는 (X1,y1), (X2,y2), ... , (Xd,yd)로 주여졌을 때, Xi는 클래스이고 yi는 훈련용 데이터 집합일 때, 각 yi는 buys_computer = yes로 +1의 값을 가지며 buys_computer = no로 -1의 값을 갖는다. 왼쪽 아래에 있는 그림은 특정 속성값 A1, A2에 대한 Vector의 분포입니다. 그림에서 2차원 데이터는 선형적으로 분리 가능합니다. ( linearly separable)
분리할 수 있는 직선은 무수히 많지만, 최적의 직선, 훈련 데이터 외의 데이터에 대한 분류 오류를 최소라 하는 직선을 찾아야 합니다. 2차원이 아니라 3차원 이상에서는 직선이 아닌 최적의 평면(plane)을 찾아야 합니다. 즉, n-차원으로 일반화 하게 되면, 최적의 초평면(hyperplane)을 찾아야 합니다. 이 초평면이 Decision Boundary가 됩니다.
SVM은 MMH(Maximum Marginal Hyperplane,최대 마진 초평면)을 찾아 분리하는 방법 입니다.
위의 그림에서 왼쪽 아래에 있는 2개의 그림은 데이터를 분리하고 있지만, 오른쪽의 그림이 초평면이 더 정확하게 분류할 것입니다.
분리 초평면은 W*X + b = 0으로 나타냅니다. W = {w1, w2, ... , wn}입니다.
n은 속성의 수이며, b는 스칼라이며 편향값(bias)입니다.
위의 그림에서는 두개의 속성값 A1, A2에 대한 2차원입니다. 예를 들어, X = {x1,x2}이고, x1과 x2는 속성 A1,A2의 값 입니다. b를 추가적인 가중치 w0이라고 하면, 위의 식은 식은
w0 + w1x1 + w2x2 = 0 이라고 쓸 수 있습니다.
분리 평면(Decision Boundary) 위에 있는 모든 값들은 아래의 식을 만족합니다.
w0 + w1x1 + w2x2 > 0 or w0 + w1x1 + w2x2 < 0
여기서 w는 수정될 수 있으며 margin의 side를 정의하는 초평면은 다음과 같이 씁니다.
H1: w0 + w1x1 + w2x2 ≥ 1
H2: w0 + w1x1 + w2x2 ≤ -1
모든 yi값은 H1 또는 H2에 속하게 됩니다. 이것을 서포트 벡터라고 합니다. 그림 안에 있는 빨간 테두리의 원들이 서포트 벡터 입니다. 서포트 벡터는 분류하기가 가장 어려운 튜플이며 분류에 대해 가장 많은 정보를 줍니다.
SVM은 또 Soft-margin SVM과 Hard-margin SVM으로 나눌 수 있다.
위에서 설명한 SVM 방식은 Hard margin이고, 하드 방식은 두개의 클래스를 분리하는 분리하는 분리 초평면을 구하는 방법으로, 모든 입력 투플은 이 초평면을 사이에 두고 무조건 한 클래스에 속해야 합니다. 그렇게 되면 몇개의 노이즈로 인해 두 그룹을 구별하는 분리 초평면을 잘 못 구할 수도 있고, 경우에 따라서는 찾지 못하는 문제가 발생합니다. 따라서 현실세계에서는 하드 마진 방법을 적용하기 힘듭니다.
이러한 문제로 현실세계에서는 Soft Margin이 개발되었습니다. 소프트 벡터는 하드마진 방법을 기반으로 하지만, 서포트 벡터가 있는 경계선에 약간의 여유 변수(Slack Variable)을 두는 것 입니다.
이번에는 SAS Viya에서 SVM 옵션을 알아보겠습니다.
① 입력 변수 척도화] 체크(기본값) : 입력 변수를 0과 1사이(0과 1 포함)의 값으로 척도화 시킬지 여부를 설정.
[결측값 사용] : 결측값이 존재하는 경우, Class 입력 변수의 결측값은 별도의 레벨로 처리하고, Interval 입력 변수의 결측값은 평균으로 대체.
[반복 리포트 포함] : 매 반복마다 모델 정확도를 반복 리포트에 표시. 반복 후 매번 정확도를 계산해야 하므로 계산 시간이 오래 걸릴 수 있음.
② [페널티] 1(기본값) : 페널티 값 지정.
③ [커널(Kernel)] 선형(기본값) : SVM에서 사용할 커널 유형 지정.
• 선형(기본값) : K(x_i,x_j)=x_i^T x_j
• 다항식: K(x_i,x_j)=(1+x_i^T x_j )^p
④ [다항식 차수] : 커널이 다항식 일 때, 다항식 차수를 지정. 2 또는 3 지정 가능.
⑤ [공차(Tolerance)] 0.000001(기본값) : 반복을 중지할 허용한계(Tolerance)를 지정.
⑥ [최대 반복] 25(기본값) : 각 시도에서 허용되는 최대 반복 횟수를 지정.
[자동 조율 수행]
SVM 파라미터의 자동 조율을 수행. 수행시간이 길어질 수 있음.
①[페널티]
•초깃값: 페널티를 자동 조율하기 위한 초깃값을 지정. 기본값은 1.
•시작: 튜닝이 이루어질 범위의 하한. 기본값은 0.000001.
•끝: 튜닝이 이루어질 범위의 상한. 기본값은 100.
② [다항식 차수]
• 초깃값 : 다항식 차수를 자동 조율하기 위한 초깃값을 지정. 기본값은 1.
• 시작 : 다항식 차수 튜닝 범위의 하한. 기본값은 1.
• 끝 : 다항식 차수 튜닝 범위의 상한. 기본값은 3
③[검색 옵션]
•검색 방법: 조율 검색 방법을 지정. 기본값은 Genetic 알고리즘.
•그리드: 자동 조율된 각 파라미터에 대한 하한, 상한 및 범위 중앙값을 기준 모델에 사용된 초깃값과 함께 사용.
•라틴 하이퍼큐브 표본: 라틴 하이퍼큐브 방법을 지정. 각 튜닝 파라미터에서 균등적으로 분포되었지만 임의의 값을 선택하는 최적화된 그리드 검색을 수행.
•표본 크기: 표본의 크기를 지정. 기본값은 50.
•베이지안: 베이지안 방법을 지정. 반복화 최적화 수행시 seed를 위하여 사전분포를 사용.
•반복당 평가 횟수: 반복당 조율 평가 횟수를 지정. 기본값은 10.
•최대 평가 횟수: 최대 조율 평가 횟수를 지정. 기본값은 50.
•최대 반복 횟수: 최대 조율 반복 횟수를 지정. 기본값은 5.
•모델의 최대 점 수: 모델의 최대 점 수를 지정.
•임의: 임의 방법을 지정. 단순임의 표본을 사용.
•표본 크기: 표본의 크기를 지정. 기본값은 50.
•Genetic 알고리즘: Genetic 알고리즘 방법을 지정.
•반복당 평가 횟수: 베이지안과 동일.
•최대 평가 횟수: 베이지안과 동일.
•최대 반복 횟수: 베이지안과 동일
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.