Skip to content
PART 4 · 25장

서포트 벡터 머신

마진을 최대화하는 경계선

두 팀 사이에 가장 넓은 도로를 깔아라

축구장에 빨간 팀과 파란 팀 선수들이 흩어져 있습니다. 심판이 "두 팀 사이에 선을 그어라"라고 합니다. 선을 긋는 방법은 무한히 많습니다. 하지만 가장 좋은 선은 무엇일까요?

SVM(Support Vector Machine)의 답은 명쾌합니다. "양쪽 팀에서 가장 가까운 선수들까지의 거리가 최대가 되는 선"을 긋는 것입니다. 이 거리를 마진(margin)이라 하고, 경계선에 가장 가까운 핵심 선수들을 서포트 벡터(support vector)라 부릅니다.

마진을 넓게 가져갈수록, 새로운 데이터가 들어와도 정확하게 분류할 가능성이 높아집니다. 이것이 SVM의 핵심 아이디어이며, 이 장에서 단계별로 체험합니다.

쉽게 말하면 -- "두 팀 사이에 가장 넓은 도로를 깔아라":
축구장에 빨간 팀과 파란 팀 선수가 흩어져 있다고 상상해보세요. 두 팀 사이에 도로를 깔아야 합니다. 좁은 골목길을 깔 수도 있고, 왕복 8차선 대로를 깔 수도 있습니다. 도로가 넓을수록(마진이 클수록), 나중에 새 선수가 들어와도 어느 팀인지 헷갈리지 않습니다. SVM은 "가능한 가장 넓은 도로"를 찾는 알고리즘입니다. 그리고 이 도로의 경계선에 딱 붙어 서 있는 핵심 선수들이 바로 서포트 벡터입니다.

마진과 결정 경계

분류 문제에서 결정 경계(decision boundary)는 두 클래스를 나누는 선(2D), 면(3D), 또는 초평면(고차원)입니다. 로지스틱 회귀도 경계선을 만들지만, SVM은 한 가지를 더 요구합니다. 경계선 양쪽에 여유 공간(마진)을 최대한 넓히라는 것입니다.

비유: 도로를 놓는다고 생각하세요. 왼쪽에는 A 마을, 오른쪽에는 B 마을. 도로의 중심선이 결정 경계, 도로 양쪽 가장자리가 마진 경계(gutter)입니다. 도로가 넓을수록 양쪽 마을 사람들이 도로에 침범하지 않습니다. 서포트 벡터는 도로 가장자리에 딱 붙어 사는 집들입니다.
결정 경계: w . x + b = 0
마진 경계: w . x + b = +1   그리고   w . x + b = -1
마진 폭 = 2 / ||w||
목표: ||w||를 최소화 (= 마진을 최대화)
핵심 통찰: SVM은 모든 데이터를 사용하지 않습니다. 결정 경계를 정하는 데 관여하는 것은 오직 마진 경계에 걸친 소수의 서포트 벡터뿐입니다. 나머지 데이터 점을 제거해도 결정 경계는 변하지 않습니다.
쉽게 말하면 -- 서포트 벡터는 "도로 경계에 있는 핵심 데이터"입니다:
도로(마진) 비유를 계속 써봅시다. 도로를 어디에 놓을지 결정하는 것은 도로 가장자리에 딱 붙어 있는 집들입니다. 도로에서 100미터 떨어진 집은 아무 영향을 미치지 않습니다 -- 그 집이 사라져도 도로 위치는 변하지 않습니다. 하지만 도로 가장자리 집이 사라지면? 도로를 더 넓힐 수 있게 되어 경계가 바뀝니다. 이것이 SVM의 놀라운 효율성입니다: 1000개의 데이터 중 경계를 결정하는 것은 10~20개의 서포트 벡터뿐이며, 나머지 980개는 사실상 "구경꾼"입니다.

실습 1: 마진 시각화기

아래 캔버스에 두 클래스의 데이터 점이 표시됩니다. 결정 경계(실선)와 마진 경계(점선)가 자동으로 계산됩니다. 점을 드래그하면 경계가 실시간으로 바뀝니다. 서포트 벡터는 큰 원으로 강조됩니다.

