support vector machine
support vector machine
- 임의 dataset의 decision boundary 설정 시, boundary와 가장 가까운 data point와의 간격(margin)을 최대로 하는 선을 정의
- θTx=wTx+b
- θ0=b로 해석
- wTx=θ1x1+...+θnxn
- y = -1 or 1로 나타남(binary classification)
- 벡터 p=xn−x에 대해
- ∣∣w∣∣wTp=∣∣w∣∣1[wTxn+b−(wxT+b)]=∣∣w∣∣1
- ∣wTxn+b∣=1인 조건 하에 ∣∣w∣∣1를 최대화
- ∣wTxn+b∣=yn(wTxn+b), wTxn+b의 부호에 의해 +1 혹은 -1로 값이 결정됨
- 벡터 w에 대해 ∣∣w∣∣2=wTw
- ∣∣w∣∣1의 최대화 = ∣∣w∣∣의 최소화, 즉 미분값을 최소화하게 되므로 ∣∣w∣∣=21wTw
Lagrange multiplier
- f(x,y)=ax+by=k, g(x,y)=x2+y2=r2인 함수 f, g를 가정
- f와 g가 접하게 되면 gradient가 동일 : ∇f=λ∇g
- λ : lagrange multiplier
- L(x,y,λ)=f(x,y)−λ(g(x,y)+c)
- ∇L=∂x∂L=∂x∂f−λ∂x∂g=0
- ∂x∂f=λ∂x∂g
- SVM 계산에 있어 f=21wTw, g=yn(xTxn+b)−1≥0
- L(w,b,λ)=21wTw+∑λi[−yi(wTxi+b)−1]
- ∂w∇L=0=w−∑λiyixi⇒w=∑λiyixi로 SVM weight w 계산
- ∂b∇L=0=∑λiyi
- L(w,b,λ)=21wTw+∑λi[−yi(wTxi+b)−1]에서
- w=∑λiyixi
- ∑λiyi=0
- L(w,b,λ)=∑λi+21wTw−∑λiyiwTxi=∑λi−21wTw
How to solve SVM
- SVM : y(wTxi+b)≥1일 때 21wTw의 최소값을 계산하는 것
- Lagre multiplier : L(w,b,λ)=21wTw−∑λ[yi(wiTxi+b)−1]
- supλL(x,λ) : λ에 대해 가질 수 있는 L의 최댓값을 찾는 것
- SVM의 해 p∗=infλsupλL(x,λ) : L이 가질 수 있는 최댓값 중 하한선
- supλL(x,λ)는 ∑식이 음수일 땐 21wTw지만, 양수일 땐 무한으로 발산
- sup값이 가질 수 있는 하한선은 즉 21wTw이 됨
- Lagrange dual function : g(λ)=infw,bL(w,b,λ)인 함수 g를 정의
- λ≥0일 때 g(λ)≤p∗ : g=inf L≤L(x,λ)이기 때문
- p∗를 구하기 어렵다면 g(λ)를 구한 후 p∗=supλg(λ)를 계산하는 방법도 있음
- g(λ)=infw,bL(w,b,λ)
- ∂w∂L=w−∑λiyixi=0
- ∂b∂L=∑λiyi=0
- 즉 g(λ)=−21wTw+∑λi