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/

Hiromasa Kaneko

August 04, 2017
Tweet

More Decks by Hiromasa Kaneko

Other Decks in Science

Transcript

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

    View full-size slide

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

    View full-size slide

  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
    線形判別関数︓

    View full-size slide

  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

    View full-size slide

  5. サポートベクター 4
    x1
    x2
    クラス1
    クラス-1
    サポートベクター
    ・・・他のクラスのサンプルと
    最も近いところにいるサンプル
    f(x) = 1 (クラス1)
    f(x) = -1 (クラス-1)

    View full-size slide

  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 の最小化

    View full-size slide

  7. きれいに分離できないときは︖ 6
    x1
    x2
    スラック変数 ξ を導⼊︕
    ξi
    > 1
    0 < ξi
    < 1
    ξi
    = 0
    サンプルごとの ξi
    の和
    を最小化
    1
    n
    i
    i
    ξ
    =

    n: モデル構築用
    サンプル数

    View full-size slide

  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

    View full-size slide

  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 とする

    View full-size slide

  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

    View full-size slide

  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 が求まる

    View full-size slide

  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
    : サポートベクターの個数

    View full-size slide

  13. 非線形SVMへの拡張 12
    線形判別関数は判別能⼒に限界
    元の空間より⾼次元に写像
    ⾼次元空間上で線形判別関数を構築
    ⾼次元空間への写像の例︓
    写像前(1次元)
    線形判別不能
    写像後(2次元)
    線形判別可能
    線形判別関数
    ( )
    2
    ,
    x x x

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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 および γ の最適化

    View full-size slide

  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
    ・・・

    View full-size slide