해보기: (1) 서포트 벡터를 경계 쪽으로 끌어보세요 -- 마진이 좁아집니다. (2) 서포트 벡터가 아닌 점을 옮겨보세요 -- 경계가 변하지 않습니다! (3) "데이터 초기화"로 새 데이터를 생성해보세요.
마진 폭
-
서포트 벡터 수
-
정확도
-

소프트 마진: 완벽함을 포기하는 지혜

현실 데이터는 완벽하게 분리되지 않습니다. 한두 개의 점이 상대편 영역에 섞여 있을 수 있습니다. 이때 하드 마진(hard margin)을 고집하면 모델을 만들 수 없습니다.

소프트 마진(soft margin)은 일부 오분류를 허용합니다. 얼마나 허용할지를 제어하는 것이 C 파라미터입니다.

C가 크면: 오분류 벌점이 크므로, 거의 모든 점을 맞추려 합니다. 마진이 좁아지고, 과적합 위험.
C가 작으면: 오분류를 너그럽게 허용합니다. 마진이 넓어지고, 과소적합 위험.
쉽게 말하면 -- C는 "규칙을 얼마나 엄격하게 적용할 것인가"입니다:
학교 교칙을 생각해보세요. C가 매우 크면 = 엄격한 학교: 지각 1분도 용납하지 않습니다. 규칙은 완벽히 지켜지지만, 5분 거리에 사는 학생이 교통체증으로 1분 늦은 것까지 처벌합니다 (과적합). C가 매우 작으면 = 느슨한 학교: 지각을 거의 허용합니다. 관대하지만, 매일 지각하는 학생도 문제없이 넘어갑니다 (과소적합). 좋은 C는 "합리적 예외를 허용하되, 기본 질서는 유지하는" 균형점입니다. 실무에서는 교차검증을 통해 이 균형점을 찾습니다.

실습 2: C 파라미터 조절기

C 슬라이더를 움직여 마진 폭과 오분류 수가 어떻게 변하는지 관찰하세요. 같은 데이터에서 C 값에 따라 결과가 극적으로 달라집니다.

해보기: (1) C=0.01로 설정 -- 넓은 마진, 오분류 허용. (2) C=100으로 설정 -- 좁은 마진, 거의 완벽 분류. (3) 어떤 C가 새 데이터에 더 잘 일반화될까요?
C = 1.00
마진 폭
-
오분류 수
-
서포트 벡터
-
C 값
-
과적합 경고: C를 극단적으로 크게 하면 훈련 데이터의 노이즈까지 학습합니다. 교차검증으로 최적의 C를 찾는 것이 실무의 핵심입니다.

커널 트릭: 차원을 올려 직선으로 자르기

지금까지는 데이터가 직선(또는 초평면)으로 분리 가능한 경우를 봤습니다. 하지만 아래처럼 한 클래스가 다른 클래스를 둥글게 감싸고 있으면 어떨까요? 직선으로는 절대 나눌 수 없습니다.

SVM의 놀라운 해결책은 데이터를 더 높은 차원으로 올리는 것입니다. 2D에서 분리 불가능하던 데이터가 3D로 올라가면 평면 하나로 깔끔하게 나뉩니다. 이것을 다시 2D로 투영하면 곡선 경계가 됩니다.

비유: 탁자 위에 빨간 동전과 파란 동전이 섞여 있습니다. 직선으로는 나눌 수 없습니다. 하지만 빨간 동전 아래에 스프링을 넣어 공중으로 띄우면? 이제 탁자 면(평면)으로 두 색을 분리할 수 있습니다!
쉽게 말하면 -- "2D에서 분리 안 되면 3D로 올려서 분리한 뒤 다시 내린다":
종이 위에 빨간 점들이 원형으로 모여 있고, 파란 점들이 바깥에 흩어져 있다고 상상해보세요. 직선 하나로는 절대 나눌 수 없습니다 (원형이니까요). 그런데 이 종이를 3D로 들어올려서, 가운데 부분을 볼록하게 솟아오르게 만들면? 빨간 점들은 위로 올라가고, 파란 점들은 아래에 남습니다. 이제 수평 면 하나로 깔끔하게 나눌 수 있습니다! 이 수평 면을 다시 원래 2D 종이로 내리면, 그것은 곡선(원형) 경계가 됩니다. 커널 트릭의 놀라운 점은 실제로 3D로 올리는 계산을 하지 않고도, 수학적 트릭으로 같은 효과를 낸다는 것입니다.
RBF 커널: K(x, x') = exp(-gamma * ||x - x'||2)
gamma가 크면: 가까운 점만 영향 (복잡한 경계)
gamma가 작으면: 먼 점도 영향 (부드러운 경계)

