SVM 이란?
분류기다
분류가 불가능한 데이터도 차원을 확장하여 분류 가능하게 함
이후 확장한 차원 공간에서 두 데이터를 분류할 초평면을 찾는 것이 목표다.
(초평면이란 차원이 확장되면 3차원에서 정의한 평면은 사용할 수 없으므로 고차원에서의 평면과 같은 역할을 하는 것을 초평면이라 한다)
이때 차원을 확장하면 연산이 복잡해지는데
그 연산을 kernel method를 활용하여 가능하게 함
(kernel method 참고)
2024.09.09 - [SVM(Support Vector Machine)] - Kernel Methods
SVM 학습방식
기존의 분류기와 학습 방식이 다른데..
원래 cross entropy를 활용해 매핑한 확률을
최대화하는 방식으로 분류기의 모수를 update 했었는데.
svm에서는 마진을 최대화하는 방식으로 모수를 찾는다.
마진(margin)이란?
경계선에서 가장 가까운 데이터까지의 거리를 의미한다.
왜 마진을 최대화해야 하나?
모든 분류 경계선이 같은 성능을 보이는 게 아니다
모든 분류 선이 학습 data에 대해서는 분류를 잘 하는 거처럼 보여도
새로운 data가 들어오면 마진이 최대인 분류 경계선이
가장 좋은 성능을 보인다.
그래서 마진을 최대화하는 방식으로 분류기의 모수를 어떻게 학습하나
마진을 모수로 표현해야 함..
대표적으로 회귀분석에 목적함수인 오차 함수를 생각해 보면
오차 함수 자체에 분류 직선이 들어가 있기 때문에
오차 함수를 줄이는 방향으로 모수인 직선의 계수를 학습할 수 있었다.
마진을 모수인 w로 표현
찾고자 하는 초평면을 wTx+b=0라 두었을 때 최적의 (w) 모수를 찾는 것이 학습에 목적이다.
가장 가까운 데이터가 존재하는 평면을 각각 pluse-plane, minus-plane 이라하고
wTx+b=1 , wTx+b=−1 을 만족하도록 w를 학습한다.
왜 이렇게 하나요?
단순히 초평면인 wTx+b=0만 구하려 한다면 w의 학습 범위가 매우 넓어진다.
즉 pluse-plane minus-plane을 wTx+b=1 , wTx+b=−1로 학습하는 이유는
모수인 w의 범위를 제한하기 위함..
그래서 마진을 어떻게 w로 표현하나?
평면의 법선벡터, gradient vector 개념이 필요한데
단순한 예시를 보면
다음과 같은 직선이 있다고 할 때 각 변수인 x1, x2의 계수인 (1,1) 벡터가
이 직선에 수직임을 알 수 있다.
차원이 확장되어 3차원 평면의 변수 앞에 계수는 법선벡터로 평면에 항상 수직이고
이 벡터는 gradient vector로 고차원에서도 초평면에 항상 수직이다.
즉, wTx+b=0에서 w는 항상 초평면에 수직인 벡터이다.
여기서 이 초평면의 수직 vector인 w의 크기가 마진과 관련이 있다.
pluse minus plane 을 각각 x+ ,x− 라 하면
minus plane에서 수직 벡터인 w에 실수배 계산을 이용하여 pluse plane을 표현할 수 있다.
즉 다음이 성립한다.
여기서 실수배인 λ가 정확하게 마진이다.
( pluse minus plane 사이의 수직거리를 의미하므로)
따라서 λ를 w로 표현하면 마진을 모수로 표현할 수 있게 된다.
이렇게 구한 마진을 최소화하겠다는 건 (1/2)wTw 을 최대화하는 거와 같다.
이 식을 최대화하는 것이 목적.
이때 이 목적함수를 최대화하는데
wTx+b=1 , wTx+b=−1 다음과 같은 제약조건이 있었음
엄밀하게는 wTx+b=1 , wTx+b=−1 이식은 가장 가까운 데이터 포인트가 존재하는 평면이므로
나머지 data 들에 대해서는 wTx+b>1 , wTx+b<−1을 만족해야 한다
즉 부등식 조건이 존재하는 최적화 문제이므로 kkt condition을 활용하여 목적함수를 최소화할 수 있다.
'SVM(Support Vector Machine)' 카테고리의 다른 글
KKT condition (0) | 2024.09.10 |
---|---|
Kernel Methods (0) | 2024.09.09 |