サポートベクターマシン — 最大マージンという設計思想
2クラスを分ける線は無数に引けます。SVM はその中から「両クラスから最も離れた、いちばん自信のある1本」を選ぶ — このシンプルな原理から、境界を決めるのは数点のサポートベクターだけという性質と、直線で切れないデータを高次元に持ち上げるカーネルトリックまでを、手で動かして理解します。
1. どの線がいちばん良いか — マージン最大化
訓練データを分離できる線が無数にあるとき、どれを選ぶべきでしょうか。SVM の答えは、最も近い点までの距離(マージン)が最大の線。境界の両側に広い「余白」を確保しておけば、新しいデータが多少ブレても誤分類しにくい — つまり汎化しやすいという発想です。
下のデモで境界線の角度と位置を手で動かし、マージン帯(2本の破線の間)をどこまで広げられるか試してから、「最大マージン」ボタンで最適解と比べてみてください。
マージンの体感 — 線を動かして余白を最大化する
実線=境界、破線=マージンの縁、緑の輪=最近接点(サポートベクター候補)。マージン幅は「最も近い点までの距離」で決まるので、縁に触れている数点だけが効いています。分離できない配置にすると枠が赤くなり、誤分類点に赤い輪が付きます。
POINT — 境界を決めるのはサポートベクターだけ
最適な境界はマージンの縁に乗った数点(サポートベクター)だけで完全に決まる。それ以外の点は削除しても境界は1ミリも動かない。学習結果が少数の点で表現できる — これが SVM の名前の由来であり、省メモリ性の源。
max 2/‖w‖ s.t. yi(w·xi + b) ≥ 1
マージン幅 = 2/‖w‖。「マージン最大化」は「‖w‖ の最小化」と同じで、凸最適化として一意に解ける
2. はみ出しを許す — ソフトマージンと C
現実のデータはたいてい重なっていて、完全に分離する線は存在しません。そこでスラック変数 ξi でマージン違反(はみ出し)を許し、その総量に罰金 C を課します。C は「誤分類をどれだけ嫌うか」のツマミです。
ソフトマージン — C で「厳しさ」を調整する
スライダーを動かすたびに SVM を学習し直しています。C 大=違反を許さず、点ギリギリの狭いマージン(過学習気味)。C 小=多少の誤分類(赤い輪)を受け入れて広く安定したマージン。オレンジの輪=マージン帯の内側に入った違反点、赤い輪=境界の向こう側に出た誤分類点。
min ½‖w‖2 + C Σi ξi
第1項=マージンを広く、第2項=はみ出しを少なく。C はこの2つの妥協点を決めるハイパーパラメータ
注意 — C は交差検証で、特徴量はスケーリングを
最適な C はデータ次第なので交差検証で選ぶのが定石。また SVM は距離ベースの手法なので、特徴量ごとにスケールが違うとマージンが歪む。標準化(平均0・分散1)はほぼ必須。
3. 曲がった境界 — カーネルトリック
同心円状のデータは、2次元のどんな直線でも切れません。しかし新しい座標 z = x² + y²(原点からの距離の2乗)を足して3次元に持ち上げると、内側の点は低く・外側の点は高く浮き上がり、ただの水平な平面でスパッと切れるようになります。その平面を元の2次元に射影すると — 円形の境界になるのです。
カーネルトリック — 持ち上げれば平面で切れる
ボタンで z = x²+y² の軸を追加した3次元ビューへ(ゆっくり回転します)。半透明の平面が2クラスを分け、その切り口(緑の破線)が2次元に戻すと円形境界そのものです。背景の色塗りは RBF カーネルによる決定関数(低解像度グリッド)。γ を上げると「近くの点しか見ない」ようになり、境界がどんどん複雑になります — γ の上げすぎは過学習です。
K(x, x′) = exp(−γ‖x − x′‖2)
RBF(ガウス)カーネル。無限次元への持ち上げに相当する。γ 大=影響範囲が狭い=複雑な境界
POINT — 座標を計算せずに持ち上げる
SVM の学習と予測に必要なのは、実は持ち上げた先の座標そのものではなく点どうしの内積だけ。内積をカーネル関数 K で置き換えれば、持ち上げ先が無限次元でも計算量はデータ点の数で決まる。これが「トリック」と呼ばれるゆえん。
一歩先へ — γ と C の二人三脚
RBF-SVM の実務は γ(境界の複雑さ)と C(違反への厳しさ)のグリッドサーチが定番。どちらを上げても過学習方向に働く点に注意。深層学習全盛の今も、中小規模データや高次元疎データ(テキスト等)では SVM は速くて強いベースラインであり続けている。
4. まとめ
- マージン最大化:無数にある分離線の中から「最も余白の広い1本」を選ぶ = 最も自信のある境界。
- サポートベクター:境界を決めるのはマージンの縁の数点だけ。他の点は無関係。
- ソフトマージン:C で「マージンの広さ」と「はみ出しの少なさ」の妥協点を調整する。
- カーネルトリック:内積をカーネルに置き換えて高次元に「実質的に」持ち上げ、線形の道具で曲がった境界を得る。