スキップしてメイン コンテンツに移動

SVMの理論 part 1

Introduction  

SVMの理論編を書いていこうと思います。実装編は
線形SVMの実装
カーネルSVMの実装
をご覧ください。
このpart 1の記事ではSVMの目的関数の導出までを書いていきます。

概要

  • 一般線形モデル
  • SVMの説明
  • ハードマージン
  • ソフトマージン


一般化線形モデル 

SVMには一般化線形モデルが使われています。一般化線形モデルとは次のようなモデルのことです。
$$f(x) = w^T\phi(x) + b$$
bはバイアスと呼ばれています。

$$0 = w^T\phi(x) + b$$は超平面(n次元平面)を表します。この超平面は$\phi(x)$をきれいに2クラスに分類するように決めます。

ここで$\phi(x)$は平面で分類できないようなxを平面で分類できる特徴空間に送る写像です。
$\phi(x)$のイメージは以下の画像を見てください。



左は線形分離不可能なデータ。右は$\phi(x)$によって特徴空間に移された線形分離可能なデータです。

よって$w^T \phi(x) + b$は特徴空間では平面となります。

次に、SVMの目的を説明します。

SVMの説明

    SVMではラベルは1 or -1として扱います。$y \in \{1,-1\}$、Xをデータセットとします。
    私たちの目的は決定関数と呼ばれるものを作ることです。
    SVMでは以下のようなものです。
    $$f(x_i) > 0 \implies y_i = 1 $$
    $$f(x_i) < 0 \implies y_i = -1$$

    f(x)は $w^T \phi(x) + b$とし、パラメータwとbを最適化します。
    しかし、最適化するにはあるよい基準が必要になります。SVMではマージンと呼ばれる値を使い、最適な境界線を決定します。

    ハードマージン
      SVMはマージンと呼ばれる値を用いて、クラスの境界は決定されます。
      マージンとは何なのでしょうか?


      境界$w^T \phi(x) +b = 0$から一番近いデータ$x_i$を持ってきます。マージンとは、境界と$x_i$との距離のことを言います。
      次の画像は二次元でのデータに対して、マージンを可視化したものです。



      この緑の線がマージンになります。SVMでは$w^T \phi(x) + b= 0$という境界は$w^T \phi(x) + b = 0$から最も近いデータのみに依存して決められます。このデータ点のことをサポートベクトルといいます。一般に二つ以上あります。

      私たちはマージンを最大化させるようなw,bを求め、境界を求めます。これは境界線と互いのクラスのデータをできるだけ話したいからです。

      データセットをXとします, $\forall x_i \in X$, xと境界$w^T \phi(x) + b = 0$の距離は
      $$\frac{|w^T \phi(x_i) + b|}{||W||}$$
      と表されます。

      今、すべてのデータ点は線形分離可能とします。つまり、特徴空間において、ある平面で完全に2クラスを分けることができるということです。


      この画像は線形分離可能なデータです。

      これは線形分離可能ではないデータです。

      よって、今全てのデータは線形分離可能であることを仮定しているので、
      $$f(x_i) > 0 \implies y_i = 1 $$
      $$f(x_i) < 0 \implies y_i = -1$$
      が必ず成立している必要があります。

      よって、
      $$\forall i \in N,~~~~~~~y_i(w^T \phi(x_i) + b) > 0$$
      が成り立ちます。

      そして、
      $$\frac{|w^T \phi(x_i) + b|}{||W||} = \frac{y(w^T \phi(x_i) + b)}{||W||}$$
      として、絶対値を外すことができます。

      次に$i_0$を次のような値とします。

      $$\forall i_0 \in \arg_{n \in N} \min_{x \in X} \frac{|w^T \phi(x_n) + b|}{||W||}$$,

      そして、Mを
      $$M = y_{i_0}(w^T \phi(x_{i_0}) + b)$$
      と定義します。
      ここで、$\forall i \in N,~y_i(w^T \phi(x_i) + b) > 0$なので、$M > 0$が常に成り立ちます。

      Mは境界$w^T \phi(x) + b = 0$から最も近いデータまでの距離を表しています

      よって目的関数は次のように表されます。

      $$\max_{w,b,M} \frac{M}{||W||}$$ $$~~s.t~~ \forall i \in N ~, y_i(w^T \phi(x_i) + b) \geq M$$

      $w^{\star}  = \frac{w}{M}, b^{\star}  = \frac{b}{M}$とし、目的関数を変数変換します。
      $$\max_{w^{\star},b^{\star}} \frac{1}{||W^{\star}||}$$
      $$~~s.t~~ \forall i \in N, y_i (w^{\star} \phi(x_i) + b^{\star}) \geq 1$$


      $||W^{\star}|| > 0$なことから、
      $$\max_{w^{\star},b^{\star}} \frac{1}{||W^{\star}||}$$
      $$\iff \min_{w^{\star},b^{\star}}  ||W^{\star}||$$
      $$\iff \min_{w^{\star},b^{\star}}  ||W^{\star}||^2$$
      と書き換えることが可能です。

      よってSVMの目的関数は
      $$\min_{w,b}  ||W||^2$$
      $$~~s.t~~ \forall i \in N, y_i (w^T \phi(x_i) + b) \geq 1$$
      と書くことができます。

      ただし、$W^{\star} = W, b^{\star} = b$と再び定義しなおしました。

      ここまで、データが完全に超平面で分離できることを仮定していました。この手法はハードマージンと呼ばれています。

      しかし、現実のデータは完全に線形分離できることは稀です。そこでハードマージンに代わり、ソフトマージンと呼ばれるものが開発されました。

      ソフトマージン
      $\epsilon_i \geq 0$ を新たに目的関数に導入することを考えます。

      $\forall i \in N, y_i (w^T \phi(x_i) + b) \geq 1$という条件を緩和します。 条件を書き換えると以下のようになります。

      $$ \forall i \in N, y_i (w^T \phi(x_i) + b) \geq 1 - \epsilon_i$$

      もし、$x_i$が$w^T \phi(x) + b = 0$を超えている場合、 $\epsilon_i > 0$ が成り立ちます。

      $x_5$と$x_8$とx_9$は境界$w^T \phi(x) + b = 0$を超えています。
      この黒い線の距離が\epsilon_i$の値になります。

      目的関数を次のように書き替えます。
      $$\min_{w,b}  \frac{1}{2}||W||^2 + C\sum_{i \in N} \epsilon_i$$
      $$~~s.t~~ \forall i \in N, y_i (w^T \phi(x_i) + b) \geq 1 - \epsilon_i ,~~~~\epsilon \geq 0 , \forall i \in N$$

      Cは正規化係数と呼ばれています。
      このパラメータはハイパーパラメータであり、自分であらかじめ決めておく必要があります。Cは誤分類の抑制を調節する役割を担っています。Cが小さくなればなるほど、$\sum_{i \in N}\epsilon_i$が目的関数に与える影響は少なくなり、$\epsilon_i$は大きい値をとることができてしまします。よってたくさんの誤分類を許してしまうことになります。反対に、 Cが大きくなればなるほど、$\sum_{i \in N}\epsilon_i$が目的関数に与える影響は大きくなり、最小化をする上で$\epsilon_i$はあまり、大きい値をとれなくなります。
      $C = \infty$とすると、これはハードマージンと同一視することができます。
      Reference
        https://www.amazon.co.jp/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%83%9E%E3%82%B7%E3%83%B3-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E7%AB%B9%E5%86%85-%E4%B8%80%E9%83%8E/dp/4061529064

        コメント

        このブログの人気の投稿

        MAP推定

        Introduction English ver 今日はMAP推定(事後確率最大化法)について書きました。MAP推定ではベイズの定理を使います。データが少ないとき、最尤推定の結果をあまり信用できない話は、最尤推定の時に書きました。この時、MAP推定では自分の事前に持っている情報を取り入れることができます。 概要 ベイズの定理 MAP推定 共役分布 MAP推定の例 ベイズの定理 ベイズの定理は $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ です。 ただし、 $P(A|B)$ はBが起こった時のAの起こる確率です。 詳しくは  http://takutori.blogspot.com/2018/04/bayes-theorem.html  を見てください。 Map推定 MAP推定ではベイズの定理を使います。MAP推定は事後確率が最大になるようなパラメータを選びます。 いま、$x_1,x_2,...,x_n$というデータを$\theta$というパラメータを持つ分布から得られたとする。この時$P(\theta|x_1,x_2,...,x_n)$を求めたい。 ここで、ベイズの定理を使う。 $$P(\theta|x_1,x_2,...,x_n) = \frac{P(x_1,x_2,...,x_n | \theta ) P(\theta)}{P(x_1,x_2,...,x_n)}$$ ここで、$P(\theta)$は$\theta$の事前分布である。 $x_1,x_2,...,x_n$はそれぞれ独立であるので、 $$P(x_1,x_2,...,x_n | \theta ) = \Pi_{i=1}^n P(x_i|\theta)$$. よって、マップ推定は $$\theta^{\star} = \arg \max_{\theta} \frac{\Pi_{i=1}^n P(x_i|\theta) P(\theta)}{P(x_1,x_2,...,x_n)}$$ となる。 $P(x_1,x_2,...,x_n)$という値は$\theta$には依存しない。よって、定数であり、最適化に定数は関係ないので、排除すると、MAP推定は次のようになる。 $$\th...

        カーネルK-means 理論編

        Introduction English ver 今日は、カーネルK-meansの理論について書きます。カーネルK-meansは通常のK-meansの欠点を補うことができます。通常のK-meansの欠点とカーネルK-meansの強みも説明します。もし、まだ御覧になられていなければ、通常の K-means 理論編 の記事を見ていただけるとよいのではないかと思います。 カーネルK-meansの実装編 も併せてご覧ください。 概要 K-meansの弱点 カーネルトリック カーネルK-means アルゴリズム K-meansの弱点 例えば、次のようなデータを用意します。 このデータはK-meansによってうまく分類することはできません。なぜなら通常のK-meansでは、データとプロトタイプのユークリッド距離に依存しているからです。そのため、このような円状に分布しているデータはうまく分類することができません。 プロトタイプとはそれぞれのクラスにあり、そのクラスを代表するようなもののことです。K-meansでは各クラスの平均ベクトルとなります。それゆえ、以下のような分類になってしまいます。 このようなデータではK-meansはうまくいきません。 K-meansで分類できるデータセットは次のように各クラスで固まっている必要があります。 カーネルK-meansはK-meansの弱点を補います。 カーネルトリック 初めに、カーネルトリックを説明します。 線形分離できないようなデータ$X$を例えば次のように線形分離できるように$\phi(x)$に送る写像$\phi$を考えます。 カーネルは次のように定義されます。 $$K(x,y) = \phi(x)^T \phi(y)$$ $\phi$を具体的に計算することは難しいですが、$K(x,y)$を計算することなら簡単です。 この手法をカーネルトリックと呼ばれます。 カーネルK means K-meansの目的関数を復習しておきます。 $$J = \sum_{n=1}^{N} \sum_{k=1}^{K} r_{nk} ||x_n-\mu_k||^2$$ ここで、 プロトタイプは$\mu_i ~\forall k \in K$としま...

        MAP estimation

        Introduction 日本語 ver Today, I will explain MAP estimation(maximum a posteriori estimation). MAP estimation is used Bayes' thorem. If sample data is few, we can not belive value by Maximum likelihood estimation. Then, MAP estimation is enable to include our sense.  Overveiw Bayes' theorem MAP estimation Conjugate distribution Bayes' theorem  Bayes' theorem is $$P(A|B) = \frac{P(B|A)P(A)}{P(B)}$$ $P(A|B)$ is Probability when B occur. Please go on  http://takutori.blogspot.com/2018/04/bayes-theorem.html to know detail of Bayes' theorem. Map estimation Map estimation is used Bayes' theorem. Map estimation estimate parameter of population by maximuzing posterior probability. Now, suppoce we get data $x_1,x_2,...,x_n$ from population which have parameter $\theta$. Then, we want to $P(\theta|x_1,x_2,...,x_n)$. Here, we use Bayes' theorem. $$P(\theta|x_1,x_2,...,x_n) = \frac{P(x_1,x_2,...,x_n | \theta ) P(\theta)}{P(x_1,x_2,...,x_n)}...