Download - サポートベクターマシン (SVM)サポートベクターマシン •サポートベクターマシン(Support Vector Machine ; SVM) •パーセプトロンに基づき,教師あり学習を用
サポートベクターマシン(SVM)
判別分析
サポートベクターマシン
• サポートベクターマシン(Support Vector Machine ; SVM)
• パーセプトロンに基づき,教師あり学習を用いるパターン認識モデルの一種
• カテゴリの境界のマージンを最大にするように分類する.
識別平面とマージン
識別平面
マージン𝑑
マージン最大化
• 各サンプルから識別平面への距離は次式で与えられる.
𝑑𝑖 = −𝒂 ⋅ 𝒙𝑖 + 𝑏
𝒂
• 距離の最小値を最大化するように平面を定める.
max𝒂,𝑏min𝑖
𝒂 ⋅ 𝒙𝑖 + 𝑏
𝒂
マージン最大化(ハードマージン)
• 別の表現をするとmin𝒂,𝑏𝒂
subject to 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 ≥ 1
• ここで
max𝒂,𝑏min𝑖
𝒂 ⋅ 𝒙𝑖 + 𝑏
𝒂
= max𝒂,𝑏
1
𝒂↔ min𝒂,𝑏𝒂
ハードマージンとソフトマージン
• ハードマージン
min𝒂,𝑏𝒂
ただし
𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 ≥ 1
• 厳密に解析するためには上記の問題を解く.
• 実際には,サンプル点が識別平面付近で混ざっている場合,サンプルデータにノイズがあるなどの場合には,ハードマージンではうまく分離できない場合がある.
• 制約条件を緩める方が良い(ソフトマージン).
ソフトマージン
制約条件
𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 ≥ 1
は不等式制約条件になっている.
スラック変数𝜉𝑖を導入して,不等式制約条件を等式制約条件に変換する.
𝜉𝑖 = 1 − 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏
ここで,𝜉𝑖 ≥ 0なる定数.
この制約条件をペナルティとして目的関数へ導入する.
ソフトマージン(1)
目的関数:
1
2𝒂 2 → min
制約条件:
𝑟 𝒙 = max 1 − 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 , 0
制約条件をペナルティ関数として目的関数へ導入すると,次式を得る.
𝐹 𝒂, 𝑏 =1
2𝒂 𝟐 + 𝑃
𝑖=1
𝑚
max 1 − 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 , 0 → min𝒂,𝑏
ペナルティ
ソフトマージン(2)
𝐹 𝒂, 𝑏 =1
2𝒂 𝟐 + 𝑃
𝑖=1
𝑚
max 1 − 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 , 0
ここで,スラック変数𝜉𝑖を導入すると
𝐹 𝒂, 𝑏 =1
2𝒂 𝟐 + 𝑃
𝑖=1
𝑚
𝜉𝑖
ただし,新たな制約条件が加わる.
𝜉𝑖 = 1 − 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏
𝜉𝑖 ≥ 0
ソフトマージン(3)
ラグランジュ定数𝛼𝑖 , 𝛽𝑖を用いて制約条件を取り入れる.
𝐿 =1
2𝒂 𝟐 + 𝑃
𝑖
𝜉𝑖 −
𝑖
𝛼𝑖 𝜉𝑖 − 1 + 𝑦 𝒂 ⋅ 𝒙𝑖 + 𝑏 −
𝑖
𝛽𝑖𝜉𝑖
を最小化するためには𝜕𝐿
𝜕𝒂=𝜕𝐿
𝜕𝑏=𝜕𝐿
𝜕𝜉𝑖= 0
ここから, 𝒂と𝑏を定めると
max
𝑖
𝛼𝑖 −1
2
𝑖,𝑗
𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝒙𝑖𝒙𝑗
ただし
0 ≤ 𝛼𝑖 ≤ 𝑃 ,
𝑖
𝑦𝐼𝛼𝑖 = 0
データの変数変換
データ𝒙𝑖を高次元空間に変数変換する.それを,𝜙(𝒙𝑖)とする.つまり,
𝒙𝑖 → 𝜙(𝒙𝑖)
𝒙𝑖でなく𝜙(𝒙𝑖)を用いて関数を近似することもできる.
𝑦 ≃ 𝒂𝑻𝝓(𝒙𝒊)
最小二乗法でパラメータ推定する.
min 𝑖𝑦𝑖 − 𝒂
𝑻𝝓(𝒙𝒊)2
カーネル法
カーネル関数𝑘 𝑥, 𝑥′ = 𝜙 𝑥 𝑇𝜙(𝑥′)
で回帰近似を行う.
𝑓 𝑥 =
𝑖=1
𝑛
𝑘 𝑥, 𝑥𝑖 𝛽𝑖
線形カーネル𝑘 𝒙, 𝒙′ = 𝒙𝑇𝒙′
多項式カーネル𝑘 𝒙, 𝒙′ = 1 + 𝒙𝑇𝒙′ 𝐷 , 𝐷 = 1,2,3,⋯
ガウシアン・カーネル𝑘 𝒙, 𝒙′ = exp −𝜎 𝒙 − 𝒙′ 2 , 𝜎 > 0
練習問題1
• AND回路の判別分析.
X1 X2 Y
1 1 1
1 0 0
0 1 0
0 0 0
練習問題(1)
*SVMの学習データを用意する.
> x1 <- c(1,1,0,0)> x2 <- c(1,0,1,0)> y <- c(1,0,0,0)> svm.data <- data.frame(x1,x2,y)> svm.data
x1 x2 y1 1 1 12 1 0 03 0 1 04 0 0 0
練習問題(2)
パッケージをインストールし,ライブラリを読み込む.
練習問題(3)
*SVMで判別式を学習する.
練習問題(4)
*判別するデータを用意する.
*判別データを判別する.
練習問題(6)
学習データを表示する.
演習問題1
• 学習データに対する予測値,(2,0),(-1,-1)に対する予測値を求め、plotしなさい.
X1 X2 Y
1 1 1
1 0 1
0 1 1
0 0 0
演習問題2
• 学習データに対する予測値,(2,0),(-1,-1)に対する予測値を求め、plotしなさい.
X1 X2 Y
1 1 0
1 0 1
0 1 1
0 0 0