SVM実践ガイド (A Practical Guide to Support Vector Classification)
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

SVM実践ガイド (A Practical Guide to Support Vector Classification)

  • 49,540 views
Uploaded on

A Practical Guide to Support Vector Classification の解説資料

A Practical Guide to Support Vector Classification の解説資料

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
49,540
On Slideshare
25,975
From Embeds
23,565
Number of Embeds
20

Actions

Shares
Downloads
558
Comments
0
Likes
99

Embeds 23,565

http://d.hatena.ne.jp 22,289
http://yut.hatenablog.com 585
http://10.6.20.162 312
https://twitter.com 166
http://192.168.33.10 53
http://hatenatunnel.appspot.com 40
http://webcache.googleusercontent.com 37
https://www.facebook.com 28
http://wiki.onakasuita.org 15
http://www.google.co.jp 10
http://startupcode.org 9
https://www.google.co.jp 7
http://cache.yahoofs.jp 3
http://translate.googleusercontent.com 2
http://geechscamp.lovepop.jp 2
http://cc.bingj.com 2
http://pinterest.com 2
http://nuevospowerpoints.blogspot.com 1
http://nuevospowerpoints.blogspot.com.ar 1
http://192.168.0.2 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. SVM実践ガイドA Practical Guide to Support Vector Classification by Chin-Wei Hsu, Chinh-Chung Chang, and Chih-Jen Lin 2012-06-24 Yoshihiko Suhara @sleepy_yoshi
  • 2. この資料は何?• SVMツールの使い方について簡潔にまとめた資料• A Practical Guide to Support Vector Classification – by Chin-Wei Hsu, Chinh-Chung Chang, and Chih-Jen Lin – http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf 2
  • 3. 本資料の概要• LIBSVM, LIBLINEARなどの広く利用されている ツールの性能を引き出す基本的なお作法 – データの前処理 • カテゴリの素性表現,スケール調整 – パラメータを選択方法 • Cross-validation と Grid-search – 具体例を交えて紹介 知っている人にはアタリマエ. 知らない人にはナニソレ?なお作法 3
  • 4. 対象読者• 想定する知識 – 教師あり学習という言葉は知っている – LIBSVMやLIBLINEARといったツールを使ったことがある/ 使うことができる程度の知識• こんな方にお薦め – Cパラメータって何? – SVMを利用しているがパラメータ調整をどうしたらいいの かよくわからない – 中身の理解は後回しでいいから良い性能を出したい – 自己流で使ってきたけれど,一度使い方を復習したい 4
  • 5. SVMとカーネルの簡単な説明 ちゃんとした説明は他の資料を参照のこと 5
  • 6. SVMとは• マージン最大化学習を行う二値分類器 – C: 誤りに対するペナルティパラメータ • C大 ⇒ 誤りを許容しない (= ハードマージンに近づく) • C小 ⇒ 誤りを許容する 𝑙 1 𝑇 min 𝒘 𝒘+ 𝐶 𝜉𝑖 𝒘,𝑏,𝝃 2 𝑖=1 subject to 𝑦 𝑖 𝒘 𝑇 𝜙 𝒙 𝑖 + 𝑏 ≥ 1 − 𝜉 𝑖, 𝜉 𝑖 ≥ 0. こんな問題を解く (知らなくてよい) 6
  • 7. カーネル関数• 写像された高次元空間における内積を計算する関数 – 線形カーネル以外のカーネル関数を用いることで非線形な 識別関数を学習できる• 基本的なカーネル関数 – 線形カーネル: 𝐾 𝒙 𝑖 , 𝒙 𝑗 = 𝒙 𝑖𝑇 𝒙 𝑗 𝑑 – 多項式カーネル: 𝐾 𝒙 𝑖 , 𝒙 𝑗 = 𝛾𝒙 𝑖𝑇 𝒙 𝑗 + 𝑟 , 𝛾>0 2 – RBFカーネル (*1): 𝐾 𝒙 𝑖 , 𝒙 𝑗 = exp −𝛾 𝒙 𝑖 − 𝒙 𝑗 , 𝛾>0 – シグモイドカーネル: 𝐾 𝒙 𝑖 , 𝒙 𝑗 = tanh(𝛾𝒙 𝑖𝑇 𝒙 𝑗 + 𝑟) (*1) 正確にはガウスカーネル.本稿での呼び方に倣ってRBFカーネルと呼ぶ (*2) 𝛾, 𝑟, 𝑑はカーネルパラメータ 7
  • 8. 初心者がやりがちな手順と オススメ手順 8
  • 9. 多くの初心者がやりがちな手順 1. データをSVMパッケージの入力形式に変換する2. 適当に選択したいくつかのカーネルとパラメータを 試す3. テストデータに対して適用する 9
  • 10. オススメ手順 1. データをSVMパッケージの入力形式に変換する2. 簡単なスケール調整を行う3. RBFカーネルの利用を検討する4. 交差検定を用いて最適なパラメータ𝐶と𝛾を発見する5. 最適なパラメータを用いて訓練データに対してモデ ルの生成を行う6. テストデータに対して適用する 10
  • 11. オススメ手順を使うと 初心者がやりがち オススメ手順を な手順を使った 使った場合の 場合の精度  精度  11
  • 12. データ処理の留意点 12
  • 13. カテゴリ素性• SVMは素性を実数として扱う• m種類の値を取りうる素性を1個の素性で表現す るのではなく,m個のバイナリ素性で表現する – 素性数が膨大にならない限り,経験上,結果が安定 する• 例: {red, green, blue} – 1次元素性 (-1), (0), (1) で表現するのではなく, – 3次元素性 (0,0,1), (0,1,0), (1,0,0) で表現した方がよい 13
  • 14. スケール調整• SVMを利用する前にスケール調整することは とても大切• スケーリングが大切な理由 – 値の取りうる範囲が大きい素性が支配的になる という問題を解消するため – 数値計算上の理由で好ましいため • 基本的なカーネル関数では素性ベクトルの内積を用 いるため,スケール調整をしないと情報落ち誤差が発 生するおそれがある 14
  • 15. モデル選択 15
  • 16. モデル選択• (1) カーネル関数の選択• (2) ペナルティパラメータ𝐶の選択• (3) カーネルパラメータの選択 本当はSVMを使うということもある意味でのモデル選択. 何を人手で決めて,何をデータによって決めるか. 16
  • 17. (1) カーネル関数の選択• RBFカーネルが最初の選択肢 – 高次元の非線形空間に写像する• RBFカーネルを使う理由 – 線形カーネルはRBFカーネルの特殊系 • パラメータ𝐶 の線形カーネルモデルに対応するパラメータ (𝐶, 𝛾)のRBFカーネルと同じ性能を示す • シグモイドカーネルもRBFカーネルと同じように動作 – 調整すべきカーネルパラメータが1つ • 多項式カーネルの場合,2つ – 数値計算上の理由 17
  • 18. Cross-validation と Grid-search 18
  • 19. やるべきこと• カーネル関数はRBFカーネルを使うことに決 めた• 調整すべきパラメータは 𝐶 と 𝛾 –  ただし最適なパラメータがわからない 19
  • 20. Cross-validation (交差検定)• 訓練データとテストデータ – テストデータは本来未知のデータ• 訓練データをk分割 – k-1ブロックのデータを用いて訓練 – 1ブロックのデータを用いて疑似的にテスト訓練データ このうち1ブロックを除いたデー k分割 タで訓練したモデルを使って1ブ ロックのデータを評価 (これを k回繰り返す) 20
  • 21. 交差検定をしない場合•  訓練データにオーバーフィットしてしまい, テストデータに対してうまく働かない 21
  • 22. 交差検定をした場合•  訓練データに対するオーバーフィットを避ける ことができ,テストデータに対してもうまく働く 22
  • 23. Grid-search (グリッド探索)• パラメータ 𝐶, 𝛾 を網羅的に探索する – 右下図の赤い点を絨毯爆撃するイメージ – 経験的に指数増加列がよい • 例) 𝐶 = 2−5 , 2−3 , … , 215 , 𝛾 = 2−15 , 2−13 , … , 23• Grid-searchを用いる理由 log 2 𝛾 – 網羅的なので安心 – RBFカーネルの場合,探索パラメー タが2つのため,コストが高くない – 並列化が容易 log 2 𝐶 23
  • 24. 粗い探索をしてから 精度 (%)ここが良さそう! 24
  • 25. 細かい探索を行う 精度 (%) よりよいパラメータ を発見 25
  • 26. 提案手順の実例 26
  • 27. Astroparticle Physics データ (1/2)• デフォルトパラメータ• デフォルトパラメータ+スケール調整 27
  • 28. Astroparticle Physics データ (2/2)• パラメータ選択+スケール調整デフォルト → スケール調整 → パラメータ選択+スケール調整 66.93% → 96.15% → 96.88% 28
  • 29. Bioinformatics データ (1/2)• デフォルトパラメータ• デフォルトパラメータ+スケール調整 29
  • 30. Bioinformatics データ (2/2)• パラメータ選択+スケール調整デフォルト → スケール調整 → パラメータ選択+スケール調整 56.52% → 78.52% → 85.12% 30
  • 31. Vehicle データ (1/2)• デフォルトパラメータ• デフォルトパラメータ+スケール調整 31
  • 32. Vehicle データ (2/2)• パラメータ選択+スケール調整デフォルト → スケール調整 → パラメータ選択+スケール調整 2.44% → 12.20% → 87.80% 32
  • 33. easy.py の使い方• スケール調整+パラメータ選択を自動的に実行 訓練データ テストデータ 33
  • 34. よくあるミス 34
  • 35. スケール調整でよくあるミス• 訓練データとテストデータで異なるスケール調整を行って しまう⇒ 同じスケール調整を行う×○ 35
  • 36. (RBFカーネルではなく)線形カーネルを使うケース 36
  • 37. 線形カーネルを使うケース• 特徴次元数が大きい場合,高次元に写像する必要がない – 精度向上が見込めないことがある• そのような場合は線形カーネルで十分 – 調整パラメータがCだけで済む – RBFカーネルも線形カーネル相当ということを述べたが,(C, γ) の調整が必要• 以下の3つのケースに分けて解説 – (1) 事例数 ≪ 素性数 – (2) 事例数も素性数も大きい場合 – (3) 事例数 ≫ 素性数 37
  • 38. (1) 事例数 ≪ 素性数の場合 (1/2)• 線形カーネルで十分 – 高次元に写像する必要がない – 線形カーネルの場合,LIBLINEARも利用可能• バイオインフォマティクスのマイクロアレイデータの 多くがこのケース – 例) Leukemia data • #training=38, #test=34, #feature=7,129 38
  • 39. (1) 事例数 ≪ 素性数の場合 (2/2)訓練データとテストデータを結合して交差検定の精度で比較• RBFカーネル• 線形カーネル 39
  • 40. (2) 事例数も素性数も大きい場合• LIBSVMは苦手とするケース• LIBLINEARの利用を考える – 線形カーネルしか利用できないが,LIBSVMとは 最適化手法が異なり,LIBSVMより高速に学習可 能 40
  • 41. LIBSVM vs. LIBLINEAR• 速度と精度の比較 線形カーネル 速度でLIBLINEARがLIBSVMを上回る 精度が微妙に変わるのは最適化手法が異なるため (どちらが良いかはケースバイケース) 41
  • 42. (3) 事例数 ≫ 素性数• 素性数が少なく,事例数が多い場合には非線形カーネ ルを利用して高次元に写像する方がよい• もし線形カーネルを利用する場合には,LIBLINEARの-s 2 オプションを用いると高速に学習が可能 この速度差も最適化手法の違いによるもの 42
  • 43. まとめ• 覚えておくこと – オススメ手順 – 迷ったらRBFカーネルときどき線形カーネル – スケール調整とパラメータ選択は大切• 今回扱わなかった話題 – 素性選択 – 非線形カーネルの選択 43
  • 44. (再掲) オススメ手順 1. データをSVMパッケージの入力形式に変換する2. 簡単なスケール調整を行う3. RBFカーネルの利用を検討する4. 交差検定を用いて最適なパラメータ𝐶と𝛾を発見する5. 最適なパラメータを用いて訓練データに対してモデ ルの生成を行う6. テストデータに対して適用する 44
  • 45. おしまい 45