コンピュータ先端ガイド2巻3章
他:SVM(Support Vector Machine)
B4M1勉強会
2017/05/11 B4 金子 真也
1
自己紹介
• 名前:金子 真也(かねこ まさや)
• Twitter:@syinari0123
• 出身:巣鴨高校
• 趣味:お散歩, 美味しいもの・美術館巡りなど
• やる気だけはなくさないように生きてます
2
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
3
発表を始める前に
• 今回の発表は基本的にデータ解析アルゴリズム
の話なので数式がかなり多いです…
• できる限り抑えるようにしましたが, せっかくの
勉強会なので「ある程度の数式は仕方ない
ですかね…」としてスライドを作っています
• すみません…
4
目次
• パターン識別 ←
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
5
パターン識別とは
与えられた入力データがどのクラスに属するか
を教師あり学習で識別する問題
→正解クラスを適切に出力できる𝑓𝑓 𝒙𝒙𝒊𝒊 を求める
特徴ベクトル
𝒙𝒙𝒊𝒊
識別関数
𝑓𝑓(𝒙𝒙𝒊𝒊)
正解クラス
𝑦𝑦𝒊𝒊
ネコである
(クラス1 𝜔𝜔1)
ネコじゃない
(クラス2 𝜔𝜔2)
𝑓𝑓(𝒙𝒙𝒊𝒊) ≥ 𝟎𝟎
𝑓𝑓 𝒙𝒙𝒊𝒊 ≤ 𝟎𝟎
入力画像
𝒙𝒙𝒊𝒊 =
𝑥𝑥𝑖𝑖1
⋮
𝑥𝑥𝑖𝑖 𝑑𝑑
6
線形パターン識別
識別関数𝑓𝑓 𝒙𝒙𝑖𝑖 として以下のように定める
𝑓𝑓 𝒙𝒙𝑖𝑖 = 𝒘𝒘𝑡𝑡 𝒙𝒙𝑖𝑖 + 𝑤𝑤0 �
≥ 0 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔1)
≤ 0 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔2)
→適切に𝒙𝒙𝑖𝑖を識別できるような𝒘𝒘, 𝑤𝑤0を求める
(空間を適切に分断する超平面を求める)
http://www.neuro.sfc.keio.ac.jp/~masato/study/SVM/SVM_1.htm
7
目次
• パターン識別
• 線形から非線形への拡張 ←
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
8
線形から非線形への拡張(1)
線形パターン識別には限界がある
線形分離可能な分布 線形分離不可能な分布
http://pika-shi.hatenablog.com/entries/2011/11/11
9
線形から非線形への拡張(2)
非線形関数Φによりデータの非線形変換
𝜙𝜙: 𝒙𝒙 = 𝑥𝑥1, . . , 𝑥𝑥𝑑𝑑
𝑡𝑡 → 𝜙𝜙1 𝒙𝒙 , … , 𝜙𝜙𝐷𝐷 𝒙𝒙
→線形分離可能な分布をするような空間に変換
𝑓𝑓 𝒙𝒙𝑖𝑖 = 𝒘𝒘𝑡𝑡 𝜙𝜙(𝒙𝒙𝑖𝑖) + 𝑤𝑤0 �
≥ 0 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔1)
≤ 0 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔2)
https://www1.doshisha.ac.jp/~mjin/R/31/31.html
10
線形から非線形への拡張(3)
非線形関数を利用するにあたって注意点あり
1. 高次元空間への変換で分離可能性は高くなるが
次元の呪いの発生(過学習)
2. 適切な非線形変換Φを決定する手段がない
→カーネル関数を使うといい感じに
(カーネル法)
11
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数 ←
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
12
カーネル関数(1)
ある関数𝜙𝜙 𝒙𝒙 (𝑹𝑹𝑑𝑑 → 𝑹𝑹𝐷𝐷)があり,
∀𝒙𝒙, 𝒚𝒚 ∈ 𝑹𝑹𝑑𝑑に対して,
𝑘𝑘 𝑥𝑥, 𝑦𝑦 = 𝜙𝜙 𝒙𝒙 𝑡𝑡 𝜙𝜙(𝒚𝒚)
が成立する関数Φが存在する時, 関数kを
カーネル関数という.
※カーネル関数が存在するための必要十分条件と
してはMercer’s theoremが存在(省略)
13
カーネル関数(2)
カーネル関数の例
• 線形カーネル 𝑘𝑘 𝒙𝒙, 𝒚𝒚 = 𝒙𝒙𝑡𝑡 𝒚𝒚
• 多項式カーネル 𝑘𝑘 𝒙𝒙, 𝒚𝒚 = 𝒙𝒙𝑡𝑡
𝒚𝒚 + 𝑐𝑐 𝑝𝑝
• ガウスカーネル
𝑘𝑘 𝒙𝒙, 𝒚𝒚 = exp(−
𝒙𝒙 − 𝒚𝒚
2𝜎𝜎2
)
• RBFカーネル
𝑘𝑘 𝒙𝒙, 𝒚𝒚 = exp(−𝛾𝛾 𝒙𝒙 − 𝒚𝒚 2)
14
カーネル関数(3)
カーネル関数を使うとメリットがある
1. D次元ベクトルの内積がd次元ベクトルの関数
で表される(𝐷𝐷 ≫ 𝑑𝑑の時,計算量の削減に)
→カーネルトリック
2. 具体的な𝜙𝜙 𝒙𝒙 の形を与える必要がない
カーネル法はSVMと相性がかなり良い
15
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine) ←
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
16
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM ←
– 非線形SVM
• SVMの多クラス分類
• SVMの応用
17
線形SVM
• 基本的な考えとしてはパターン識別と同じ
• クラスを分類する超平面の候補のうち, 以下の
図で点線間の距離を最大にする境界を求める
(マージン最大化)
最先端ガイド2 3章 図3.8右
18
マージン最大化(1)
分類境界から最も近くにある𝒙𝒙𝑖𝑖との距離の最大化
max
𝒘𝒘,𝑤𝑤0
min
𝑖𝑖
𝒘𝒘𝑡𝑡
𝒙𝒙𝑖𝑖 + 𝑤𝑤0
𝒘𝒘
制約条件として
𝑓𝑓 𝒙𝒙𝑖𝑖 = 𝒘𝒘𝑡𝑡
𝒙𝒙𝑖𝑖 + 𝑤𝑤0 ≥ 1 ⋯ (∗)
を入れることで上の式は以下に帰着できる
max
𝒘𝒘
1
𝒘𝒘
= min
𝒘𝒘
𝒘𝒘
19
マージン最大化(2)
マージン最大化の直感的解釈
min
𝒘𝒘,𝑤𝑤0
𝒘𝒘 = max
𝒘𝒘,𝑤𝑤0
2
𝒘𝒘
𝑠𝑠. 𝑡𝑡. 𝑓𝑓 𝒙𝒙𝑖𝑖 ≥ 1
2
𝑤𝑤 𝑓𝑓(𝒙𝒙𝑖𝑖)
𝑤𝑤
=
𝒘𝒘𝑡𝑡 𝒙𝒙 + 𝑤𝑤0
𝑤𝑤
𝑓𝑓 𝒙𝒙 = 𝒘𝒘𝑡𝑡 𝒙𝒙 + 𝑤𝑤0
𝑓𝑓 𝒙𝒙 = 1
𝑓𝑓 𝒙𝒙 = −1 𝑓𝑓 𝒙𝒙 = 0
𝒙𝒙𝑖𝑖|𝑓𝑓 𝒙𝒙 | ≥ 1
20
ハードマージン
制約式 ∗ は次のように書き換えられる
𝑓𝑓 𝒙𝒙𝑖𝑖 = 𝒘𝒘𝑡𝑡
𝒙𝒙𝑖𝑖 + 𝑤𝑤0 �
≥ 1 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔1)
≤ −1 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔2)
制約式 ∗ 条件下で以下を求める問題に帰着できる
min
𝒘𝒘,𝑤𝑤0
𝒘𝒘
→線形分離不可能な場合に解が存在しない
𝑓𝑓 𝒙𝒙 ≥ 1
𝑓𝑓 𝒙𝒙 ≤ −1 𝑓𝑓 𝒙𝒙 = 0
21
ソフトマージン
分離の誤りを少し許すために制約式 ∗ に
誤差項𝜉𝜉𝑖𝑖(≥ 0)を導入
𝑓𝑓 𝒙𝒙𝑖𝑖 = 𝒘𝒘𝑡𝑡 𝒙𝒙𝑖𝑖 + 𝑤𝑤0 �
≥ 1 − 𝜉𝜉𝑖𝑖 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔1)
≤ −1 + 𝜉𝜉𝑖𝑖(𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔2)
⋯ (∗∗)
𝜉𝜉𝑖𝑖
𝜉𝜉𝑖𝑖−1
𝜉𝜉𝑖𝑖+1
𝑓𝑓 𝒙𝒙 = 1
𝑓𝑓 𝒙𝒙 = −1
22
最適化問題への帰着(1)
𝒙𝒙𝑖𝑖の属するクラスの変数(正解クラス)を
以下のように定める
𝒚𝒚𝑖𝑖 = �
1 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔1)
−1 (𝒙𝒙𝑖𝑖 ∈ 𝜔𝜔2)
𝒙𝒙𝑖𝑖のクラス属性も組み込んだ制約式 ∗∗ は次になる
𝒚𝒚𝑖𝑖 𝒘𝒘𝑡𝑡
𝒙𝒙𝑖𝑖 + 𝑤𝑤0 ≥ 1 − 𝜉𝜉𝑖𝑖
𝜉𝜉𝑖𝑖 ≥ 0
𝑦𝑦𝑖𝑖 = 1
𝑦𝑦𝑖𝑖 = −1
𝑓𝑓 𝒙𝒙 ≥ 1 − 𝜉𝜉𝑖𝑖
𝑓𝑓 𝒙𝒙 ≤ −1 + 𝜉𝜉𝑖𝑖
23
最適化問題への帰着(2)
最終的に線形SVM(ソフトマージン)の最適化は
以下のような最小化問題に帰着できる
• 第一項:マージン(2/ 𝒘𝒘 )の最大化
• 第二項:誤差項(𝜉𝜉𝑖𝑖)の最小化(𝐶𝐶は正則化係数)
min
𝒘𝒘,𝑤𝑤0,𝜉𝜉𝑖𝑖
1
2
𝒘𝒘 2
+ 𝐶𝐶 � 𝜉𝜉𝑖𝑖
𝑛𝑛
𝑖𝑖=0
𝑠𝑠. 𝑡𝑡. ∀𝑖𝑖 𝒚𝒚𝑖𝑖 𝒘𝒘𝑡𝑡 𝒙𝒙𝑖𝑖 + 𝑤𝑤0 ≥ 1 − 𝜉𝜉𝑖𝑖
∀𝑖𝑖 𝜉𝜉𝑖𝑖 ≥ 0
24
ソフトマージンの実例
パラメータCの調節により誤りの許容度を
変化させることができる
𝐶𝐶 = 100 の時 𝐶𝐶 = 0.1 の時
MLP サポートベクターマシン 第一章 図1.5
25
線形SVMの双対問題
ラグランジュ関数を用いることで最適化問題から
以下の双対問題を導ける (𝜶𝜶は双対変数)
• SVMの場合には強双対性が成立するために上式のように
書き換えられる(省略)
• カールシュ・クーン・タッカー条件(KKT条件)
max
𝜶𝜶
(−
1
2
� 𝛼𝛼𝑖𝑖 𝛼𝛼𝑗𝑗 𝑦𝑦𝑖𝑖 𝑦𝑦𝑗𝑗 𝒙𝒙𝑖𝑖
𝑡𝑡
𝒙𝒙𝑗𝑗
𝑖𝑖,𝑗𝑗
+ � 𝛼𝛼𝑖𝑖
𝑖𝑖
)
𝑠𝑠. 𝑡𝑡. � 𝛼𝛼𝑖𝑖 𝑦𝑦𝑖𝑖 = 0
𝑖𝑖
∀𝑖𝑖 0 ≤ 𝛼𝛼𝑖𝑖 ≤ 𝐶𝐶
26
双対問題の利点
• 非線形SVMへ拡張する際にはカーネルトリック
をそのまま適用できる
• 内積がわかっていればデータ𝒙𝒙𝑖𝑖そのものの保持
の必要がない(メモリの節約)
– データ行列 𝒙𝒙1, … , 𝒙𝒙𝑛𝑛
𝑡𝑡
の要素𝑛𝑛𝑛𝑛
– 内積計算に必要なデータ量𝑛𝑛 𝑛𝑛 − 1 /2
• 双対変数𝜶𝜶の一部が0要素を多く持つ場合があり,
計算時間の短縮化に
(マージン外領域にデータが多い場合)
27
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM ←
• SVMの多クラス分類
• SVMの応用
28
非線形SVM
• 線形な分離には限界がある
• 非線形関数Φを使ってデータを線形分離可能な
分布をするような空間に変換
• 双対問題に対して非線形変換を行うことで
カーネルトリックを利用できる
https://www1.doshisha.ac.jp/~mjin/R/31/31.html
29
非線形SVMの最適問題(1)
入力データを特徴空間へ写像する関数Φを用いて
𝑓𝑓 𝒙𝒙 = 𝒘𝒘𝑡𝑡
𝜙𝜙(𝒙𝒙) + 𝑤𝑤0
を識別関数とすればよい. 双対問題に代入すると,
max
𝜶𝜶
(−
1
2
� 𝛼𝛼𝑖𝑖 𝛼𝛼𝑗𝑗 𝑦𝑦𝑖𝑖 𝑦𝑦𝑗𝑗 𝜙𝜙 𝒙𝒙𝑖𝑖
𝑡𝑡
𝜙𝜙(𝒙𝒙𝑗𝑗)
𝑖𝑖,𝑗𝑗
+ � 𝛼𝛼𝑖𝑖
𝑖𝑖
)
𝑠𝑠. 𝑡𝑡. � 𝛼𝛼𝑖𝑖 𝑦𝑦𝑖𝑖 = 0
𝑖𝑖
∀𝑖𝑖 0 ≤ 𝛼𝛼𝑖𝑖 ≤ 𝐶𝐶
30
非線形SVMの最適問題(2)
前式をカーネル関数で書き直すと (KKT条件より)
𝑓𝑓 𝒙𝒙 = � 𝛼𝛼𝑖𝑖 𝑦𝑦𝑖𝑖 𝐾𝐾(𝒙𝒙𝑖𝑖, 𝒙𝒙)
𝑖𝑖
+ 𝑤𝑤0
双対問題は以下のようになる.
max
𝜶𝜶
(−
1
2
� 𝛼𝛼𝑖𝑖 𝛼𝛼𝑗𝑗 𝑦𝑦𝑖𝑖 𝑦𝑦𝑗𝑗 𝐾𝐾(𝒙𝒙𝑖𝑖, 𝒙𝒙𝑗𝑗)
𝑖𝑖,𝑗𝑗
+ � 𝛼𝛼𝑖𝑖
𝑖𝑖
)
𝑠𝑠. 𝑡𝑡. � 𝛼𝛼𝑖𝑖 𝑦𝑦𝑖𝑖 = 0
𝑖𝑖
∀𝑖𝑖 0 ≤ 𝛼𝛼𝑖𝑖 ≤ 𝐶𝐶
31
非線形SVMの実例(1)
ガウスカーネルを利用した場合
Cが小さい時 Cが大きい時
http://d.hatena.ne.jp/hase1031/20111218/1324194721
32
非線形SVMの実例(2)
ガウスカーネルを利用した場合
σが小さい時 σが大きい時
http://aidiary.hatenablog.com/entry/20100503/1272889097
33
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類 ←
• SVMの応用
34
SVMの多クラス分類(1)
SVMでは2クラス分類しかできない
→多クラス分類を行うためには工夫が必要
http://opencv.jp/sample/misc.html
35
SVMの多クラス分類(2)
工夫の方向性として次のようなものが考えられる
• 複数の2クラス分類器の組み合わせ
– 1対他方式
– 1対1方式
– 誤り訂正出力符号
• SVMの定式化の拡張
36
SVMの多クラス分類の目次
• 複数の2クラス分類器の組み合わせ ←
– 1対他方式
– 1対1方式
– 誤り訂正出力符号
• SVMの定式化の拡張
37
SVMの多クラス分類の目次
• 複数の2クラス分類器の組み合わせ
– 1対他方式 ←
– 1対1方式
– 誤り訂正出力符号
• SVMの定式化の拡張
38
1対他方式(1)
• 最も単純な方式
• 1クラスと残りのクラスに分類
• k番目のクラスの識別関数𝑓𝑓 𝑘𝑘
𝒙𝒙 の最大値を選ぶ
ことで属するクラスの決定
argmax
𝑘𝑘
𝑓𝑓 𝑘𝑘(𝒙𝒙)
クラス
1
クラス
2
クラス
3
http://qiita.com/pika_shi/items/5e59bcf69e85fdd9edb2
39
1対他方式(2)
特徴として以下のようなことが挙げられる
• 実装が容易
• 識別関数𝑓𝑓 𝑘𝑘 𝒙𝒙 の値を比較することが適切か不明
↑異なるSVMを利用しているから
40
SVMの多クラス分類の目次
• 複数の2クラス分類器の組み合わせ
– 1対他方式
– 1対1方式 ←
– 誤り訂正出力符号
• SVMの定式化の拡張
41
1対1方式(1)
• 全体から2つのクラスのペアを作り分類
– nクラスに対して 𝑛𝑛 𝐶𝐶2個のSVM
• 全ての組み合わせに対して多数決を行う
𝑓𝑓𝑖𝑖𝑖𝑖 𝒙𝒙 �
> 0 𝑖𝑖に投票
< 0 𝑗𝑗に投票
3クラス分類問題において, あるデータ𝒙𝒙が…
𝑓𝑓12
𝒙𝒙 > 0 クラス1に投票
𝑓𝑓23 𝒙𝒙 < 0 クラス3に投票
𝑓𝑓13
𝒙𝒙 > 0 クラス1に投票
→ データ𝒙𝒙はクラス1に分類(2票獲得)
42
1対1方式(2)
特徴として以下のようなことが挙げられる
• 訓練時には毎回対象の2クラス分のデータしか
用いないのでSVMの学習コストが小さい
• 使うSVMの個数が多い(𝑂𝑂(𝑛𝑛2))
• 単純な多数決以外にも…
– 非循環有効グラフによる方法
– ペアワイズカップリング法
43
非循環有効グラフによる方法
逐次的に2クラス分類を行っていくことで
分類回数を減らす
http://www.kri.sfc.keio.ac.jp/report/mori/2004/c-118/
44
ペアワイズカップリング法(1)
確率的な解釈で1対1分類結果𝑓𝑓𝑖𝑖𝑖𝑖 𝒙𝒙 から
多クラス分類確率𝑝𝑝𝑖𝑖 𝒙𝒙 の推定
1対1での分類確率 𝑝𝑝𝑖𝑖𝑖𝑖 𝒙𝒙
全体からの分類確率 𝑝𝑝𝑖𝑖 𝒙𝒙
識別関数 𝑓𝑓𝑖𝑖𝑖𝑖
𝒙𝒙
↓
𝑝𝑝 𝑌𝑌 = 𝑖𝑖 𝑌𝑌 ∈ 𝑖𝑖, 𝑗𝑗 , 𝑋𝑋 = 𝒙𝒙
↓
𝑝𝑝(𝑌𝑌 = 𝑖𝑖|𝑋𝑋 = 𝒙𝒙)
SVMでの識別境界
(1)モデル化
(2)推定
45
ペアワイズカップリング法(2)
1. 識別関数𝑓𝑓𝑖𝑖𝑖𝑖 𝒙𝒙 から分類確率𝑝𝑝̂𝑖𝑖𝑖𝑖 𝒙𝒙 のモデル化
𝑝𝑝̂𝑖𝑖𝑖𝑖 𝒙𝒙 =
1
1 + exp(−𝐴𝐴𝑓𝑓𝑖𝑖𝑖𝑖 𝒙𝒙 + 𝐵𝐵)
→最尤推定法によりA,Bを推定
2. モデル化した𝑝𝑝̂𝑖𝑖𝑖𝑖 𝒙𝒙 と実際の𝑝𝑝𝑖𝑖𝑖𝑖 𝒙𝒙 が近くなるよ
うに𝑝𝑝𝑖𝑖
𝒙𝒙 の推定
min
𝑝𝑝𝑖𝑖
𝑖𝑖∈[𝑐𝑐]
� 𝑛𝑛𝑖𝑖 + 𝑛𝑛𝑗𝑗 𝐾𝐾𝐾𝐾 𝑝𝑝̂𝑖𝑖𝑖𝑖 ∥ 𝑝𝑝𝑖𝑖𝑖𝑖
𝑖𝑖≠𝑗𝑗
→ 𝑝𝑝𝑖𝑖𝑖𝑖 = 𝑝𝑝𝑖𝑖/(𝑝𝑝𝑖𝑖 + 𝑝𝑝𝑗𝑗)より 𝑝𝑝𝑖𝑖
𝑖𝑖∈[𝑐𝑐]
に関して最小化
46
SVMの多クラス分類の目次
• 複数の2クラス分類器の組み合わせ
– 1対他方式
– 1対1方式
– 誤り訂正出力符号 ←
• SVMの定式化の拡張
47
誤り訂正出力符号(1)
各クラスをある特徴に基づいて1,-1を割り当てて
符号語を作成(以下は符号長 m=7)
MLP サポートベクターマシン 第二章 表2.2
48
誤り訂正出力符号(2)
• m個の符号の列それぞれで識別関数𝑓𝑓𝑗𝑗 𝒙𝒙 を学習
• それぞれの符号とのハミング距離を計算し, 最も
距離が近いクラスへと分類
識別関数
𝑓𝑓𝑗𝑗 𝒙𝒙𝑖𝑖
(𝑗𝑗 = 1 … 𝑚𝑚)
-1
1
1
-1
-1
1
-1
-1
1
1
-1
-1
1
-1
正解符号語
𝑦𝑦 = 2
距離0
特徴ベクトル
𝒙𝒙𝒊𝒊
入力画像
𝒙𝒙𝒊𝒊 =
𝑥𝑥𝑖𝑖1
⋮
𝑥𝑥𝑖𝑖 𝑑𝑑
符号語
49
SVMの多クラス分類の目次
• 複数の2クラス分類器の組み合わせ
– 1対他方式
– 1対1方式
– 誤り訂正出力符号
• SVMの定式化の拡張 ←
50
SVMの定式化の拡張(多クラス)
• SVMの識別関数を以下のように拡張
(𝒘𝒘𝑘𝑘
, 𝑤𝑤0
𝑘𝑘
は各クラス𝑘𝑘(∈ [𝑐𝑐])に対応するパラメータ)
𝑔𝑔 𝒙𝒙 = argmax
𝑘𝑘
𝒘𝒘𝑘𝑘 𝑡𝑡
𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑘𝑘
• あるデータ(𝒙𝒙𝑖𝑖, 𝑦𝑦𝑖𝑖)を分類するために必要な条件
𝒘𝒘𝑦𝑦𝑖𝑖 𝑡𝑡
𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑦𝑦𝑖𝑖
≥ 𝒘𝒘𝑘𝑘 𝑡𝑡
𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑘𝑘
+ 1 (𝑘𝑘 ≠ 𝑦𝑦𝑖𝑖)
クラス𝑦𝑦𝑖𝑖の時の
識別関数の値
クラス𝑦𝑦𝑖𝑖以外の時の
識別関数の値
+1(ハードマージン)
→ +1 − 𝜉𝜉𝑖𝑖
𝑘𝑘
(ソフトマージン)
51
多クラスSVMの最適化問題
2クラス分類SVMの時と同様に最適化問題に帰着
→SVMの時と同様に双対問題を考えられる
min
𝒘𝒘𝑘𝑘,𝑤𝑤0
𝑘𝑘,𝜉𝜉𝑖𝑖
𝑘𝑘
𝑘𝑘∈[𝑐𝑐]
1
2
� 𝒘𝒘𝑘𝑘 2
𝑘𝑘
+ 𝐶𝐶 � � 𝜉𝜉𝑖𝑖
𝑘𝑘
𝑘𝑘≠𝑦𝑦𝑖𝑖𝑖𝑖
𝑠𝑠. 𝑡𝑡. ∀𝑖𝑖 𝒘𝒘𝑦𝑦𝑖𝑖 𝑡𝑡 𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑦𝑦𝑖𝑖
≥ 𝒘𝒘𝑘𝑘 𝑡𝑡
𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑘𝑘
+ 1 − 𝜉𝜉𝑖𝑖
𝑘𝑘
(𝑘𝑘 ≠ 𝑦𝑦𝑖𝑖)
∀𝑖𝑖 𝜉𝜉𝑖𝑖
𝑘𝑘
≥ 0 (𝑘𝑘 ≠ 𝑦𝑦𝑖𝑖)
52
多クラスSVMの双対問題
同様にラグランジュ関数によって最適化問題から
以下の双対問題を導ける (𝛼𝛼𝑖𝑖 𝑖𝑖, 𝛼𝛼�𝑖𝑖 𝑖𝑖は双対変数)
識別関数も以下のようになる(KKT条件の利用)
𝒘𝒘𝑘𝑘 𝑡𝑡
𝜙𝜙 𝒙𝒙 + 𝑤𝑤0
𝑘𝑘
= � 𝛼𝛼�𝑖𝑖𝑖𝑖 𝐾𝐾 𝒙𝒙𝑖𝑖, 𝒙𝒙𝑗𝑗
𝑖𝑖
+ 𝑤𝑤0
𝑘𝑘
max
𝜶𝜶
−
1
2
� � 𝛼𝛼�𝑖𝑖𝑘𝑘 𝛼𝛼�𝑗𝑗𝑘𝑘 𝐾𝐾 𝒙𝒙𝑖𝑖, 𝒙𝒙𝑗𝑗
𝑘𝑘𝑖𝑖,𝑗𝑗
+ � � 𝛼𝛼𝑖𝑖𝑘𝑘
𝑘𝑘≠𝑦𝑦𝑖𝑖𝑖𝑖
𝑠𝑠. 𝑡𝑡. ∀𝑖𝑖 � 𝛼𝛼�𝑖𝑖𝑘𝑘
𝑖𝑖
= 0 (𝑘𝑘 ≠ 𝑦𝑦𝑖𝑖)
∀𝑖𝑖 0 ≤ 𝛼𝛼𝑖𝑖𝑘𝑘 ≤ 𝐶𝐶 (𝑘𝑘 ≠ 𝑦𝑦𝑖𝑖)
53
目次
• パターン識別
• 線形から非線形への拡張
• カーネル関数
• SVM(Support Vector Machine)
– 線形SVM
– 非線形SVM
• SVMの多クラス分類
• SVMの応用 ←
54
SVMの応用
今回は分類問題に絞って解説を試みたが他にも
– 回帰分析
– 教師なし学習(異常検知)
– 構造化問題(自然言語処理など)
– 半教師あり学習
にも利用可能!(すごそう)
55
参考文献
• 八木康史・斎藤英雄 編
「コンピュータビジョン最先端ガイド2」
• 竹内一郎・鳥山昌幸
「MLPシリーズ サポートベクターマシン」

コンピュータ先端ガイド2巻3章勉強会(SVM)