Weitere ähnliche Inhalte Ähnlich wie SVM実践ガイド (A Practical Guide to Support Vector Classification) (20) Mehr von sleepy_yoshi (20) SVM実践ガイド (A Practical Guide to Support Vector Classification)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
4. 対象読者
• 想定する知識
– 教師あり学習という言葉は知っている
– LIBSVMやLIBLINEARといったツールを使ったことがある/
使うことができる程度の知識
• こんな方にお薦め
– Cパラメータって何?
– SVMを利用しているがパラメータ調整をどうしたらいいの
かよくわからない
– 中身の理解は後回しでいいから良い性能を出したい
– 自己流で使ってきたけれど,一度使い方を復習したい
4
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
10. オススメ手順
1. データをSVMパッケージの入力形式に変換する
2. 簡単なスケール調整を行う
3. RBFカーネルの利用を検討する
4. 交差検定を用いて最適なパラメータ𝐶と𝛾を発見する
5. 最適なパラメータを用いて訓練データに対してモデ
ルの生成を行う
6. テストデータに対して適用する
10
11. オススメ手順を使うと
初心者がやりがち オススメ手順を
な手順を使った 使った場合の
場合の精度 精度
11
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
16. モデル選択
• (1) カーネル関数の選択
• (2) ペナルティパラメータ𝐶の選択
• (3) カーネルパラメータの選択
本当はSVMを使うということもある意味でのモデル選択.
何を人手で決めて,何をデータによって決めるか.
16
17. (1) カーネル関数の選択
• RBFカーネルが最初の選択肢
– 高次元の非線形空間に写像する
• RBFカーネルを使う理由
– 線形カーネルはRBFカーネルの特殊系
• パラメータ𝐶 の線形カーネルモデルに対応するパラメータ
(𝐶, 𝛾)のRBFカーネルと同じ性能を示す
• シグモイドカーネルもRBFカーネルと同じように動作
– 調整すべきカーネルパラメータが1つ
• 多項式カーネルの場合,2つ
– 数値計算上の理由
17
23. Grid-search (グリッド探索)
• パラメータ 𝐶, 𝛾 を網羅的に探索する
– 右下図の赤い点を絨毯爆撃するイメージ
– 経験的に指数増加列がよい
• 例) 𝐶 = 2−5 , 2−3 , … , 215 , 𝛾 = 2−15 , 2−13 , … , 23
• Grid-searchを用いる理由
log 2 𝛾
– 網羅的なので安心
– RBFカーネルの場合,探索パラメー
タが2つのため,コストが高くない
– 並列化が容易
log 2 𝐶
23
32. Vehicle データ (2/2)
• パラメータ選択+スケール調整
デフォルト → スケール調整 → パラメータ選択+スケール調整
2.44% → 12.20% → 87.80%
32
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
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