パターン認識 第12章 正則化とパス追跡アルゴリズム
-
Upload
miyoshi-yuya -
Category
Documents
-
view
2.153 -
download
0
description
Transcript of パターン認識 第12章 正則化とパス追跡アルゴリズム
正則化とパス追跡アルゴリズム
東京大学 三好雄也
1
はじめに
2
かなり参考にさせて頂きました
http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html
http://ibisml.org/archive/ibisml001/karasuyama.pdf
問題があれば削除します
SVMの確認
識別問題 y = sgn(𝑤𝑥 + 𝑏 )
𝑤𝑥𝑖 + 𝑏 =0 は定数倍しても問題ないので
⇒ 𝑤𝑥𝑖 + 𝑏 ≧1 … 𝑦𝑖 = 1
𝑤𝑥𝑖 + 𝑏 ≦ -1 … 𝑦𝑖 = 1
⇒ 𝑦𝑖 (𝑤𝑥𝑖 + 𝑏 )≧1 ←このもとでマージン最大化
sgn(y) = 1 … y ≧0
sgn(y) =-1 … y < 0
𝑤𝑥 + 𝑏 =0
3
ソフトマージン(C-SVM)の復習 1
線形分離可能ではない場合、以下の式を満たす (w , b) は存在しない
𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ) ≧ 1
そこで、
𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ) < 1
となる場合もペナルティ付きで認めるというのがソフトマージン
線形分離不可能
4
ソフトマージン(C-SVM)の復習 2
はずれ幅 ξ𝑖 = max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}
ペナルティの大きさC → ペナルティ Cξ𝑖
セ、セーフ?
𝑤𝑥 + 𝑏 =0
5
ソフトマージン(C-SVM)の復習 3
ξ𝑖 = 0 分離成功
0 < ξ𝑖 ≦ 1 Aの場合
ξ𝑖 > 1 Bの場合(分離失敗)
C → ∞ でハードマージンと同じ
ペナルティ Cξ𝑖 =C×max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}
B
A
B
A
6
ソフトマージン(C-SVM)の復習 4
ペナルティ Cξ𝑖 =C×max{1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏) ,0}
目的関数の再定義
min𝑤,𝑏
1
2𝑤 2+ C ξ𝑖
𝑛𝑖=1
s.t. ξ𝑖 ≧ 0 …(2)
ξ𝑖 ≧ 1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏)
つまりはoverfitしないように、Cでパラメータに制約を加えている感じ・・・なハズです。この仕組みが正則化!
7
ソフトマージン(C-SVM)の復習 5
min 1
2𝑤 2+ C ξ𝑖
𝑛𝑖=1
精確に分けたい!
過学習を防ぎたい!
(正則化項)
8
SVMのパラメータ推定 1
数式的な部分は省略します。
結局のところ、ラグランジュ乗数法で最適化問題を解くことにより、以下の式と制約条件が導かれます。
L = 1
2𝑤 2+ C ξ𝑖
𝑛𝑖=1
- 𝜆𝑖𝑛𝑖=1 ξ𝑖 - 𝛼𝑖
𝑛𝑖=1 (ξ𝑖 − 1- 𝑦𝑖(𝑤𝑥𝑖 + 𝑏 ))
⇔ L = 𝛼𝑖𝑛𝑖=1 -
1
2 𝛼𝑖𝛼𝑗𝑦𝑖𝑦𝑗𝑥𝑖𝑥𝑗𝑖,𝑗 …(3)
ただし 𝜆𝑖 ≧0 , 𝛼𝑖 ≧0
𝜆 , 𝛼 はラグランジュ乗数
双対問題
𝜆𝑖について
最大化
9
SVMのパラメータ推定 2
ラグランジュ乗数法の中で以下の式が現れる。
w = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖
𝛼𝑖𝑛𝑖=1 𝑦𝑖 =0
𝜆𝑖 + 𝛼𝑖 =C
(3)式を最大化し、最適な 𝜆 を求め、以下のようにパラメータw* , b* を求める。
w* = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖
b* = 𝛼𝑖𝑛𝑖=1 𝑦𝑖 𝑥𝑖
10
SVMのパラメータ推定 3
まとめると、ソフトマージンSVMの場合、以下の制約条件が課されるものの基本的にはハードマージンSVMと変わりはない
𝛼𝑖𝑛𝑖=1 𝑦𝑖 =0 , 0≦ 𝛼𝑖≦C
繰り返しとなるが、ソフトマージンSVMは
ξ𝑖 = 0 or C → ∞
で、ハードマージンSVMと等しくなる
11
補足 1 Φ?
Φ(𝑥𝑖)の Φ ←こいつのことです。
教科書p120にも書いてありますが、写像を意味します。
今までは比較的線形で分離しやすい例を用いていたため、 Φは用いていませんでした。
しかし、以下のような場合、線形で分離するのはまず無理です。
そこで、何らかの変換(写像)を行い、
分離しやすい形に直してしまおうとい
うのがカーネルの発想です。
変換前:入力空間
変換後:特徴空間
12
補足 2 Φ?
変換によるイメージ
次元を増やす変換だと(これがカーネル!)
13 フリーソフトによるデータ解析・マイニング Rとカーネル法・サポートベクターマシンより
パス追跡とは
Cの値が変わると、判別境界が大きく変わる(図12.1)
Cの決め方の手順
→ Cの候補を設定 → 交差検証法、ブートストラップ
しかし、k-交差検証法の場合、計算コストが高くなる
→ パス追跡アルゴリズムにより、いちいち最適問題を 解かずに最適な C の値を追いかける!
ただし、機械学習系ではまだ注目を集め始めた段階であり、結果も安定しないことから、まだまだ検証が必要な手法?
14
パス追跡アルゴリズム 1
初期化 C = 𝐶𝑚𝑖𝑛
繰り返し C = 𝐶𝑚𝑎𝑥 となるまで以下のStepを繰り返す
出力 C ∈[𝐶𝑚𝑖𝑛 , 𝐶𝑚𝑎𝑥] と 𝑓𝑐
C
𝜆𝑖
C
𝜆𝑖
パス追跡 グリッドサーチ
1つずつ最適化 変化点を求める
15
パス追跡アルゴリズム 2
Step1:直線の方程式を求める
Step2:直線の変化点(break point)を見つける
学習データを3つに分ける
1. L = { i | 𝑦𝑖𝑓𝑐<1}
2. R = { i | 𝑦𝑖𝑓𝑐>1}
3. Ε ⇒ 0≦ 𝛼𝑖(C) ≦C
それぞれの点の状態が違う状態に移るCが “break point”
C変化で 境界も変化
Cが増えると 幅が小さくなる
16
パス追跡アルゴリズム 3
イメージ的には csvm.svg を参照
http://sora-blue.net/~shogo82148/memo/algorithm/svm/csvm.html
それぞれの点の状態が変化していることが確認できる
17
パス追跡アルゴリズム in R 1
fit <- svmpath(x, y, kernel.function=radial.kernel, param.kernel=sigma)
x …200×2 の2次元 y …200個のラベル(-1,1)
Svmpath ⇒ fit $ lambda : the value of the regularization parameter …C , 0~45の500弱個 ⇒ fit $ alpha : αの値 …200×500弱
system.time(fit <- svmpath(x,y,kernel.function=radial.kernel,param.kernel=sigma))
system.time(for (i in 1:length(C.list))
ksvm(x,y,kernel="rbfdot",kpar=list(sigma=sigma),C=C.list[i]))
僕のPCだと
Cの数…414個 svmpath → 0.11秒 ksvm → 30.01秒でした
α の推定値
計算の高速化
18
パス追跡アルゴリズム in R 2
dat$x
〇:1 〇:2
最後のコード(path-svm.r)でも何らか
の方法で、カーネル法を用います。
ただ、このカーネルにガウシアンカー
ネルを用いる場合、 “σ” の値をどうす
るかという問題も生じます。
そこで、最後のコードではCを100段階
に変化させるとともに “σ” の値も10段
階で変化させています。
19
パス追跡アルゴリズム in R 3
sigma.list <- 1/quantile(dist(x),prob=seq(0.01,0.5,l=20))^2
for (sigma in sigma.list){
print(sigma)
err <- c()
for (j in 1:kcv){
## k-交差検証法
tmpx <- x[idx!=j,]
tmpy <- y[idx!=j]
fit <- svmpath(tmpx, tmpy,
+ kernel.function=radial.kernel, param.kernel=sigma)
pred <- predict(fit,x[idx==j,],1/C.list,type="class")
err <- rbind(err, colMeans(pred != y[idx==j]))
}
cverr <- rbind(cverr,colMeans(err))
}
C-SVM
20
まとめ
SVMにおけるパス追跡アルゴリズムとは、交差検証法の計算量を軽減することを目的としたものであり、近年、その有効性が認識されつつある。
ただし、最適化問題としては既に確立しているものの、機械学習においては統計的性質など研究課題は多い。
また、値も安定しない。
なお、パターン認識の本では線形までしか示されていない
21