반응형
# SVM 회귀
기존 분류에 적용: 일정한 마진 오류 안에서 두 클래스 간의 도로 폭이 가능한 한 최대가 되도록 함
회귀에 적용: 제한된마진 오류 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 함
-> 도로의 폭은 하이퍼파라미터 $\varepsilon$ 으로 조절
* 허용오차의 하이퍼파라미터와 다름. SVR과 LinearSVR에서 허옹오차는 tol, 도로의 폭은 epsilon 매개변수로 지정
from sklearn.svm import LinearSVR
np.random.seed(42)
m = 50
X = 2 * np.random.rand(m, 1)
y = (4 + 3 * X + np.random.randn(m, 1)).ravel()
svm_reg = LinearSVR(epsilon=1.5, random_state=42) #epsilon 1.5, 0.5
svm_reg.fit(X,y)
위 그래프는 무작위로 생성한 선형 데이터셋에 사이킷런의 LinearSVR 모델을 사용하여 epsilon 매개변수를 각각 1.5, 0.5로 해서 훈련시킨 회귀 모델을 나타낸 것이다.
마진 안에서는 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없다. 따라서 이 모델은 $\varepsilon$ 에 민감하지 않다($\varepsilon$-insensitive) 라고 한다.
비선형 회귀 작업을 처리하려면 커널 SVM 모델을 사용한다.
SVR 은 SVC 의 회귀 버전이고 LinearSVR은 LinearSVC 의 회귀 버전이다.
SVC와 같이 LinearSVR은 계산 복잡도가 훈련 세트의 크기에 선형적으로 늘어나며, SVR 은 훈련 세트가 커지면 훨씬 늘어난다.
from sklearn.svm import SVR
np.random.seed(42)
m = 100
X = 2 * np.random.rand(m, 1) - 1
y = (0.2 + 0.1 * X + 0.5 * X**2 + np.random.randn(m, 1)/10).ravel()
svm_poly_reg = SVR(kernel='poly', gamma='auto', degree=2, C=100, epsilon=0.1)
svm_poly_reg.fit(X,y)
이미지 출저: handson-ML 옮긴이 github
반응형
'Artificial Intelligence > Machine Learning' 카테고리의 다른 글
핸즈온 머신러닝(8) - 앙상블 학습 (2) | 2020.01.29 |
---|---|
핸즈온 머신러닝(7) - 결정 트리 (1) | 2020.01.28 |
핸즈온 머신러닝(6) - 서포트 벡터 머신 1 (1) | 2020.01.27 |
핸즈온 머신러닝(5) - 로지스틱 회귀 2 (0) | 2020.01.24 |
핸즈온 머신러닝(5) - 로지스틱 회귀 1 (0) | 2020.01.24 |
댓글