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 |