<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SVM |</title><link>https://chaeniverse.github.io/tags/svm/</link><atom:link href="https://chaeniverse.github.io/tags/svm/index.xml" rel="self" type="application/rss+xml"/><description>SVM</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 20 Sep 2024 00:00:00 +0000</lastBuildDate><image><url>https://chaeniverse.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>SVM</title><link>https://chaeniverse.github.io/tags/svm/</link></image><item><title>SVM (Support Vector Machine)</title><link>https://chaeniverse.github.io/blog/svm-part-1/</link><pubDate>Fri, 20 Sep 2024 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/svm-part-1/</guid><description>&lt;h2 id="svm-개요"&gt;SVM 개요&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SVM (Support Vector Machine)&lt;/strong&gt; 은 이진 분류 알고리즘이다. 본 글에서 다루는 original SVM은 본질적으로 &lt;strong&gt;선형 모델&lt;/strong&gt;이다 (이후 kernel trick으로 비선형 확장 가능).&lt;/p&gt;
&lt;h2 id="linear-classifier의-목적"&gt;Linear Classifier의 목적&lt;/h2&gt;
&lt;p&gt;SVM은 이진 분류에서 라벨을 $\{-1, +1\}$ 로 표기한다. 목표는 분류기 집합 $H$ 안에서 일반화 오차 $R_D(h)$ 가 작은 가설 $h: X \to \{-1, +1\}$ 을 찾는 것.&lt;/p&gt;
&lt;p&gt;입력 공간 $X$ 에서 각 학습 데이터의 실제 라벨 ($+1$, $-1$) 을 정확히 분류하는 최적 분류기를 찾는다 — 결국 일반화 오차 $R_D(h)$ 를 최소화하는 문제.&lt;/p&gt;
&lt;p&gt;SVM은 고차원 공간에서도 선형 분류를 수행한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2D → &lt;strong&gt;선(line)&lt;/strong&gt; 으로 분리&lt;/li&gt;
&lt;li&gt;3D → &lt;strong&gt;평면(plane)&lt;/strong&gt; 으로 분리&lt;/li&gt;
&lt;li&gt;일반 $d$ 차원 → $(d-1)$ 차원의 &lt;strong&gt;초평면(hyperplane)&lt;/strong&gt; 으로 두 클래스 분리&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;선형 분류기는 다음 형태:&lt;/p&gt;
$$H = \{\, x \mapsto \mathrm{sign}(w \cdot x + b) \;:\; w \in \mathbb{R}^d,\; b \in \mathbb{R} \,\}$$&lt;p&gt;$w \cdot x + b$ 의 부호로 라벨을 결정 (음수 → $-1$, 양수 → $+1$). 여기서 $w, b$ 가 학습 대상.&lt;/p&gt;
&lt;h2 id="local-optimum-global-optimum"&gt;Local Optimum? Global Optimum!&lt;/h2&gt;
&lt;p&gt;학습 데이터를 정확히 분류하는 hyperplane은 무수히 많다. SVM은 그 중 &lt;strong&gt;두 클래스 사이의 마진(margin)이 가장 넓은&lt;/strong&gt; hyperplane을 고른다.&lt;/p&gt;
&lt;h3 id="마진-너비-도출"&gt;마진 너비 도출&lt;/h3&gt;
&lt;p&gt;분류 경계 위의 점 $x_0$ 에서 $w^\top x_0 + b = 0$. 여기서 $w$ 는 hyperplane의 법선 벡터.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;+1 plane&amp;rdquo; 위의 점 $x_1$ 은 법선 방향으로 거리만큼 이동한 점이므로&lt;/p&gt;
$$x_1 = x_0 + p\, w$$&lt;p&gt;$x_1$ 이 plus plane 위에 있다는 조건 $w^\top x + b = 1$ 에 대입:&lt;/p&gt;
$$w^\top x_0 + p\, w^\top w + b = 1$$&lt;p&gt;$w^\top x_0 + b = 0$ 이므로&lt;/p&gt;
$$p\, w^\top w = 1 \quad\Longrightarrow\quad |p| = \frac{1}{\|w\|^2}$$&lt;p&gt;→ 한쪽 마진은 $\dfrac{1}{\|w\|^2}$, &lt;strong&gt;양쪽 합 마진은 $\dfrac{2}{\|w\|^2}$.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(보다 일반적으로 plus와 minus plane 거리를 $\|w\|$ 로 정규화하면 마진은 $\dfrac{2}{\|w\|}$. 위 도출은 $w^\top x + b = \pm 1$ 형태로 정규화한 경우의 결과)&lt;/p&gt;
&lt;h2 id="마진과-vc-차원의-관계"&gt;마진과 VC 차원의 관계&lt;/h2&gt;
&lt;p&gt;마진 $\Delta$ 를 가지는 분리 초평면의 VC 차원은 다음 상한을 가진다.&lt;/p&gt;
$$h \;\le\; \min\!\left(\left\lceil \frac{R^2}{\Delta^2}\right\rceil,\; D\right) + 1$$&lt;ul&gt;
&lt;li&gt;$D$ : 입력 공간의 차원&lt;/li&gt;
&lt;li&gt;$R$ : 모든 입력 벡터를 포함하는 가장 작은 구의 반지름&lt;/li&gt;
&lt;li&gt;$\Delta$ : 마진&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;여기서 변하는 건 $\Delta$ 뿐. &lt;strong&gt;마진이 클수록 $R^2/\Delta^2$ 가 작아져 VC 차원이 $D$ 보다 더 낮아질 수 있다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;VC 차원이 작아지면 일반화 위험 상한 (capacity term) 도 작아진다:&lt;/p&gt;
$$R[f] \;\le\; R_{\text{emp}}[f] + \sqrt{\frac{h(\ln(2n/h)+1) + \ln(\delta/4)}{n}}$$&lt;p&gt;→ &lt;strong&gt;마진을 최대화 = VC 차원 ↓ = capacity ↓ = 기대 위험 ↓.&lt;/strong&gt; SVM이 마진을 최대화하는 이론적 근거.&lt;/p&gt;
&lt;h2 id="svm-case-i-linear--hard-margin"&gt;SVM Case I: Linear &amp;amp; Hard Margin&lt;/h2&gt;
&lt;p&gt;데이터가 선형 분리 가능하고 예외(오분류)를 허용하지 않는 경우 (hard margin).&lt;/p&gt;
&lt;h3 id="primal-problem"&gt;Primal Problem&lt;/h3&gt;
$$\min_{w, b} \;\frac{1}{2}\|w\|^2$$$$\text{s.t.} \quad y_i(w^\top x_i + b) \;\ge\; 1 \quad \forall i$$&lt;p&gt;마진 $\dfrac{2}{\|w\|^2}$ 을 최대화 ↔ $\dfrac{1}{2}\|w\|^2$ 을 최소화. 제약은&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;클래스 $+1$: $w^\top x_i + b \ge 1$&lt;/li&gt;
&lt;li&gt;클래스 $-1$: $w^\top x_i + b \le -1$&lt;/li&gt;
&lt;li&gt;둘을 합쳐서 $y_i(w^\top x_i + b) \ge 1$&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="lagrangian--dual"&gt;Lagrangian → Dual&lt;/h3&gt;
&lt;p&gt;라그랑주 승수 $\alpha_i \ge 0$ 을 도입:&lt;/p&gt;
$$L_P = \frac{1}{2}\|w\|^2 - \sum_{i} \alpha_i \big( y_i(w^\top x_i + b) - 1 \big)$$&lt;p&gt;KKT 조건:&lt;/p&gt;
$$\frac{\partial L_P}{\partial w} = 0 \quad\Longrightarrow\quad w = \sum_i \alpha_i y_i x_i$$$$\frac{\partial L_P}{\partial b} = 0 \quad\Longrightarrow\quad \sum_i \alpha_i y_i = 0$$&lt;p&gt;이를 $L_P$ 에 다시 대입하면 &lt;strong&gt;$\alpha$ 만의 함수&lt;/strong&gt;인 dual 문제가 나온다 (convex). 해를 $\alpha^\star$ 라 하자.&lt;/p&gt;
&lt;h3 id="새-입력-분류"&gt;새 입력 분류&lt;/h3&gt;
$$f(x_{\text{new}}) = \mathrm{sign}\!\left(\sum_i \alpha_i^\star y_i \, x_i^\top x_{\text{new}} + b\right)$$&lt;h3 id="support-vectors"&gt;Support Vectors&lt;/h3&gt;
&lt;p&gt;KKT의 complementary slackness에 의해 대부분의 데이터에서 $\alpha_i = 0$ 이 되고, &lt;strong&gt;마진 경계 위에 정확히 놓인 데이터들에 대해서만 $\alpha_i &gt; 0$.&lt;/strong&gt; 이들이 &lt;strong&gt;support vector&lt;/strong&gt; — 모델 $w$ 를 결정짓는 핵심 데이터들.&lt;/p&gt;
&lt;p&gt;데이터셋 안쪽 깊은 점들은 분류기 결정에 영향을 주지 않고, 마진 위 소수 점만이 모델을 정의한다는 게 SVM의 본질.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;원문:
&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>