Your SlideShare is downloading. ×
0
SVMについて



             インキュベーションL)
   発表者 : 服部 (インキュベーション )
                  2010/06/04
Text Classification の仕方
           modelization                          learning
                                        ...
Text model : Bag of words
            ・ 単語の詰まった鞄。(BOW表現ともいう。)
            ・ 単語辞書を使って文章を数値化すること。



      dictionary     Te...
Text model : Feature Selection
   ・ stop word や 意味のない特徴を使わない。
   ・ 方法


          頻度    単語の登場数でソートして、上位、下位数%を切る。



      ...
Learn : Many Method
   ・ 正直たくさんありすぎて良く分からない。
   ・ 学習器の特徴を把握した上で、学習対象ごとに適宜手法を変える。



              Bayes系        K-NN


   ...
Learn : example 1


                     SVM                KNN




1000 sample

                    決定木           Logisti...
Learn : example 2


                     SVM                KNN




1000 sample

                    決定木           Logisti...
Learn : example 3


                     SVM                KNN




 352 sample

                    決定木           Logisti...
Learn : example 4


                     SVM                KNN




 172 sample

                    決定木           Logisti...
Current my status for text-classification :
   ・ model : Bag of Words
   ・ Feature Selection : 相互情報量
   ・ Learning : bayes...
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
What is SVM ?
   ・ Support Vector Machine
   ・ 線形識別器に最大マージン化の概念を組み合わせたもの。
   ・ 高い精度
       - 大半のデータセットで state of art
   ・ ...
線形識別器とは?
 ・ 2値 [ -1 ,1 ] 判別
 ・ 特徴空間に、学習データを2分するような面を引くイメージ
 ・ 面の法線 W を学習する。



                     w
線形識別器の問題
 ・ 解が一意に定まらない。

 ・ アルゴリズムが収束するとは限らない。 (線形分離不可)
    - データ間に明確な境界が引ける場合のみ有効
SVM の 利点
  ・ SVM は線形識別器の問題を全て解決


      - 一意な最適解が求まる
           - 最大マージン分類器


      - 線形分離不可な問題にも対応可
           - ソフトマージン化...
最大マージン
•   最大マージン条件を施すと分離平面が一意に定まる


    マージンd := 境界から最短位置のベクトル同士の間隔

                                           yi = −1
 ...
Condition Of Max Margin
          w
                                                       d = a1 + a2
                   ...
Soft Margin SVM
  ・ 線形分離不可の場合は、大人しくデータの完全分離を諦める。
  ・ はみ出しを許容するが、その総和は極力 小さくしたい。


             ∑ξi
                     i ...
Kernel Trick
  •   学習データ x を高次元に変換して分離しやすくする。
  •   高次元に変換する関数φをカーネル関数という




               φ
Kernel Function
   •    入力ベクトル x を下記のカーネル関数で変換*

       - RBFカーネル                            xi − x j
                    ...
非線形 SVM
  ・ xをカーネル関数φ(x)で高次元化

              1
       arg min w + C ∑ ξ (w ) i
                2
                         ...
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
SVM Solver

・ duality (双対性)
                         1
      min W (w ) W (w ) = w + C ∑ ξ (w ) i
                        ...
・ svm-light , SMO
         ∂f
             = Qα − e = 0
         ∂α
        ( 0 ≤ α i ≤ C , ∑ yiα i = 0 )

        ○ αを2個だ...
SMO Solver
                                  (ms)

○ Platt (1999)
         → Heuristic
○ Keerthi (2000)
         → violati...
Other SVM Solver




   n : 学習データ数, d : 特徴数, s : 1データ辺りの平均特徴数
   ρ: 収束許容値,    λ: svm正規化param

   ・ 最近はオンライン手法が主流
        P...
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
SVM Classifier
    ・ svmは非線形カーネルを使用した場合に非常に遅い

      (ms)




                      Ameba Spma data
                      ...
・ Bayesの計算量は入力ベクトルの単語数に比例

  Bayes

          f (x) = p (c)∑ p ( xi | c)
                                              n

...
・ 線形の場合はBayesと同オーダーの速度になる。


 線形SVM(カーネル無)                                     非線形SVM (RBF)

f ( x) =   ∑ w φ (x )
       ...
・ 一般的に非線形SVMの判別はSVの数に引きずられて遅い
  が、例外もある。

