서포트 벡터 머신
마진을 최대화하는 경계선
두 팀 사이에 가장 넓은 도로를 깔아라
축구장에 빨간 팀과 파란 팀 선수들이 흩어져 있습니다. 심판이 "두 팀 사이에 선을 그어라"라고 합니다. 선을 긋는 방법은 무한히 많습니다. 하지만 가장 좋은 선은 무엇일까요?
SVM(Support Vector Machine)의 답은 명쾌합니다. "양쪽 팀에서 가장 가까운 선수들까지의 거리가 최대가 되는 선"을 긋는 것입니다. 이 거리를 마진(margin)이라 하고, 경계선에 가장 가까운 핵심 선수들을 서포트 벡터(support vector)라 부릅니다.
마진을 넓게 가져갈수록, 새로운 데이터가 들어와도 정확하게 분류할 가능성이 높아집니다. 이것이 SVM의 핵심 아이디어이며, 이 장에서 단계별로 체험합니다.
축구장에 빨간 팀과 파란 팀 선수가 흩어져 있다고 상상해보세요. 두 팀 사이에 도로를 깔아야 합니다. 좁은 골목길을 깔 수도 있고, 왕복 8차선 대로를 깔 수도 있습니다. 도로가 넓을수록(마진이 클수록), 나중에 새 선수가 들어와도 어느 팀인지 헷갈리지 않습니다. SVM은 "가능한 가장 넓은 도로"를 찾는 알고리즘입니다. 그리고 이 도로의 경계선에 딱 붙어 서 있는 핵심 선수들이 바로 서포트 벡터입니다.
마진과 결정 경계
분류 문제에서 결정 경계(decision boundary)는 두 클래스를 나누는 선(2D), 면(3D), 또는 초평면(고차원)입니다. 로지스틱 회귀도 경계선을 만들지만, SVM은 한 가지를 더 요구합니다. 경계선 양쪽에 여유 공간(마진)을 최대한 넓히라는 것입니다.
마진 경계: w . x + b = +1 그리고 w . x + b = -1
마진 폭 = 2 / ||w||
목표: ||w||를 최소화 (= 마진을 최대화)
도로(마진) 비유를 계속 써봅시다. 도로를 어디에 놓을지 결정하는 것은 도로 가장자리에 딱 붙어 있는 집들입니다. 도로에서 100미터 떨어진 집은 아무 영향을 미치지 않습니다 -- 그 집이 사라져도 도로 위치는 변하지 않습니다. 하지만 도로 가장자리 집이 사라지면? 도로를 더 넓힐 수 있게 되어 경계가 바뀝니다. 이것이 SVM의 놀라운 효율성입니다: 1000개의 데이터 중 경계를 결정하는 것은 10~20개의 서포트 벡터뿐이며, 나머지 980개는 사실상 "구경꾼"입니다.
실습 1: 마진 시각화기
아래 캔버스에 두 클래스의 데이터 점이 표시됩니다. 결정 경계(실선)와 마진 경계(점선)가 자동으로 계산됩니다. 점을 드래그하면 경계가 실시간으로 바뀝니다. 서포트 벡터는 큰 원으로 강조됩니다.
소프트 마진: 완벽함을 포기하는 지혜
현실 데이터는 완벽하게 분리되지 않습니다. 한두 개의 점이 상대편 영역에 섞여 있을 수 있습니다. 이때 하드 마진(hard margin)을 고집하면 모델을 만들 수 없습니다.
소프트 마진(soft margin)은 일부 오분류를 허용합니다. 얼마나 허용할지를 제어하는 것이 C 파라미터입니다.
C가 작으면: 오분류를 너그럽게 허용합니다. 마진이 넓어지고, 과소적합 위험.
학교 교칙을 생각해보세요. C가 매우 크면 = 엄격한 학교: 지각 1분도 용납하지 않습니다. 규칙은 완벽히 지켜지지만, 5분 거리에 사는 학생이 교통체증으로 1분 늦은 것까지 처벌합니다 (과적합). C가 매우 작으면 = 느슨한 학교: 지각을 거의 허용합니다. 관대하지만, 매일 지각하는 학생도 문제없이 넘어갑니다 (과소적합). 좋은 C는 "합리적 예외를 허용하되, 기본 질서는 유지하는" 균형점입니다. 실무에서는 교차검증을 통해 이 균형점을 찾습니다.
실습 2: C 파라미터 조절기
C 슬라이더를 움직여 마진 폭과 오분류 수가 어떻게 변하는지 관찰하세요. 같은 데이터에서 C 값에 따라 결과가 극적으로 달라집니다.
커널 트릭: 차원을 올려 직선으로 자르기
지금까지는 데이터가 직선(또는 초평면)으로 분리 가능한 경우를 봤습니다. 하지만 아래처럼 한 클래스가 다른 클래스를 둥글게 감싸고 있으면 어떨까요? 직선으로는 절대 나눌 수 없습니다.
SVM의 놀라운 해결책은 데이터를 더 높은 차원으로 올리는 것입니다. 2D에서 분리 불가능하던 데이터가 3D로 올라가면 평면 하나로 깔끔하게 나뉩니다. 이것을 다시 2D로 투영하면 곡선 경계가 됩니다.
종이 위에 빨간 점들이 원형으로 모여 있고, 파란 점들이 바깥에 흩어져 있다고 상상해보세요. 직선 하나로는 절대 나눌 수 없습니다 (원형이니까요). 그런데 이 종이를 3D로 들어올려서, 가운데 부분을 볼록하게 솟아오르게 만들면? 빨간 점들은 위로 올라가고, 파란 점들은 아래에 남습니다. 이제 수평 면 하나로 깔끔하게 나눌 수 있습니다! 이 수평 면을 다시 원래 2D 종이로 내리면, 그것은 곡선(원형) 경계가 됩니다. 커널 트릭의 놀라운 점은 실제로 3D로 올리는 계산을 하지 않고도, 수학적 트릭으로 같은 효과를 낸다는 것입니다.
gamma가 크면: 가까운 점만 영향 (복잡한 경계)
gamma가 작으면: 먼 점도 영향 (부드러운 경계)
실습 3: 커널 트릭 시각화
원형으로 분포된 데이터(내부 빨강, 외부 파랑)가 있습니다. 직선으로는 분류 불가능합니다. "RBF 커널 적용" 버튼을 누르면 3D로 변환되는 과정을 관찰하세요.
실습 4: SVM vs 로지스틱 회귀 비교
같은 데이터에 SVM과 로지스틱 회귀를 적용합니다. 대부분의 경우 두 모델의 경계는 비슷하지만, SVM은 마진을 최대화하는 반면 로지스틱 회귀는 확률을 최대화합니다.
SVM의 장단점과 실무 팁
장점
- 고차원 데이터에서 강력 (텍스트, 유전체)
- 커널 트릭으로 비선형 분류 가능
- 서포트 벡터만 저장하면 되어 메모리 효율적
- 과적합에 비교적 강건 (마진 최대화)
단점
- 대규모 데이터(10만+)에서 느림
- 확률 출력이 직접적이지 않음
- 특성 스케일링 필수
- C, gamma 등 하이퍼파라미터 튜닝 필요
- SVM은 두 클래스 사이의 마진을 최대화하는 분류기이다.
- 서포트 벡터는 경계에 가장 가까운 점으로, 결정 경계를 결정한다.
- C 파라미터는 마진 폭과 오분류 허용 사이의 균형을 조절한다.
- 커널 트릭으로 비선형 데이터도 분류할 수 있다 (RBF, 다항식 등).
- SVM과 로지스틱 회귀는 비슷한 결과를 내지만, 접근 철학이 다르다.
다음 장 예고: 지금까지 배운 모든 분류 모델을 총동원하여 실제 고객 이탈 예측 대시보드를 구축합니다.