データマイニングクラス分類(V) -Fisherの線形判別
SVM
・線形判別の概念・Fisherの線形判別・SVM ・Support Vector Machine
実数値を用いたクラス分類• 今週はk-NN同様実数値をそのまま扱うクラス分類手法を扱う
• 先週までは値をYes, Noのテストにしたクラス分類手法
ID クラス 0,0 0,1 0,2 0,3 … 15,14 15,15
1 2 46 0 22 0 … 138 0
2 1 0 59 13 0 … 13 42
3 8 0 46 56 50 … 42 0
… … … … … … … … …
ID クラス 0,0 0,1 0,2 0,3 … 15,14 15,15
100 ? 59 13 0 28 … 13 42
… … … … … … … … …
Training Data
Test Data
3
SVMのデモ• LIBSVM のページ:http://www.csie.ntu.edu.tw/~cjlin/libsvm/• SVM及びその亜種のライブラリを提供(C++とJava)• ライブラリ=言語などに機能を追加する一連のプログラム(関数,クラス)群.
• SVMの実装研究から始まっている
4
線形分離• 訓練データを下記で表す.xiが属性を表すベクトル,yiがサンプルi
のクラスを表し,1か-1で与えられる.
• 以下を満たすベクトルw, b が存在するとき「線形分離可能」と言う
(xi, yi)(i = 1, . . . , l,xi ∈ Rn, yi ∈ {1,−1})
yi(w · (xi − b)) > 0 (i = 0, . . . , l)
線形分離面(線形分離可能な時, 線形分離する平面)
5
線形分離面を利用した分類器• 線形判別関数w.x+b≧0が存在すると仮定する.
• この判別関数を用いたxの分類器d(x)を次のように定める.
• 実際には,線形分離面は1つとは限らない.• どのような面を取る?
d(x) =�
1, if w · x + b ≥ 0−1, otherwise
6
Fisherの線形判別(1)• 可能性の有る線形分離面の内,次の2つの基準で2つのクラスを最も良く分離する面を選択する(必ずしも線形分離はできない)• 各クラスの中心を線aw+bへ射影した点が離れている• 各点を線aw+bへ射影した時,各クラスで分散が小さい
7
Fisherの線形判別(2)• 各クラスの中心をm+,m-とすると
• クラス間の距離は• この指標の値は大きくしたい
• 各点をw.x+b=0へ射影した場合の級内分散は
• この指標の値は小さくしたい
m+ =
�d(x)=1 x
|{x|d(x) = 1}| ,m− =
�d(x)=−1 x
|{x|d(x) = −1}||(m+ −m−) · w|
�
d(x)=1
((x−m+) · w)2 +�
d(x)=−1
((x−m−) · w)2
8
Fisherの線形判別(3)• 級内分散と級間分散の比を取り、最も大きくなる射影軸を選ぶ• 最大化問題:|w|=1の下で、次のJ(w)の値を最大にするwを求める
• 線形分離面の判別関数はw.x+bとなる。• bは射影軸が求まった後、重み付き中心を計算すれば良い
J(w) =|(m+ −m−) · w|2
�d(x)=1 ((x−m+) · w)2 +
�d(x)=−1 ((x−m−) · w)2
J(w)が最大のwを求めたい.J(w)のwでの微分が0として,解く
9
Fisherの線形判別(4)
10
J(w) =wTSBwwTSWwSB = (m+ −m−)(m+ −m−)T
SW =�
d(x)=1
(x−m+)(x−m+)T +�
d(x)=−1
(x−m−)(x−m−)T
∂J(w)∂w
= 0�
f
g
��=
f �g − fg�
g2
(wTSBw)SWw = (wTSWw)SBw
J(w)を行列で書き直す
微分して0 であれば良い
であることを利用して変形すると
また,2つの方向が並進しているのでw ∝ S−1
W (m+ −m−)SBw � m+ −m−
よって,線形判別面の方向は上記で計算されること,また,方向を知るにはSwの逆行列を計算する事が最も重い計算だと分かる.
SVM (Support Vector Machine)• マージン
• 平行な線形分離面の対の内,最も幅の大きいものの距離• マージンを最大化する線形分離面を取るアプローチ
サポートベクター
マージンの領域
の領域
線形分離面
11
マージンの幅
• マージンの幅ρ(w,b)を以下で定義する
サポートベクター
マージンの領域
の領域
線形分離面
ρ(w, b) = min{xi|yi=1}
xi · w|w| − max
{xi|yi=−1}
xi · w|w|
灰色の丸 灰色の四角12
マージン幅を に調節の領域
の領域
w0 · x + b0 = ±1となるようにw0, b0を取るとρ(w0, b0) = min
{xi|yi=1}
xi · w0
|w0| − max{xi|yi=−1}
xi · w0
|w0|
=1− b0
|w0| −−1− b0
|w0| =2
|w0|13
2/|w0|
w0 · x + b0 = 1
w0 · x + b0 ≥ 1
w0 · x + b0 = 0w0 · x + b0 = −1w0 · x + b0 ≤ −1
w0
マージンの最大化• の最大化と の最小化が同値であることを考えると最小化問題:マージンを最大化する超平面は,制約条件
の下で目的関数 を最小化する で与えられる
• 目的関数が2次式なので,2次計画問題と呼ばれる• 特に,目的関数が凸関数なので,凸2次計画問題• 目的関数が1次式なら,線形計画問題• 2次計画問題を直接解くのは難しいので,この最適化問題を双対問題に変換して解く• 双対問題への変換には,ラグランジュ未定乗数法を使う
yi(w0 · xi + b) ≥ 1 (i = 1, . . . , l)
w0 · w0 w0
14
2/|w0| w0 · w0
双対問題への変換(1)
• 上記のラグランジアンについて,w, b に関して最小化,Λに関して最大化する
Λ = (α1, . . . ,αl) (αi ≥ 0)
定理:マージンを最大化する超平面は,制約条件
の下で目的関数 を最小化する で与えられる
yi(w0 · xi + b) ≥ 1 (i = 1, . . . , l)
w0 · w0 w0
ラグランジュ乗数
L(w, b,Λ) =|w|2
2−
l�
i=1
αi (yi(xi · w + b)− 1)ラグランジアン
式(1)
15
双対問題への変換(2)• w=w0, b=b0において,L(w, b, Λ)が最小であるから
• この式を利用してw=w0, b=b0 におけるラグランジアンを計算すると
• 以上の式では,wとbが最小であることを利用したのでこの式を最大化するΛを求めれば良い.
∂L(w, b,Λ)∂w
����w=w0
= w0 −l�
i=1
αiyixi = 0
∂L(w, b,Λ)∂b
����b=b0
= −l�
i=1
αiyi = 0
w0 =l�
i=1
αiyixi ,l�
i=1
αiyi = 0よって
L(w0, b0,Λ) =12w0 · w0 −
l�
i=1
αi [yi(xi · w0 + b0)− 1]
=l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
式(2)
16
SVMの双対問題• 最大マージンを与えるw, bは,制約条件
のもと,目的関数
を最大化するΛで与えられる• SVMでは,この双対問題を解く• w0の値は,求まったΛから計算する• 式(2)の利用( )
• 式(2)よりαi≠0となる点xi はwに寄与し,KKKTの条件より,この点はサポートベクターとなることがわかる.• KKT条件:
l�
i=1
αiyi = 0, αi ≥ 0
L(w0, b0,Λ) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
式(3)
w0 =�l
i=1 αiyixi
αi [yi(xi · w0 + b0)− 1] = 017
非線形境界• 超平面以外の関数でも分離したい!• 写像を考える• 非線形境界の利用は,アルゴリズムによらない一般的な方法
(A) 元の空間.曲線でクラス分類 (B) 写像後の空間.直線でクラス分類 18
非線形境界(続)• どのような写像を用意すればよい?
• 高次元の空間に写像すれば,分離可能性が高まる• しかし,データの格納だけでも大変になるので,現実的ではない
• 双対問題に着目する• 双対問題の目的関数は下記.
• 点xを高次元な空間Φ(x)に写像すると,目的関数は次になる
• 分離面は,次のようになる
• 高次元のΦでは,内積の計算が重い・・・ので工夫する
L(w0, b0,Λ) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
L(w0, b0,Λ) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjΦ(xi) · Φ(xj)
Φ(x) · w0 + b0 =l�
i=1
αiyiΦ(x) · Φ(xi) + b0 = 0
19
カーネル Kernel• 関数K(x, y) = Φ(x)・Φ(y) をカーネルと呼ぶ• とすると,
• 写像空間(6次元)の内積は,写像前の空間の内積で計算できる• カーネルとして良く使われるもの
• 線形カーネル:• RBFカーネル:• シグモイドカーネル:
• σ,κ,δは変数.• シグモイドカーネルは全ての空間でカーネルとはならない(Mercerの条件)
Φ((x1, x2)) = (x21,√
2x1x2, x22,√
2x1,√
2x2, 1)Φ((x1, x2)) · Φ((y1, y2))
= (x1y1)2 + 2x1y1x2y2 + (x2y2)2 + 2x1y1 + 2x2y2 + 1= (x1y1 + x2y2 + 1)2
= ((x1, x2) · (y1, y2) + 1)2
(x · y + 1)d,exp(−||x− y||2/2σ2),tanh(κx · y − δ)
20
ソフトマージン• 線形分離では厳密に誤分類が無い事を条件にしているが,実際のデータではノイズなどにより,多少誤分類が生じてしまう場合が有る.
• 多少の誤分類を許して,境界線を引きたい• 誤分類にペナルティを用意する
• ξはスラック変数と呼ばれる
yi(w · xi + b) ≥ 1− ξi
where ξi ≥ 0 (i = 1, . . . , l)
最小化する目的関数は
12w · w + C
�l�
i=1
ξi
�
21
双対問題(1)• スラック変数導入前と同様に双対問題を求める
非負のラグランジュ乗数 Λ = (α1, . . . ,αl),R = (r1, . . . , rl)
ラグランジアンL
L(w, ξ, b,Λ,R)
=12w · w + C
l�
i=1
ξi −l�
i=1
αi [yi(xi · w + b)− 1 + ξi]−l�
i=1
riξi
w0, b0, ξ0i w, b, ξiをLを最小化する とすると,以下のKKT条件が成立
∂L(w, ξ, b,Λ,R)∂w
����w=w0
= w0 −l�
i=0
αiyixi = 0
∂L(w, ξ, b,Λ,R)∂b
����b=b0
= −l�
i=0
αiyi = 0
∂L(w, ξ, b,Λ,R)∂ξi
����ξ=ξ0
i
= C − αi − ri = 022
双対問題(2)• 成立した条件をラグランジアンLの式に代入して,変形すると
• この目的関数は,ペナルティーとして導入したCやξに依存せず,ソフトマージン導入前のSVMの目的関数と変化が無い• 制約条件として,αiの上限がCとなる.• Cを無限大に飛ばせば,ソフトマージン無しの状態
• C - αi - ri = 0 で,riが非負であることから,0≦αi≦Cが成立
L(w, ξ, b,Λ,R) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
最大マージンを与えるw,bは制約条件
のもと,目的関数
を最大化するΛで与えられる
L(w, ξ, b,Λ,R) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
l�
i=1
αiyi = 0, 0 ≤ αi ≤ C
23
補足: Karush-Kuhn-Tucker条件(KKT条件)
• 制約付き最小化問題の必要条件• 制約条件gi(x) ≦ 0 (x = (x1, x2, ..., xn)) の下,目的関数f(x)を最小化する問題を考える.
• KKT条件: 上記の問題の最適解は,以下の式を満たす
• f(x)とgi(x)が全て凸の関数である場合は,x, λがKKT条件を満たせば,目的関数f(x)が最小値を取る.
∂f(x)∂xj
+m�
i=1
λi∂gi(x)∂xj
= 0, j = 1, 2, ..., n
λigi(x) = 0, λi ≥ 0, gi(x) ≤ 0, i = 1, 2, ...,m
24
SMO (Sequence Minimal Optimization)• SVMを実際に計算する方法
• 双対問題の解Λ=(α1, α2, ...,αl)を求める• αiの数は点の数と一致
• 6000点のデータなら,6000個• 全てを一度に動かすのは現実的ではない
• 選択した2個(αi, αj)だけを動かし,最適解を求め,その次に別の2個を選択し最適解を求める,というプロセスを繰り返す.• 2個のαiの移動なら,解析的に解が求まる点を利用
• 現在は,SMOを元として様々な改良が行われている
• 以下,目的関数を と表そうLD
LD = L(w, ξ, b,Λ,R) =l�
i=1
αi −12
l�
i=1
l�
j=1
αiαjyiyjxi · xj
25
2変数の解析的更新(1)• のみを更新して,LDを最大化する• 更新前を とし,更新後を とする
α1,α2
αold1 ,αold
2 αnew1 ,αnew
2
Eoldi ≡ wold · xi + bold − yi
η ≡ 2K12 −K11 −K22, where Kij = xi · xj
αnew2 = αold
2 − y2(Eold1 − Eold
2 )η
予測エラー
と定義すると,次式でα2の更新が行える
証明は, から を利用して�li=1 αiyi = 0
LDを変形し,LD’=0 を使う.
因に,式変形をすることで,
γ ≡ α1 + sα2 = Const.
η = 2K12 −K11 −K22 = − | x2 − x1 |2≤ 0 26
2変数の解析的更新(2)• は より,直線上を動く• しかし,前ページの式では,動いた後の が制約条件(0
以上,C未満)を満たしているかは保証されない
• 制約条件も満たしている更新後のα2を とする
が取りうる場所
(A) の時 (B) の時
α1,α2 γ ≡ α1 + sα2 = Const.
αclipped2
αnew1 ,αnew
2
27
2変数の解析的更新(3)y1 = y1(s = 1)
y1 �= y2(s = −1)
L = max(0,αold1 + α
old2 − C), H = min(C,α
old1 + α
old2 )
L = max(0,αold2 − α
old1 ), H = min(C,C + α
old2 − α
old1 )
の時
の時
と定義すると が成立するL ≤ α2 ≤ H
(証明はsとγの値で場合分け.証明の概略図は次ページ)
αclipped2 は,次式で求められる
αclipped2 =
H, if αnew2 ≥ H
αnew2 , if L < α
new2 < H
L, if αnew2 ≤ L
(証明はLDが凸関数であることを利用する. 証明の概略図は次々ページ)
28
• の可動範囲が である証明の図
(A) かつ の時 (B) かつ の時
(C) かつ の時 (D) かつ の時
L ≤ α2 ≤ H
• の値の証明の概略図αclipped2
断面図
の場合
の場合
の場合(B)
(C)
(D)
(A) が取る範囲
: の場所(αnew1 ,αnew
2 )
: の場所(αnew1 ,αclipped
2 )
1. を計算する2. の時,次の手順で更新後のαを計算
(a) を計算(b) を計算(c) を計算
3. の時,LDがα2の1次式になるので,LとHの何れかの位置で,値の大きいほうを選択する.α1の計算は2(c)を利用.
4. 下記で残りのパラメータを更新.α1,2以外は変更しない事に注意• は, として導いた.
2変数の解析的更新手順η = 2K12 −K11 −K22
η < 0
αnew2 = αold
2 + y2(Eold2 −Eold
1 )η
αclipped2
αnew1 = αold
1 − s(αclipped2 − αold
2 )η = 0
wnew = wold + (αnew1 − αold
1 )y1x1 + (αclipped2 − αold
2 )y2x2
Enew(x, y) = Eold(x, y) + y1(αnew1 − αold
1 )x1 · x+y2(αclipped
2 − αold2 )x2 · x− bold + bnew
bnew = bold − Eold(x, y)− y1(αnew1 − αold
1 )x1 · x− y2(αclipped2 − αold
2 )x2 · x
bnew Enew = 0
31
更新するαiの選択• 各ステップで,α1とα2を選択する• α1の選択(外側のループ)
• 全ての点がKKT条件を満たして欲しいので,KKT条件を破る点を選択する
• 始めは全ての点を順に選択してしらべる• 2度目は,サポートベクターとなる点を中心にしらべる
• 0 < αi < C の点を調べる• 計算量削減のため
• α2の選択(内側のループ)• LDが最も大きくなる様に選択をしたい(最急降下する方向)• カーネルなどを考えると,最善の選択をするのは難しいので,|E1-E2|が最も大きくなるように選択する• E1が正なら,E2は最も小さい点,E1が負なら最も大きな点32
SMOを使ったSVMの実装まとめ• 双対問題を解く• 点の個数個存在するラグランジュ乗数を最適化する
• サポートベクターのみがラグランジュ乗数α≠0
• ラグランジュ乗数αを2個のみ変化させる• 2個なら解析的に解が求まる
• 2個のαは可能な限り最急降下する方向を選択する• 実際には|E2-E1|が最大となる様に選択
• ラグランジアンLDが更新されなくなる=KKT条件が全ての点で満たされるまで,続ける
33
クラス分類問題の発展• クラスが3個以上の多クラス(血液型みたいなもの)の場合
• A型とそれ以外,B型とそれ以外,という複数の2クラスを解く問題に分割して,解くことが多い
• クラスが離散値ではなく,連続値(数値)の場合• 回帰問題(regression problem)と呼ばれる• 0~100の値を取る場合,0~10, 10~20,などと区間を分けて解くことが多い
• クラスが1つしか存在しない場合• Webで「化粧品」に関連したページを集めたい.人力で集められるのは,高々100ページ.この100ページを元に「化粧品クラス」のWebページを当てる• 残り全てのページが「化粧品クラスではない」とは言えない
• One Class SVMなどが提案されている 34