SVM은 어떻게 최적의 선을 찾을까요?
SVM은 경계선과 데이터 사이의 「여백(Margin)」을 최대한 넓게 만드는 것을 목표로 합니다.
결정 경계 (Decision Boundary)
두 그룹(클래스) 사이를 나누는 기준선(Hyperplane)을 찾습니다. 집단의 평균 위치가 아니라 서로 맞닿은 쪽의 데이터를 보고 자리를 잡습니다.
마진 최대화 (Maximize Margin)
기준선 양쪽으로 선을 평행하게 확장하여 만들어지는 빈 공간인 「마진(Margin)」이 가장 넓어지도록 선의 방향과 위치를 조정합니다.
서포트 벡터 (Support Vectors)
이때 마진의 끝(경계)에 닿거나 그 안쪽으로 들어와서 선의 위치를 떠받치는 데이터 포인트들을 서포트 벡터라고 부릅니다. 마진 바깥에 여유 있게 떨어진 점은 아무리 많아도 선을 움직이지 못합니다.
SVM 시각화 시뮬레이터
데이터를 배치하고 「학습」 버튼을 눌러 보세요. SVM이 선을 움직이며 마진을 찾아가는 과정을 볼 수 있습니다.
자료
학습
표준 마진
결정 경계
SVM의 숨겨진 기하학적 원리
수식과 파라미터가 실제로 어떤 의미를 가지는지 조금 더 깊이 알아볼까요?
결정 경계와 마진의 크기
시뮬레이터에서 보았던 방정식 w₁x₁ + w₂x₂ + b = 0 은 두 클래스를 나누는 결정 경계선(실선)입니다.
SVM은 이 선을 기준으로 양쪽에 w·x + b = ±1 이라는 마진(점선)을 만듭니다.
마진의 폭(Width) = 2 / ||w||
즉, 모든 데이터가 마진 밖에 놓인다는 조건 아래에서 여백을 최대화(Maximize Margin)한다는 것은 가중치 벡터인 w의 크기를 최소화하는 것과 같습니다. 조건을 빼고 w만 줄이면 w = 0 이 되어 선 자체가 사라집니다.
규제 파라미터 C (Cost)
현실의 데이터는 완벽하게 나누어지지 않는 경우가 많습니다. 이때 마진 안으로 들어오거나 아예 반대편으로 넘어간 데이터를 얼마나 봐줄지 조절하는 것이 규제 파라미터 C입니다.
C는 무엇의 약자일까요?
주로 Cost(비용/벌점)를 의미합니다. 모델이 오차를 냈을 때 치러야 하는 「벌점」의 크기라고 생각하면 이해하기 쉽습니다.
-
C가 클 때 (High Cost):
「오차 하나당 벌점 10,000점!」 😡
벌점이 너무 무서워서 모델이 오차를 절대 안 내려고 깐깐하게 선을 긋습니다. 그 결과 여유 공간인 마진의 폭이 더 좁아집니다 (Hard Margin). -
C가 작을 때 (Low Cost):
「오차 하나당 벌점 0.1점~」 😌
모델이 「뭐 현실 데이터에 노이즈가 좀 있을 수도 있지~」 하고 오차를 너그럽게 봐주면서 마진을 넓고 여유롭게 가져갑니다 (Soft Margin).
왜 수식에서 y 대신 x₂를 쓸까요?
수학 시간에 배운 일차함수(y = ax + b)와 머신러닝의 수식 표기법은 조금 다릅니다. 그 이유를 알아볼까요?
y는 이미 「정답지」로 예약됨
머신러닝에서 알파벳 y는 데이터가 속한 클래스(예: +1 또는 -1, 개 또는 고양이)를 의미하는 「정답 라벨」로 고정되어 쓰입니다. 세로축을 y라고 부르면 좌표와 정답이 혼동될 수 있습니다.
x는 「데이터의 특징」
데이터가 가진 속성들을 묶어 x라고 부릅니다. 2차원 화면에서 첫 번째 특징(가로 위치)은 x₁, 두 번째 특징(세로 위치)은 x₂가 됩니다. 즉, 전통적인 x, y축이 이름만 바뀐 것입니다.
무한한 차원 확장성
실제 인공지능이 다루는 데이터는 특징이 수백 개를 넘는 경우도 흔합니다. x, y, z를 쓰면 알파벳이 부족해지지만, x₁, x₂, ... x₁₀₀ 방식의 아래첨자를 쓰면 특징이 몇 개든 하나의 규칙적인 수식으로 표현할 수 있습니다.
방정식 요약 정리
수식 -2.20x₁ + 1.52x₂ + 0.15 = 0 에서 x₁은 캔버스의 가로 좌표를, x₂는 캔버스의 세로 좌표를 의미합니다.
확인 퀴즈
배운 내용을 확인해 봅시다.
Q1. 서포트 벡터 머신(SVM)에서 「서포트 벡터」가 의미하는 것은 무엇인가요?