들어가며
지난 번에는 SVM을 활용한 분류 작업에 대하여 알아보았다
SVM은 분류 뿐만아니라 회귀 작업에서도 활용이 가능하다
SVM 분류에서의 목표는 적당한 오차를 허용하며 마진을 최대화하는 것이었다
그렇다면 SVM 회귀에서의 목표는 무엇일까?
SVM 회귀
우선 서포트 벡터 머신을 활용한 분류 작업 모델을 SVC라고 불렀다면
회귀 작업에서는 SVR(Support Vector Regression)이라고 부른다
SVM이 분류가 아닌 회귀에 적용된다면 목표가 조금 바뀐다
적당한 오차를 허용하며 마진을 최대화 하는 것 대신,
적당한 오차를 허용하며 마진 경계 안에 최대한 많은 샘플이 들어가도록 해야한다

svm_reg = make_pipeline(StandardScaler(),
LinearSVR(epsilon=0.5, dual=True, random_state=42))
svm_reg.fit(X, y)
svm_reg2 = make_pipeline(StandardScaler(),
LinearSVR(epsilon=1.2, dual=True, random_state=42))
svm_reg2.fit(X, y)
SVR에서는 마진의 폭을 하이퍼파라미터 ε(입실론)으로 조절하며
왼쪽 그래프는 ε=0.5이고 오른쪽은 ε=1.2일 때의 SVR을 나타낸다
SVR에서 서포트 벡터는 도로 밖에 있는 샘플들을 말하고
이들은 오차값이기 때문에 계산을 통해 회귀선을 생성하게된다
생성된 회귀선에 ε 범위로 마진이 형성되며 이 마진 안의 오차들은 허용 오차로 여겨진다
마진 안의 오차들은 허용 오차로서 계산식에 적용되지 않는다
그러므로 모델의 예측에는 영향이 없다
ε이 커질수록 마진의 넓이가 커지게되며 일반적으로 일반화 성능이 올라간다
하지만 ε이 너무 커지게 될 경우 모델이 너무 많은 오차를 허용하여
세부적인 패턴을 잡아내지 못하여 과소적합에 빠지게 될 수도 있다
반대로 ε이 너무 작으면 오차를 거의 허용하지 않아서
모델이 훈련 데이터에 과하게 맞춰지고 과대적합에 빠질 수 있다
비선형 SVM 회귀
비선형 데이터의 회귀 작업을 처리하기 위해서는 커널 SVM 모델을 사용해야 한다
svm_poly_reg = make_pipeline(StandardScaler(),
SVR(kernel="poly", degree=2, C=0.01, epsilon=0.1))
svm_poly_reg.fit(X, y)
커널 트릭을 제공하는 사이킷런의 SVR을 활용해 kernel 값을 "poly"로 설정하면
비선형의 데이터들을 처리할 수 있는 모델을 만들 수 있다

SVR에서도 하이퍼파라미터 C를 통해 규제를 적용시킬 수 있다
이는 오차들의 적용 강도를 어느정도로 설정할 지를 정하는 것이다
위 그래프는 같은 ε일 때 C=0.01일 때와 C=100일 때를 나타낸다
C=0.01일 때는 C=100일 때의 비해 규제가 강하고
C를 과도하게 낮을 경우 규제가 강해 데이터의 세부 패턴 파악이 어려워 과소적합의 위험에 빠질 수 있다
반면 C가 매우 높을 경우 규제가 약해서 데이터의 잡음까지 반영하게 되어 과대적합에 빠질 수 있다
적절한 C와 ε의 값을 설정해서 균형있는 모델을 만드는 것이 중요하다
마치며
이번 글에서는 SVM을 회귀 문제에서 어떻게 처리할 수 있는지에 대하여 알아보았다
처음에 회귀선이 생성되는 과정이 머리 속에 잘 그려지지 않았는데
회귀의 의미와 서포트 벡터가 어떤 식으로 적용되는 지, SVM 분류와의 차이는 무엇이였는 지
처음부터 다시 생각해보면서 회귀의 개념적 의미를 다시 한 번 상기시킬 수 있어서 이해에 도움이 되었다
배운 개념들이 점점 많아지다 보니 개념들이 서로 충돌되고 뒤섞이는 느낌이 있었다
지금 공부 중인 AI 서적의 머신러닝 파트가 끝나면 개념들을 정리하는 차원에서
배운 개념들을 활용한 작은 머신러닝 프로젝트를 진행할 예정이다
'AI > Machine Learning' 카테고리의 다른 글
| [AI] 결정 트리(Decision Tree) (0) | 2026.04.15 |
|---|---|
| [AI] 비선형 서포트 벡터 머신(SVM) 분류 (0) | 2026.04.05 |
| [AI] 선형 서포트 벡터 머신(SVM) 분류 (0) | 2026.03.30 |
| [AI] 로지스틱 회귀(logistic regression) (0) | 2026.03.17 |
| [AI] 릿지 회귀(ridge regression), 라쏘 회귀(lasso regression), 엘라스틱넷 회귀(elastic net regression) (1) | 2026.03.15 |
