본문 바로가기
2/[ Machine Learning ]

Support Vector Regression

by Kieran_Han 2020. 12. 22.

SVR(Support Vector Regression)

SVR(kernel, degree, gamma, coef0, tol, C, epsilon, shrinking, cache_size, verbose, max_iter)

 

Default: svr(kernerl = ‘rbf’, degree = 3, gamma = ‘scale’, coef0 = 0.0, tol = 0.001, C = 1.0, epsilon = 0.1,

shrinking = True, chache_size = 200, verbose = False, max_iter = -1)

 

kernel

kinds: ‘linear’, ‘poly’, ‘rbf(default)’, ‘sigmoid’, ‘precomputed’

주어진 data 고차원 특정 공간으로 사상해주는 (주로 rbf 사용)

 

degree

int, Default = 3

Degree of the polynomial kernel function only for kernel = ‘poly’, Ignored by all other kernels

 

gamma

scale(default), auto, or float

kernel coefficient for ‘rbf’, ‘poly’, and ‘sigmoid’

하나의 data sample 영향력을 행사하는 거리 결정(낮을수록 영향력 행사 거리 증가), 결정경계의 곡률 조정

너무 낮을 경우 Underfitting, 너무 높을 경우 Overfitting

gamma 증가시키면, 왼쪽 종모양 그래프가 작아짐

 

coef0

float, default = 0.0

only for kernel = ‘poly’ and ‘sigmoid’

모델이 높은 차수와 낮은 차수에 얼마나 영향을 받을지 조절

 

tol(정밀도)

float, default = 0.001

Tolerance for stopping criterion

최대한 많은 샘플 확보가 목적 (허용 오차 파라미터)

값이 작을수록 훈련시간 오래 걸림

 

C

float, default = 1.0

Regularization parameter(규제 매개변수), C 증가 → 규제 증가

The strength of the regularization is inversely proportional to C. Must be strictly positive. The penalty is a squared 12 penalty.

마진 하이퍼 파라미터, 값이 작을수록 마진 증가

Data Sample 다른 Class 놓이는 것을 허용하는 정도를 결정

너무 낮을 경우 Underfitting, 너무 높을 경우 Overfitting

 

Epsilon(ε)

float, default = 0.1

Epsilon in the epsilon-SVR model. It specifies the epsilon-tube within which no penalty is associated in the training loss function with points predicted within a distance epsilon from the actual value.

SVM Regression, 마진(ε)값은 도로 폭의 매개변수

마진 안에서 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없다 ε에 민감하지 않다

 

shirinking

bool, default = True

cache_size

float, default = 200

specify the size of the kernel cache (in MB)

 

verbose

bool, default = False

max_iter

int, default = -1

Hard limit on iterations within solver, or -1 for no limit.

 

Q1) SVM 근본 아이디어는?

SVM 근본적인 아이디어는 클래스 사이에 가능한 가장 넓은 도로 내는 것이다. 다시 말해 클래스를 구분하는 결정 경계와 샘플 사이의 마진을 가능한 가장 크게 하는 것이 목적이다. 소프트 마진 분류를 수행할 때는 SVM 클래스를 완벽하게 나누는 것과 가장 넓은 도로를 만드는 사이에 절충안을 찾는다. , 개의 샘플은 도로 안에 놓일 있다. 하나의 핵심적인 아이디어는 비선형 데이터셋에서 훈련할 커널 함수를 사용하는 것이다.

 

Q2) Support Vector?

SVM 훈련된 후에 경계를 포함해 도로에 놓인 어떤 샘플이다. 결정 경계는 전적으로 Support Vector 의해 결정된다. Support Vector 아닌, 도로 밖에 있는 어떤 샘플도 영향을 주지 못한다. 이런 샘플은 삭제하고 다른 샘플을 추가하거나, 다른 곳으로 이동시킬 있다. 샘플이 도로 밖에 있는 결정 경계에 영향을 주지 못할 것이다. 예측을 계산할 때는 전체 훈련 세트가 아니라 Support Vector 관여된다.

 

Q3) SVM 사용할 입력값의 스케일이 중요한가?

SVM 클래스 사이에 가능한 가장 도로를 내는 것이므로 훈련 세트의 스케일이 맞지 않으면 크기가 작은 특성을 무시하는 경향이 있다.

 

Q4) SVM 분류기가 샘플을 분류할 신뢰도 점수와 확률 출력 가능한가?

SVM분류기는 테스트 샘플과 결정 경계 사이의 거리를 출력할 있으므로 이를 신뢰도 점수로 사용할 있다. 그러나 점수를 클래스 확률의 추정값으로 바로 변환할 수는 없다. Sickit-Learn에서 SVM모델을 만들 probability = True 설정하면 훈련이 끝난 SVM 점수에 로지스틱 회귀를 훈련시켜 확률을 계산한다. 설정은 SVM 모델에 predict_proba() predict_log_proba() 메서드를 추가한다.

 

Q5) RBF 커널을 사용해 SVM 분류기를 훈련시켰더니 훈련 세트에 과소적합되었다. gamma C 어떻게 조절하는가?

RBF 커널에 훈련된 SVM 분류기가 훈련 세트에 과소적합이라면 규제가 너무 것일 있다. 규제를 줄이려면 gamma C, 또는 값을 증가시켜야 한다.

' > [ Machine Learning ]' 카테고리의 다른 글

Keras Initializer  (0) 2020.12.23
Tensorboad를 사용해 시각화하기  (0) 2020.12.23
Embedding(임베딩)  (0) 2020.12.21
Padding  (0) 2020.12.21
Scaler의 fit(), transform(), fit_transform()  (0) 2020.12.18