My Data Story

[모델 알고리즘] 서포트 벡터 머신 - SVM 회귀 본문

Machine Learning/2. 지도 학습 알고리즘

[모델 알고리즘] 서포트 벡터 머신 - SVM 회귀

Hwasss 2021. 8. 9. 02:05
728x90

◈ '서포프 벡터 머신' 목차 ◈ 

1. 선형 SVM 분류

2. 비선형 SVM 분류

3. SVM 회귀

    SVM 회귀 알고리즘에 대해 이해하고, 사이킷런을 통해 선형 SVM 모델과 비선형 SVM 모델 구현하는 방법에 대해 살펴보자.

4. SVM 이론


1. SVM 회귀 알고리즘

SVM 알고리즘은 다목적으로 사용이 가능하다. 

선형, 비선형 분류 뿐 아니라 선형, 비선형 회귀에도 사용할 수 있다. 

 

SVM 회귀 문제의 목표는 SVM 분류 문제의 목표와 정반대이다. 

제한된 마진 오류 (즉, 도로 밖의 샘플) 내에, 가능한 많은 샘플이 도로 안에 들어가도록 학습한다. 

 

도로 폭은 epsilon 으로 조절한다.

 

SVM 회귀에서는 훈련 샘플이 마진 안에 추가되어도 모델 예측에는 영향이 없다. 

이를 '모델이 epsilon에 민감하지 않다.' 라고 말한다. 

 

사이킷런에서 LinearSVR, SVR 통해 SVM 회귀를 구현할 수 있다.

LinearSVR은 LinearSVC의 회귀 버전이고, SVR은 LinearSVC의 회귀 버전이다.

 

2. SVM 회귀 모델 구현

2.1 선형 회귀 

사이킷런의 LinearSVR 을 사용해 선형 SVM 회귀 적용할 수 있다. 

 

from sklearn.svm import LinearSVR
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

svm_reg = Pipeline([
            ('scaler', StandardScaler()), #항상 훈련 데이터 scale 조정
            ('svm_reg', LinearSVR(epsilon=1.5)) #도로폭을 1.5로 지정
        ])
        
svm_reg.fit(X, y)

 

2.2 비선형 회귀 

비선형 회귀 작업을 처리하려면 커널 SVM 을 사용한다. 

 

모델에 대한 규제는 C로 조절하면 된다. 

과대 적합된 모델은 C 값을 크게 하고, 과소 적합된 모델은 C 값을 작게하면 된다.

 

 

from sklearn.svm import SVR
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

svm_poly_reg = Pipeline([
                ('scaler', StandardScaler()), 
                ('svm_reg', SVR(kernel='poly', degree=2, C=100, epsilon=0.1)) 
              ])
        
svm_reg.fit(X, y)