2次の多項式カーネル ( expand quadratic kernel )

 f ( x) =   ∑ w φ (x )
            i∈SV
...
・ その他の高速化

多項式カーネル + 転置Index

  1 事前にSVの転置Index ( I ) を作成しておく。
  2 クエリ x の特徴成分 xi を含むSVの集合をAをIを用いて獲得する。
  3 以下を計算して判別


  ...
・ 各手法の速度比 ( ameba spam data : 判別数 : 1011件 )
    (ms)




・ 精度
              SVM(RBF) : 91.30%
              SVM(Poly) : 89...
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
Multi Class SVM
   ・ SVMは2値の判別器だが、工夫次第で多値分類もできる。

   ・ 代表的なのは下記の4種類

       ・ One Against All
       ・ One Against One (vo...
One Against All
          ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外
           (補集合)で2値化したデータをT個作成しれそれぞれ学習
          ・ 判別時は fC_i (x) ...
One Against All
          ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外
           (補集合)で2値化したデータをT個作成しれそれぞれ学習
          ・ 判別時は fC_i (x) ...
One Against All
          ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外
           (補集合)で2値化したデータをT個作成しれそれぞれ学習
          ・ 判別時は fC_i (x) ...
One Against All
          ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外
           (補集合)で2値化したデータをT個作成しれそれぞれ学習
          ・ 判別時は fC_i (x) ...
One Against One (voting)
  ・ T個のクラスのデータがある場合に、全てのクラスの組み合
    わせ ( = T (T-1) / 2 ) の学習データを作成する。


  ・ 判別時は fC_i,j (x) ( i ≠...
Test
    ・ Data Set : News20
            class       :    20
            learning    :    15,935
            query       :...
・ classifier time




・ precision

                    SVM(RBF) : 79.94%
                    SVM(Poly) : 82.21%
          ...
Discussion
  One Against One ( voting )

  ・ クラス数が多い場合votingやcouplingが実用的ではなさそう。



  One Against All

  ・ 実用的にはこちら。

  ・ ...
Agenda
1 SVMについて

2 SVMの学習方法

3 SVMの判別方法

4 SVMの多値分類

5 まとめ
Conclusion
  ・ SVMは線形識別器を発展させたモノ。
  ・ SVMは精度が高い。
  ・ SVMは学習が遅くてスケールしない。
  ・ 判別も非線形の時は遅い。多値分類は更に遅い。
  ・ 以下の対策を打てばなんとか実用( te...
Upcoming SlideShare
Loading in...5
×

お披露目会05/2010

2,736

Published on

svm presentation announced at Cyberagent INC in Japan on 04 June 2010

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,736
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "お披露目会05/2010"

  1. 1. SVMについて インキュベーションL) 発表者 : 服部 (インキュベーション ) 2010/06/04
  2. 2. Text Classification の仕方 modelization learning C1 tn … t2 x1 , c1, Φ( x | c1,) C2 t1 x2 , c2 Φ( x | c2,) … … … … … … … … … … … … xn, cn Φ( x | cj,) Cn-1 モデル化 学習 判別 Cn 不変特徴空間 判別特徴空 属性集合 (ベクトル空間) (ベクトル空間)
  3. 3. Text model : Bag of words ・ 単語の詰まった鞄。(BOW表現ともいう。) ・ 単語辞書を使って文章を数値化すること。 dictionary Text 1 0: Best Drug …Best… Flower 1 1 0 1 1: Drug 2: Congratuation Text 2 3: Flower Drug…Congratuation… 0 1 1 0 ・ n-gramモデル、構文木モデルもある。
  4. 4. Text model : Feature Selection ・ stop word や 意味のない特徴を使わない。 ・ 方法 頻度 単語の登場数でソートして、上位、下位数%を切る。 χ2 = ∑ (x − x )2 χ二乗統計量 x x p(t , c) 相互情報量 I ( x, c) = ∑∑ p (t , c) log t c P(t ) P(c) 二乗統計量と 相互情報量は きいモノ 特徴として採用する モノを として採用する。 * χ二乗統計量と、相互情報量は値の大きいモノを特徴として採用する。
  5. 5. Learn : Many Method ・ 正直たくさんありすぎて良く分からない。 ・ 学習器の特徴を把握した上で、学習対象ごとに適宜手法を変える。 Bayes系 K-NN 決定木 Neural Network 線形識別器 Max entropy Logstic 回帰 SVM Boosting
  6. 6. Learn : example 1 SVM KNN 1000 sample 決定木 Logistic regression Naïve Bayes Bayesian Network NB + 決定木
  7. 7. Learn : example 2 SVM KNN 1000 sample 決定木 Logistic regression Naïve Bayes Bayesian Network NB + 決定木
  8. 8. Learn : example 3 SVM KNN 352 sample 決定木 Logistic regression Naïve Bayes Bayesian Network NB + 決定木
  9. 9. Learn : example 4 SVM KNN 172 sample 決定木 Logistic regression Naïve Bayes Bayesian Network NB + 決定木
  10. 10. Current my status for text-classification : ・ model : Bag of Words ・ Feature Selection : 相互情報量 ・ Learning : bayes系 + Boosting Next step Learning → SVM
  11. 11. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  12. 12. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  13. 13. What is SVM ? ・ Support Vector Machine ・ 線形識別器に最大マージン化の概念を組み合わせたもの。 ・ 高い精度 - 大半のデータセットで state of art ・ 学習が遅い。スケールしない。 ( 最近は一部する ? ) ・ 判別が遅い場合がある。 ・ 研究が非常に盛ん ・ 各種著名なOSSライブラリ有 - SVM-Light - LIBSVM - SVM-struct - SVM-pref - LIBLINER
  14. 14. 線形識別器とは? ・ 2値 [ -1 ,1 ] 判別 ・ 特徴空間に、学習データを2分するような面を引くイメージ ・ 面の法線 W を学習する。 w
  15. 15. 線形識別器の問題 ・ 解が一意に定まらない。 ・ アルゴリズムが収束するとは限らない。 (線形分離不可) - データ間に明確な境界が引ける場合のみ有効
  16. 16. SVM の 利点 ・ SVM は線形識別器の問題を全て解決 - 一意な最適解が求まる - 最大マージン分類器 - 線形分離不可な問題にも対応可 - ソフトマージン化 - カーネル法 判別能力の高い学習器を実現
  17. 17. 最大マージン • 最大マージン条件を施すと分離平面が一意に定まる マージンd := 境界から最短位置のベクトル同士の間隔 yi = −1 d d d d yi = +1 w⋅x = 0 マージンd が最大の面は一つしかない。
  18. 18. Condition Of Max Margin w d = a1 + a2 yi = +1 x2 w ⋅ (x1 − b) w ⋅ (x 2 − b) b = − a1 x1 w w a2 w ⋅ x1 − w ⋅ x 2 = d w yi = −1 2 = w ⋅ x 2 = −1 w⋅x = 0 w ⋅ x1 = 1 w 2 1 2 arg max arg min w w w w 2 ( st yi w ⋅x i > 1 i = 0L n) ( st yi w ⋅x i > 1 i = 0L n)
  19. 19. Soft Margin SVM ・ 線形分離不可の場合は、大人しくデータの完全分離を諦める。 ・ はみ出しを許容するが、その総和は極力 小さくしたい。 ∑ξi i ( ξi ≥ 0 ) ・ 最大マージン分類器の変更 1 1 arg min w + C ∑ ξ (w ) i 2 2 arg min w w 2 w 2 i ( st yi w ⋅x i > 1 i = 0 L n) ( st yi w ⋅x i > 1 − ξ i , ξ i > 0, i = 0L n) C : ソフトマージンパラメータ
  20. 20. Kernel Trick • 学習データ x を高次元に変換して分離しやすくする。 • 高次元に変換する関数φをカーネル関数という φ
  21. 21. Kernel Function • 入力ベクトル x を下記のカーネル関数で変換* - RBFカーネル xi − x j 2 − φ ( xi ) ⋅ φ (x j ) = e σ2 - 多項式カーネル φ ( x i ) ⋅ φ ( x j ) = (o + g x i ⋅ x j ) d - sigmoid カーネル φ ( x i ) ⋅ φ ( x j ) = tanh(a x i ⋅ x j − b) *実際は変換はせず、内積の変換だけする。
  22. 22. 非線形 SVM ・ xをカーネル関数φ(x)で高次元化 1 arg min w + C ∑ ξ (w ) i 2 C : soft margin w 2 i parameter ( st yi w ⋅x i > 1 − ξ i , ξ i > 0, i = 0L n) 非線形SVM 1 arg min w + C ∑ ξ (w ) i 2 w 2 i ( st yi w ⋅ ϕ (x i ) > 1 − ξ i , ξ i > 0, i = 0 L n)
  23. 23. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  24. 24. SVM Solver ・ duality (双対性) 1 min W (w ) W (w ) = w + C ∑ ξ (w ) i 2 w 2 i ( st ∀i yi w ⋅ ϕ (x i ) > 1 − ξ i , ξ i > 0 ) 1 T min f (α ) f (α ) = α Qα − eT α α 2 ( st ∀i 0 ≤ α i ≤ C , ∑ y i α i = 0 ) Q ij = yi y jφ ( xi )φ ( x j ) , ei = 1
  25. 25. ・ svm-light , SMO ∂f = Qα − e = 0 ∂α ( 0 ≤ α i ≤ C , ∑ yiα i = 0 ) ○ αを2個だけ更新する場合 → SMO ○ αを複数更新する場合 → SVM-light
  26. 26. SMO Solver (ms) ○ Platt (1999) → Heuristic ○ Keerthi (2000) → violating pair ○ Chen and Lin (2005) → violating pair (second order) → shrinking ・ SMOの計算オーダー ( n2d ) Training binary spam data if n=120,000 d = 10000 ? at ameba (spam:3061 normal:1954) → 30 * 30 * 5 * 3(sec) ≒ 225 (min) (learn:4004 query:1011) feature ~2000 ・ 大規模でなければできなくもない?
  27. 27. Other SVM Solver n : 学習データ数, d : 特徴数, s : 1データ辺りの平均特徴数 ρ: 収束許容値, λ: svm正規化param ・ 最近はオンライン手法が主流 Pegasos, FOLOS ・ 近似手法(cvm)、線形only(LIBLINEAR)の手法も盛ん。 → 飛躍的に速度が改善
  28. 28. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  29. 29. SVM Classifier ・ svmは非線形カーネルを使用した場合に非常に遅い (ms) Ameba Spma data 1011件を判定 Svm : RBF カーネルを使用
  30. 30. ・ Bayesの計算量は入力ベクトルの単語数に比例 Bayes f (x) = p (c)∑ p ( xi | c) n i∈x  1 ( if f (x | c) > f (x | c ) ) S ( x) =   −1 ( else ) ・ SVMの計算量はSV数に比例 (SV数はデータが総数に概ね比例) SVM f ( x) = ∑ w φ (x ) i∈SV i i • φ ( x)  1 (if f (x) > 0) S ( x) =   − 1 (if f (x) <= 0)
  31. 31. ・ 線形の場合はBayesと同オーダーの速度になる。 線形SVM(カーネル無) 非線形SVM (RBF) f ( x) = ∑ w φ (x ) i∈SV i i • φ ( x) f ( x) = ∑ w φ (x ) i∈SV i i • φ ( x) ∑ wi xi • x 2 = − xi − x i∈SV = ∑ wi e σ2 ∑∑ wi xi [s] x[s] i∈SV = 2 2 x i + x − 2 x i ⋅x i∈SV s∈S −   = ∑ wi e σ2 = ∑  ∑ wi x i [ s]  x[ s ] i∈SV 2 2 s∈S  i∈SV  ∑ x i [ s ] + ∑ x[ s ] −2 ∑ xi [ s ]⋅x[ s ] s∈S s∈S s∈S − = ∑we σ 2 事前計算可 大半はゼロ i∈SV i 事前計算不可
  32. 32. ・ 一般的に非線形SVMの判別はSVの数に引きずられて遅い が、例外もある。 2次の多項式カーネル ( expand quadratic kernel ) f ( x) = ∑ w φ (x ) i∈SV i i • φ ( x) = ∑ wi (o + x i • x) 2 i∈SV     = ∑ i∈SV wi o 2 + 2 o∑  ∑ wi x i [ s ]  x[ s ] + ∑  ∑ wi x i [ s ]2  x[ s]2 s∈S  i∈SV  s∈S  i∈SV  k −1 k   +2 ∑∑  ∑ (wi x i [ s ] x i [h])  x[ s ] x[h] h = s +1 s = 0  i∈SV  * 事前計算可能 → 計算時間がSVの数に比例しない (入力ベクトルの特徴数の2乗に比例) *特徴数の2乗を記憶する必要有 要変数選択
  33. 33. ・ その他の高速化 多項式カーネル + 転置Index 1 事前にSVの転置Index ( I ) を作成しておく。 2 クエリ x の特徴成分 xi を含むSVの集合をAをIを用いて獲得する。 3 以下を計算して判別 f ( x) = ∑ w φ (x ) i∈SV i i • φ ( x) = ∑ wi (o + x i • x) 2 i∈SV = ∑ wi o 2 + ∑ wi (o + x i • x) 2 i∈SV − A i∈A
  34. 34. ・ 各手法の速度比 ( ameba spam data : 判別数 : 1011件 ) (ms) ・ 精度 SVM(RBF) : 91.30% SVM(Poly) : 89.81% NaiveBayes : 85.36% 速度重視なら 2次多項式カーネル(expand quadratic )が良い。
  35. 35. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  36. 36. Multi Class SVM ・ SVMは2値の判別器だが、工夫次第で多値分類もできる。 ・ 代表的なのは下記の4種類 ・ One Against All ・ One Against One (voting) ・ Pairwise coupling ・ Listwise ・ 上から二つ目まで紹介
  37. 37. One Against All ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外 (補集合)で2値化したデータをT個作成しれそれぞれ学習 ・ 判別時は fC_i (x) ( c_i ( i= { 0 … T} ) ) を計算して、最もス コアが高いクラスに判別する。 1 D1(svm) D1 D2 D3 D4 -1 C_1 C_2
  38. 38. One Against All ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外 (補集合)で2値化したデータをT個作成しれそれぞれ学習 ・ 判別時は fC_i (x) ( c_i ( i= { 0 … T} ) ) を計算して、最もス コアが高いクラスに判別する。 1 D1 D2(svm) D2 D3 D4 -1 C_1 C_2
  39. 39. One Against All ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外 (補集合)で2値化したデータをT個作成しれそれぞれ学習 ・ 判別時は fC_i (x) ( c_i ( i= { 0 … T} ) ) を計算して、最もス コアが高いクラスに判別する。 1 D1 D2 D3(svm) D3 D4 -1 C_1 C_2
  40. 40. One Against All ・ T個のクラスのデータがある場合に、あるクラスAとそれ以外 (補集合)で2値化したデータをT個作成しれそれぞれ学習 ・ 判別時は fC_i (x) ( c_i ( i= { 0 … T} ) ) を計算して、最もス コアが高いクラスに判別する。 -1 D1 D2 D3 D4(svm) D4 1 C_1 C_2
  41. 41. One Against One (voting) ・ T個のクラスのデータがある場合に、全てのクラスの組み合 わせ ( = T (T-1) / 2 ) の学習データを作成する。 ・ 判別時は fC_i,j (x) ( i ≠j ∈ { 0 … T } ) を計算して、最多勝 クラスを判別クラスとする。 ・ クラス数が増えると、激しく遅い。
  42. 42. Test ・ Data Set : News20 class : 20 learning : 15,935 query : 3993 feature : 62061 ( average per data 75 ) ・ learning time ( by Chen And Lin SMO ) (ms) (ms) N/A N/A
  43. 43. ・ classifier time ・ precision SVM(RBF) : 79.94% SVM(Poly) : 82.21% NaiveBayes : 63.83%
  44. 44. Discussion One Against One ( voting ) ・ クラス数が多い場合votingやcouplingが実用的ではなさそう。 One Against All ・ 実用的にはこちら。 ・ 特徴が62061もあっても、Expand Quadratic 法 は優位性がある。 (変数選択すれば劇的に速くなりそう。)
  45. 45. Agenda 1 SVMについて 2 SVMの学習方法 3 SVMの判別方法 4 SVMの多値分類 5 まとめ
  46. 46. Conclusion ・ SVMは線形識別器を発展させたモノ。 ・ SVMは精度が高い。 ・ SVMは学習が遅くてスケールしない。 ・ 判別も非線形の時は遅い。多値分類は更に遅い。 ・ 以下の対策を打てばなんとか実用( text multi-classification )の 範囲内で利用可能だと思われる。(私見) モデル化 → ・ 変数選択 学習 → ・ オンライン実装 - Pegasos, FLOS ・ カーネル - 2次の多項式カーネル 判別 → ・ expand quadratic kernel 多値 → ・ One Against All
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×