Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サポートベクターマシン(Support Vector Machine, SVM)

サポートベクターマシン(Support Vector Machine, SVM)

サポートベクターマシン (SVM) とは?
線形判別関数
SVMの基本的な考え方
サポートベクター
マージンの最大化
きれいに分離できないときは?
2つの項を一緒に最小化
重み w を求める
偏微分して0
二次計画問題
線形判別関数を求める
非線形SVMへの拡張
カーネルトリック
カーネル関数の例
最終的なSVMを作る前に最適化するパラメータ
グリッドサーチ+クロスバリデーション

SVMのプログラミング課題: http://datachemeng.com/pythonassignment/

4ae391ce9562c565ea7a060e5dda5609?s=128

Hiromasa Kaneko

August 04, 2017
Tweet

Transcript

  1. サポートベクターマシン Support Vector Machine SVM 0 明治大学 理⼯学部 応用化学科 データ化学⼯学研究室

    ⾦⼦ 弘昌
  2. サポートベクターマシン (SVM) とは︖ 線形判別関数によるクラス分類 2つのクラス (1のクラス・-1のクラス) のどちらに属するか決定 予測能⼒の⾼いモデルを作成可能 カーネルトリックにより非線形の判別モデルに 1

  3. 線形判別関数 2 x1 x2 クラス1 クラス-1 1 2 1 1

    2 2 ( , ) f x x w x w x b b = + + = + xw [ ] 1 1 2 2 , w x x w   = =     x w 線形判別関数︓
  4. SVMの基本的な考え方 3 x1 x2 クラス1 クラス-1 マージンを最大化するように 判別関数を決める︕ 2 2

    1 2 2 2 w w = + w マージン = (点と直線との距離で計算) 1 2 1 1 2 2 ( , ) f x x w x w x b b = + + = + xw
  5. サポートベクター 4 x1 x2 クラス1 クラス-1 サポートベクター ・・・他のクラスのサンプルと 最も近いところにいるサンプル f(x)

    = 1 (クラス1) f(x) = -1 (クラス-1)
  6. マージンの最大化 5 x1 x2 クラス1 クラス-1 2 2 1 2

    2 2 w w = + w マージン = (点と直線との距離で計算) 1 2 1 1 2 2 ( , ) f x x w x w x b b = + + = + xw 線形判別関数︓ 2 w の最大化 1 2 w の最小化
  7. きれいに分離できないときは︖ 6 x1 x2 スラック変数 ξ を導⼊︕ ξi > 1

    0 < ξi < 1 ξi = 0 サンプルごとの ξi の和 を最小化 1 n i i ξ = ∑ n: モデル構築用 サンプル数
  8. 2つの項を一緒に最小化 ||w|| / 2 の最小化 → 計算の都合上、 ||w||2 / 2

    の最小化 ξi の和の最小化 7 C : 2つの項のバランスを決める係数 x(i): i 番目のサンプルの説明変数 y(i): i 番目のサンプルの値 (1 もしくは -1) 2 1 1 2 n i i C ξ = + ∑ w の最小化 ただし、 ( ) ( ) ( ) 0, 1 i i i i y f ξ ξ ≥ ≥ − x
  9. 重み w を求める Lagrangeの未定乗数法 • ラグランジュ乗数αi 、βi (i=1, 2, ...,

    n) を導⼊ 8 ( ) { } 2 ( ) ( ) 1 1 1 1 1 2 n n n i i i i i i i i i i G C ξ y f ξ ξ α β = = = = + − − + − ∑ ∑ ∑ w x w、b、ξi に関してGを最小化し、αi 、βi に関してGを最大化 w、b、ξi に関してGが極小 G をw、b、ξi それぞれで偏微分して 0 とする
  10. 偏微分して0 9 ( ) ( )T 1 n i i

    i i y α = = ∑ w x ( ) 1, 2, , i i C i n α β + = = K ( ) 1 0 n i i i y α = = ∑ G を w で偏微分して0 G を b で偏微分して0 G を ξi で偏微分して0 これらを使って G を変形すると・・・ ( ) ( ) ( ) ( )T 1 1 1 1 2 n n n i j i j i i j i i j G y y α α α = = = = − ∑ ∑∑ x x
  11. 二次計画問題 10 ( ) ( ) ( ) ( )T

    1 1 1 1 2 n n n i j i j i i j i i j G y y α α α = = = = − ∑ ∑∑ x x 制約 G を αi に対して最大化する二次計画問題を解くと αi が求まる ( ) 1 0 , 0 n i i i i C y α α = ≤ ≤ = ∑ のもとで、 ( ) ( )T 1 n i i i i y α = = ∑ w x w が求まる
  12. 線形判別関数を求める 11 ( ) ( )T ( ) ( )T

    1 1 ( ) n n i i i i i i i i f b y b y b α α = = = + = + = + ∑ ∑ x xw x x xx ( ) ( ) ( ) ( )T S S S 1 i i i j j i j b y y n α ∈ ∈   = −     ∑ ∑ x x S : サポートベクター (αi ≠0 のサンプル) の集合 nS : サポートベクターの個数
  13. 非線形SVMへの拡張 12 線形判別関数は判別能⼒に限界 元の空間より⾼次元に写像 ⾼次元空間上で線形判別関数を構築 ⾼次元空間への写像の例︓ 写像前(1次元) 線形判別不能 写像後(2次元) 線形判別可能

    線形判別関数 ( ) 2 , x x x →
  14. カーネルトリック 13 線形判別関数 (元の空間)︓ ( ) ( )T 1 (

    ) n i i i i f y b α = = + ∑ x xx ( ) ( )T ( ) ( ) 1 ( ) n i i i i f y b α φ φ = = + ∑ x x x 非線形判別関数 (⾼次元空間)︓ ϕ(x) を求める必要はなく、内積 ϕ(x)ϕ(x(i))T が分かればOK︕ ⾼次元空間への写像︓ ( ) ( ) ( )T ( ) ( ) ( ) ( ) , i j i j K φ φ = x x x x ⾼次元空間への写像 ϕ(x) ではなく、内積を指定 (カーネル関数 K ) ( ) φ → x x
  15. カーネル関数の例 線形カーネル ガウシアンカーネル (使われることが多い) 多項式カーネル 14 ( ) ( )

    ( ) ( ) ( )T , i j i j K = x x x x ( ) ( ) 2 ( ) ( ) 2 ( ) ( ) ( ) ( ) 2 , exp exp 2 i j i j i j K γ σ   −   = − = − −     x x x x x x ( ) ( ) ( ) ( ) ( ) ( )T , 1 d i j i j K λ = + x x x x
  16. 最終的なSVMを作る前に最適化するパラメータ ガウシアンカーネルを使用したSVMのとき、最初に C と γ とを 適切に設定する必要がある 15 2 1

    1 2 n i i C ξ = + ∑ w ( ) ( ) 2 ( ) ( ) ( ) ( ) , exp i j i j K γ = − − x x x x グリッドサーチ + クロスバリデーション による C および γ の最適化
  17. グリッドサーチ+クロスバリデーション C と γ の候補を設定し、すべての組合せ (グリッド, 下図の• ) で クロスバリデーションを⾏う

    C と γ の候補の例 • C : 2-5, 2-4, ..., 29, 210 • γ : 2-10, 2-9, ..., 24, 25 例) クロスバリデーション後の 正解率が最も⾼い C ・ γ の組を選択 • 正解率についてはこちら 16 C γ 2-10 2-9 24 25 ・・・ 2-5 2-4 29 210 ・・・