2次元の数値例で、サポートベクターマシン(SVM)の境界とマージンを求めよ、って問題
【疑問】サポートベクターマシンのマージン最大化って何をしてるん?カーネルで直線にならない境界が作れるのはなんで【統計検定1級】
前提のおさらい。フィッシャーの線形判別は、群の差を群内のばらつきで割った比を最大にする方向で、2群を直線で分けた。分布(正規・共通の共分散)を使う方法
>>1
SVMは分布を使わず、境界 と一番近い点との距離(マージン)を最大にする。ラベルを として
制約の右辺を1にそろえると、マージンの幅は 。 を小さくするのがマージンを広げること
数字で。 が 、 が
境界 、つまり 、
で 、 で 。ちょうど制約の境目で、これがサポートベクター
マージンの幅は 。ほかの点は全部その外
>>4
境界は2つのサポートベクターだけで決まる。 や を動かしても、マージンの外にいるかぎり境界は変わらない
双対問題で書くと で、 になるのはサポートベクターだけ。この例では ずつで
>>5
実際のデータは重なってて、直線でぴったり分けられんやろ
>>6
はみ出しを許す(ソフトマージン)。はみ出し量 を入れて、 を最小にする
が大きいとはみ出しを強く嫌って境界がデータに合わせすぎる、小さいとマージンを優先する。 は交差検証で決める
カーネルのほう。1次元で が 、 が なら、1本のしきい値では分けられない
で2次元に移すと、 は 、 は で、横の直線 で分けられる
元の目盛りに戻すと境界は の2点
>>8
双対問題には が内積 の形でしか出てこない。だから を作らなくても、内積 さえ計算できればいい
この例なら 。ガウスカーネル のように、無限次元の に当たるものも使える
>>9
カーネルを使えば何でも分けられるんやから、最強やん
>>10
分けられることと、新しいデータで当たることは別。複雑なカーネルで を大きくすると、手元のデータは全部当たっても新しいデータで外れる(過学習)
それに出力は確率じゃなくて境界からの符号付き距離。確率がほしいならロジスティック回帰のほうが素直
を最小にしてマージン を最大に、境界はサポートベクターだけで決まる、カーネルは内積の置きかえ、 とカーネルは交差検証で選ぶ。これで追えるな
管理人のひとこと
- SVM: のもとで を最小化。マージンの幅は 。
- 例:境界 (、)、サポートベクターは と 、幅2、 ずつ。
- ソフトマージンは を足す。カーネルは内積の置きかえ(例: で が境界)。分けられることと予測できることは別。