일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- lightweightproces
- multilevelfeedbackqueue
- databasesystems
- threeschemaarchitecture
- db
- SVM
- conceptualdatamodeling
- human-interface-guide
- copyonwrite
- MachineLearning
- 운영체제
- Datastructure
- dataindependency
- ML
- humaninterfaceguide
- 기계학습
- dbms
- mlfq
- 머신러닝
- softmargin
- entity-relationshipmodel
- databasemanagementsystem
- OperatingSystem
- softmarginsvm
- xv6
- monopolyqueue
- 자료구조
- database
- SupportVectorMachine
- react native #rn #리액트네이티브 #hook #hooks #훅 #navigation #네비게이션 #usenavigate
- Today
- Total
leehyogum의 트러블슈팅
[Machine Learning] Support Vector Machine (SVM) (1) 본문
[Machine Learning] Support Vector Machine (SVM) (1)
leehyogum 2024. 10. 10. 00:53우리에게 Leanearly separable 한 두 개의 클래스 중 하나의 클래스에 속하는 데이터셋들이 있다.
우리의 데이터셋을 두 개의 class로 구분하는 decision boundary A와 B 중 어느 것이 더 좋은 decision boundary일까?
대충 감으로도 알 수 있듯 정답은 바로 A이다.
그 이유는 A가 B보다 일반적인 성능이 더 좋기 때문이다.
주어진 test data들에 대한 성능만 보는 것이 아니라, 미래에 들어올 data도 잘 분류할 가능성이 높은 A가 B보다 좋다.
다시 말해서, A가 B보다 각 클래스 데이터에 대해 높은 margin을 주는 분류기이기 때문이다.
Margin이란?
Margin이란, decision boundary와 decision boundary에서 가장 가까운 data point들과의 수직 거리를 의미한다.
높은 margin을 주는 분류기일수록 성능이 더 좋다고 할 수 있다.
아까와 같은 분류기이다. A가 B보다 가장 가까운 데이터들에 대해 마진이 크므로 일반적인 성능이 더 좋은 분류기라고 할 수 있다.
여기서 SVM의 아이디어가 나왔다.
SVM의 아이디어
두 클래스(혹은 더 많은 클래스)에 대해 가장 큰 margin을 주는 decision boundary(hyperplane)을 찾는것이다.
이 hyperplane을 Support Vector Machine이라고 부른다.
Support vector란 decision boundary에서 가장 가까운 data들이다. data 하나하나를 vector 취급한다.
data들이 decision boundary를 지탱, 즉 support 한다.
SVM은 support vector들로 인해 만들어진 decision boundary인 것이다.
SVM에 대해 깊이 설명하기 전에, 간단한 수학적인 이야기를 해보도록 하겠다.
$X$: data(열벡터)
$g(X)$ = $w^T$$x$ + b = 0: decision boundary
$w$: weight vector & hyperplane $g(X)$ = 0의 normal vector
b: bias
$X_p$가 decision boundary에 있다면, g($X_p$) = 0
$X_a$가 decision boundary보다 위에 존재한다면 g($X_a$) > 0
$X_b$가 decision boundary보다 아래에 존재한다면 g($X_b$) < 0
임의의 data point X가 존재한다.
$X$에서부터 decision boundary까지의 부호있는 거리 값 r은 다음과 같다.
$$r = \frac {g(X)}{||w||}$$
$X$ = $X_p$ + $r$$\frac {w}{||w||}$로 나타낼 수 있다.
$X_p$가 decisioin boundary에 존재하므로 $g(X_p)$ = 0이다.
$g(X)$
= $w^T$$X$ + b = $w^T$ ($X_p$ + $r$$\frac {w}{||w||}$) + b
= $w^T$$X_p$ + b + $w^T$($r$$\frac {w}{||w||}$)
= $w^T$$X_p$ + b + $r$$\frac {w^Tw}{||w||}$
= $g(X_p)$ + $r$$||w||$
= $r$$||w||$
따라서 특정 data point $X$에서 decision boundary로 내린 수선의 발의 길이 $r$ = $\frac {g(X)}{||w||}$ 이다.
SVM의 Objective Function
위에서도 언급했듯, SVM의 목표는 margin maximize하는 hyperplane을 찾는 것이다.
$y$ = 1, $y$ = -1 두 개의 class가 존재할 때,
$X_+$는 $y$ = 1에 속하는 support vector들이고,
$X_-$는 $y$ = -1에 속하는 support vector들이다.
Margin r = $\frac {g(X_+)}{||w||}$ = $\frac {g(X_-)}{||w||}$ 이다.
두 클래스의 support vector들과의 margin이 같아야 decision boundary가 두 클래스의 정 가운데에 속하게 된다.
들어가기에 앞서, $w$와 b를 조정하여 다음과 같아지도록 할 것이다.
$g(X_+)$ = +1
$g(X_-)$ = -1
$w$와 b를 조정한다는게 잘 와닿지 않을 것 같아 예시를 들어보도록 하겠다.
$g_1(X)$ = $x_1 + 2x_2 + 4$ ,
$g_2(X)$ = $2x_1 + 4x_2 + 8$ ,
$X$ = $(x_1, x_2)$ = (1, 1)일 때, $g_1(X)$ = 7, $g_2(X)$ = 14로 다른 값이 나온다.
$w$와 b에 따라 같은 직선이지만 다른 값이 나올 수 있다는 뜻이다.
따라서 $w$와 b를 조정해 함수 값이 1 또는 -1로 나오도록 조정한다.
이렇게 조정하면 Margin r = $\frac {±1}{||w||}$ 이다.
Margin은 |r|이지만, 두 클래스의 support vector들 사이의 거리는 2 * Margin이므로
2 * Margin = 2|r| = $\frac {2}{||w||}$ 이다.
이제 $\frac {2}{||w||}$을 maximize하고자 한다.
=> $||w||$을 minimize하는 것과 같다.
=> $\frac {1}{2}$$||w||^2$을 minimize하는 것과 같다.
따라서 우리의 cost function의 최적의 해 $w^*$ = $\underset{w}{argmin}$$\frac {1}{2}$$||w||^2$ 이다.
무언가 이상하지 않은가?
위의 설명에 따르면 $w^*$ = [$w^*_1$, $w^*_2$, ... , $w^*_d$] = [0, 0, ... , 0] 이다.
이는 최고의 정확도를 위해 아무 분류도 하지 않는 것과 같다.
따라서 우리는 제약조건이 필요하다.
제약조건 Constraints
다음과 같은 제약조건을 추가한다.
class +1인 data들의 제약조건
$g(X_{+1})$ ≥ 1 또는 $w^TX_{+1}$ + b ≥ 1
class -1인 data들의 제약조건
$g(X_{-1})$ ≤ -1 또는 $w^TX_{-1}$ + b ≤ -1
test data들에는 data point와 정답이 포함되어 있다.
따라서 어떠한 data를 넣건 올바르게 분류해야 한다는 제약조건을 추가해 모든 data에 대해 정확히 분류하면서 margin을 maximize하는 decision boundary를 찾는다.
위 제약조건들을 하나의 제약조건으로 표시하면 다음과 같다.
$$y_i(w^TX_i + b) ≥ 1$$
이 조건은 ($X_1, y_1$)부터 ($X_N, y_N$)까지의 모든 data에 대해 성립해야한다.
제약조건이 추가된 SVM의 최종 objective function은 다음과 같다.
min $\frac{1}{2} ||w^2||$
subject to $y_i(w^TX_i + b) ≥ 1$, ∀$i$ ∈ [1, N]
처음에 언급했듯 현재 나는 linearly separable한 data에 대해서 solution이 있는 SVM에 대해 설명하고 있다.
이를 Hard margin SVM이라고 한다.
Hard margin SVM의 optimization problem을 푸는 방법은 다음 포스트에서 설명하도록 하겠다.
[Machine Learning] Support Vector Machine (SVM) (2)
이전 글에서 SVM에 대한 기본적인 개념을 설명하였다. [Machine Learning] Support Vector Machine (SVM) (1)우리에게 Leanearly separable 한 두 개의 클래스 중 하나의 클래스에 속하는 데이터셋들이 있다.우리의
leehyogum.tistory.com
'CS > Machine Learning' 카테고리의 다른 글
[Machine Learning] Support Vector Machine (4), Soft margin SVM (1) | 2024.10.30 |
---|---|
[Machine Learning] Support Vector Machine (SVM) (3) (2) | 2024.10.17 |
[Machine Learning] Support Vector Machine (SVM) (2) (0) | 2024.10.10 |