My Data Story
[모델 알고리즘] 서포트 벡터 머신 - SVM 이론 본문
◈ '서포프 벡터 머신' 목차 ◈
4. SVM 이론
선형 SVM 예측은 어떻게 이뤄지고 훈련 알고리즘은 어떻게 작동하는 지 살펴보자.
더불어, 온라인 SVM 을 구현하는 방법에 대해 살펴보자.
1. 선형 SVM 분류기
1.1 결정 함수와 예측
클래스를 구분하는 결정 경계는 결정 함수 값이 0인 점들로 이루어졌다.
결정 함수 값이 0 보다 작으면 음성 클래스 (y=0) 로 분류하고
결정 함수 값이 0 보다 크거나 같으면 양성 클래스 (y=1) 로 분류한다.

데이터 셋과 결정 경계 Decision function 를 공간 상에 나타내면 다음 그래프와 같다.

그래프의 점선은 결정 함수 값이 1인 점과 -1 인 점들을 나타낸다.
이 점선들은 결정 경계와 나란하고 일정한 거리만큼 떨어져 마진을 형성하고 있다.
1.2 손실 함수
SVM 손실 함수는 힌지 손실 함수 이다.
힌지 손실 함수 = max(0, 1-th) 이다. (t : 실제 속한 클래스 값, h : 결정 함수)
클래스 별로 구분하여, 힌지 손실 함수를 나타내면 다음과 같다.

힌지 손실 함수가 최소화되기 위해서는
양성 클래스(t=1) 일 경우 결정 함수 h > 1 이거나
음성 클래스(t=0) 일 경우 결정 함수 h < -1 이어야 한다.
1.3 목적 함수
선형 SVM 분류기를 훈련한다는 것은 마진 오류를 하나도 발생하지 않거나 (하드 마진)
제한적인 마진 오류를 가지면서 (소프트 마진) 가능한 마진을 크게 하는 w와 b를 찾는 것이다.
다음 그래프에서 보듯이, 가중치 벡터 w 가 작아질 수록 마진이 커진다.

(1) 하드 마진 선형 SVM 분류기
마진을 크게 하고, 마진 오류를 하나도 만들지 않기 위해서
하드 마진 선형 SVM 분류기는 다음과 같은 목적 함수를 갖는다.

(2) 소프트 마진 선형 SVM 분류기
소프트 마진 분류기의 목적 함수를 구성하려면 각 샘플에 대해 슬랙변수를 도입해야 한다.
슬랙 변수는 각 샘플이 얼마나 마진을 위반할지 정한다.
이때 마진 오류를 최소화하기 위해 슬랙 변수 값을 작게 만드는 것과
마진을 크게 하기 위해 가중치 벡터 w 를 작게 만드는 것은 서로 상충되는 목표를 갖는다.
하이퍼파라미터 C를 도입해 두 목표 사이의 트레이드 오프를 정의한다.

C 값이 커지면, 마진 오류 감소 (마진 너비 감소) 하여 모델이 복잡해진다.
C 값이 감소하면, 마진 너비 증가 (마진 오류 증가) 하여 모델이 단순해진다.
※ SVM 회귀 목적 함수
SVM 회귀를 위한 목적 함수는 분류와 조금 다르다. 회귀에서 결정 경계의 양쪽으로 모든 샘플을 담기 위한 도로의 오차 폭을 두 개의 슬랙 변수에 설정하여 다음 두 조건을 모두 만족하는 목적 함수를 구성한다.

1.4 쌍대 문제
제약이 있는 최적화 문제가 원 문제 primal problem 으로 주어졌을 때,
깊게 관련된 다른 문제로 표현할 수 있는 쌍대 문제 dual problem이 존재한다.
일반적으로 쌍대 문제 해는 원 문제 해의 하한 값이지만, 어떤 조건에서는 원 문제와 똑같은 해를 제공한다.
SVM 문제는 이 조건을 만족시켜, 쌍대 문제 해가 원 문제 해와 같다.
훈련 샘플 수가 특성 개수보다 작을 때 원 문제보다 쌍대 문제를 푸는 것이 더 빠르다.
더 중요한 것은 원 문제에서는 적용이 안되는 커널 트릭을 가능하게 한다.
사이킷런에서 SVC와 SVR은 매개 변수 dual = True 만 설정 가능하여, 커널 트릭을 사용하여 쌍대 문제만을 해결한다.
LinearSVC와 LinearSVR은 매개 변수 dual 의 기본값이 True 긴 하지만, False로 설정하여 원문제를 푸는 것도 가능하다.
2. 온라인 SVM
온라인 SVM 분류기에 대해 살펴보자.
온라인 학습은 새로운 학습이 생겼을 때 점진적으로 학습하는 것을 말한다.
온라인 SVM 분류기를 구현하는 한 가지 방법은
아래 식과 같은 원 문제로부터 유도된 비용 함수를 최소화하기 위한 경사 하강법을 사용하는 것이다.

예를 들어 SGDClassifier 를 사용한다.
SGDClassifier(loss='hinge') 로 설정하면 선형 SVM 문제 (LinearSVC(penalty='l2')) 가 된다.
※ 대규모의 비선형 문제라면 온라인 커널 SVM 보다 신경망 알고리즘을 고려해보는 것이 좋다.
'Machine Learning > 2. 지도 학습 알고리즘' 카테고리의 다른 글
[회귀] 결정 트리 회귀 모델 (0) | 2021.08.13 |
---|---|
[분류] 결정 트리 분류 모델 (0) | 2021.08.13 |
[모델 알고리즘] 서포트 벡터 머신 - SVM 회귀 (0) | 2021.08.09 |
[모델 알고리즘] 서포트 벡터 머신 - 비선형 SVM 분류 (0) | 2021.08.09 |
[모델 알고리즘] 서포트 벡터 머신 - 선형 SVM 분류 (0) | 2021.08.09 |