실습 3: 커널 트릭 시각화

원형으로 분포된 데이터(내부 빨강, 외부 파랑)가 있습니다. 직선으로는 분류 불가능합니다. "RBF 커널 적용" 버튼을 누르면 3D로 변환되는 과정을 관찰하세요.

해보기: (1) 먼저 "선형 SVM 시도"를 눌러 실패를 확인하세요. (2) "RBF 커널 적용"으로 3D 변환을 관찰하세요. (3) Gamma 슬라이더로 경계의 복잡도를 조절하세요.
gamma = 1.0
훈련 정확도
-
경계 유형
-
Gamma
-
커널 트릭의 핵심: 실제로 데이터를 고차원으로 변환하지 않고도, 커널 함수로 내적만 계산하면 됩니다. 계산 비용은 원래 차원과 같지만 효과는 고차원에서 분류한 것과 동일합니다. 이것이 "트릭"이라 불리는 이유입니다.

실습 4: SVM vs 로지스틱 회귀 비교

같은 데이터에 SVM과 로지스틱 회귀를 적용합니다. 대부분의 경우 두 모델의 경계는 비슷하지만, SVM은 마진을 최대화하는 반면 로지스틱 회귀는 확률을 최대화합니다.

해보기: (1) "비교 시작"을 눌러 두 모델의 경계를 나란히 비교하세요. (2) 데이터를 바꿔가며 어떤 경우에 차이가 크게 나는지 관찰하세요. (3) 마진 영역(회색)이 있는 쪽이 SVM입니다.
SVM
로지스틱 회귀
SVM 정확도
-
LR 정확도
-
SVM 마진 폭
-
차이
-
실무 선택 기준: 확률이 필요하면 로지스틱 회귀, 마진 기반 견고함이 필요하면 SVM. 텍스트 분류, 이미지 인식 등 고차원 데이터에서 SVM이 강점을 보입니다. 최근에는 딥러닝에 자리를 내줬지만, 소규모 데이터에서는 여전히 강력합니다.

SVM의 장단점과 실무 팁

장점

  • 고차원 데이터에서 강력 (텍스트, 유전체)
  • 커널 트릭으로 비선형 분류 가능
  • 서포트 벡터만 저장하면 되어 메모리 효율적
  • 과적합에 비교적 강건 (마진 최대화)

단점

  • 대규모 데이터(10만+)에서 느림
  • 확률 출력이 직접적이지 않음
  • 특성 스케일링 필수
  • C, gamma 등 하이퍼파라미터 튜닝 필요
스케일링 필수! SVM은 거리 기반이므로 특성의 스케일에 매우 민감합니다. 연봉(천만 단위)과 나이(십 단위)를 함께 사용하면 연봉이 결정을 지배합니다. 반드시 StandardScaler 또는 MinMaxScaler를 적용하세요.
이 장의 핵심
  • SVM은 두 클래스 사이의 마진을 최대화하는 분류기이다.
  • 서포트 벡터는 경계에 가장 가까운 점으로, 결정 경계를 결정한다.
  • C 파라미터는 마진 폭과 오분류 허용 사이의 균형을 조절한다.
  • 커널 트릭으로 비선형 데이터도 분류할 수 있다 (RBF, 다항식 등).
  • SVM과 로지스틱 회귀는 비슷한 결과를 내지만, 접근 철학이 다르다.

다음 장 예고: 지금까지 배운 모든 분류 모델을 총동원하여 실제 고객 이탈 예측 대시보드를 구축합니다.