Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

3,436 views

Published on

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

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

お披露目会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

×