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. 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)
二乗統計量と 相互情報量は きいモノ 特徴として採用する
モノを として採用する。
* χ二乗統計量と、相互情報量は値の大きいモノを特徴として採用する。
6. Learn : example 1
SVM KNN
1000 sample
決定木 Logistic regression
Naïve Bayes Bayesian Network NB + 決定木
7. Learn : example 2
SVM KNN
1000 sample
決定木 Logistic regression
Naïve Bayes Bayesian Network NB + 決定木
8. Learn : example 3
SVM KNN
352 sample
決定木 Logistic regression
Naïve Bayes Bayesian Network NB + 決定木
9. Learn : example 4
SVM KNN
172 sample
決定木 Logistic regression
Naïve Bayes Bayesian Network NB + 決定木
10. Current my status for text-classification :
・ model : Bag of Words
・ Feature Selection : 相互情報量
・ Learning : bayes系 + Boosting
Next step
Learning → SVM
17. 最大マージン
• 最大マージン条件を施すと分離平面が一意に定まる
マージンd := 境界から最短位置のベクトル同士の間隔
yi = −1
d
d d
d
yi = +1
w⋅x = 0
マージンd が最大の面は一つしかない。
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. 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. Kernel Trick
• 学習データ x を高次元に変換して分離しやすくする。
• 高次元に変換する関数φをカーネル関数という
φ
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. 非線形 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)
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. ・ svm-light , SMO
∂f
= Qα − e = 0
∂α
( 0 ≤ α i ≤ C , ∑ yiα i = 0 )
○ αを2個だけ更新する場合
→ SMO
○ αを複数更新する場合
→ SVM-light
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. Other SVM Solver
n : 学習データ数, d : 特徴数, s : 1データ辺りの平均特徴数
ρ: 収束許容値, λ: svm正規化param
・ 最近はオンライン手法が主流
Pegasos, FOLOS
・ 近似手法(cvm)、線形only(LIBLINEAR)の手法も盛ん。
→ 飛躍的に速度が改善
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. ・ 線形の場合は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. ・ 一般的に非線形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. ・ その他の高速化
多項式カーネル + 転置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
36. Multi Class SVM
・ SVMは2値の判別器だが、工夫次第で多値分類もできる。
・ 代表的なのは下記の4種類
・ One Against All
・ One Against One (voting)
・ Pairwise coupling
・ Listwise
・ 上から二つ目まで紹介
41. One Against One (voting)
・ T個のクラスのデータがある場合に、全てのクラスの組み合
わせ ( = T (T-1) / 2 ) の学習データを作成する。
・ 判別時は fC_i,j (x) ( i ≠j ∈ { 0 … T } ) を計算して、最多勝
クラスを判別クラスとする。
・ クラス数が増えると、激しく遅い。
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
44. Discussion
One Against One ( voting )
・ クラス数が多い場合votingやcouplingが実用的ではなさそう。
One Against All
・ 実用的にはこちら。
・ 特徴が62061もあっても、Expand Quadratic 法 は優位性がある。
(変数選択すれば劇的に速くなりそう。)