はじめに
こちらの記事では超平面という考え方を利用した「サポートベクターマシン(SVM)」についてについて考えていきます。
「サポートベクターマシンってどういうもの?」
「超平面とかマージンって何?」
といった疑問に答えていきたいと思います!
超平面とは
サポートベクターマシンは対象となる何か(空間)を分類するアルゴリズムです。
分類するときに「超平面」という考え方を利用します。
したがってまずは「超平面」について考えていきましょう。
超平面とはある空間の「仕切り面」のイメージです。
例えば私たちが生活している空間は3次元の空間です。
この私たちが生活している3次元の空間のどこかしらに、
空間を2つに仕切るための「仕切り面」を設置するとします。
その仕切り面はおそらく壁のような平面の形になります。
会議室を仕切るパーテイションの壁をイメージするとわかりやすいですね。
この会議室を仕切るパーテイションの壁はタテとヨコからなる2次元の平面です。
つまり私たちが生活する3次元の空間を仕切ろうとすると2次元の平面を利用することになります。
この3次元空間を仕切る2次元平面こそが超平面という概念になります。
これは3次元空間だけの話ではありません。
仮に2次元の(平面)空間を2つに仕切ろうとするとどうでしょうか。
2次元空間(平面)を仕切るためには「線」が必要になります。
地図上で行政境界を引くイメージを持つとわかりやすいです。
そしてこの「線」というのは「1次元」になります。
つまり、3次元空間を2つに仕切るためには2次元空間(平面)が必要で、
2次元空間(平面)を2つに仕切るためには1次元の線が必要になる
ということです。

このようなある空間を仕切るような1つ次元を落とした仕切り面のことを超平面と呼びます。
サポートベクターマシンではこの超平面を用いてある空間を2つに分類します。
マージンとサポートベクター
サポートベクターマシンの理解のためにもう1つの重要なものが「マージン」です。
マージンとは超平面(つまりある空間の仕切り面)との距離のことです。
例えば地図上の2次元の平面空間に建物がたくさんプロットされている状態を思い浮かべてみてください。
そしてこのたくさんの建物たちを2つのグループに仕切る境界線をイメージしてみましょう。
このとき地図にプロットされた建物とそれを仕切る境界線との最短距離こそがマージンになります。
地図にプロットされた建物たちは観測されたデータに、
それを2つのグループに仕切る境界線は超平面(仕切り面)に
置き換えることができます。
そして、サポートベクターマシンではマージンが最大となるように超平面を設定します。
先ほどの建物と境界線の例で言うと、建物が密集しているところに引かれるような境界線はマージンが小さいと言えます。
境界線と建物との最短距離が短いからです。
そうではなく建物の「群」がある程度離れていてその建物群どうしのちょうど中間に引かれるような境界線がマージンが大きい超平面と言えます。
境界線と建物との最短距離が長いからです。
もう一つ大事なのはサポートベクターマシンの名前にもなっている「サポートベクター」についてです。
サポートベクターとは上記で見てきたような空間を仕切る超平面を「サポート」するものです。
例えば先ほどの地図上で建物を2つのグループに仕切る境界線のことを考えてみます。
サポートベクターマシンではこの境界線を「最も近くにある建物」との距離が最大となるように引きます。
言い換えると「最も近くにある建物」によってこの境界線は決められている(=サポートされている)ことになります。
つまりサポートベクターとは最も近くにある建物(=観測データ)のことであり、これが境界線(=超平面)をサポートする役割を果たしているというわけです。
過学習か未学習か
サポートベクターマシンもまた丸暗記型(過学習)と単純思考型(未学習)のトレードオフ問題と無縁ではありません。
丸暗記型とは手元のデータに対して過剰に学習してしまい未知なるデータに通用しなくなる過学習状態、
単純思考型とは手元のデータよりも思い込み(バイアス)を重視しすぎてしまう未学習状態のことを言います。※
※分散とバイアスのトレードオフ問題についてはDay3で説明していますのでよろしければそちらもご覧ください。

サポートベクターマシンはマージンを最大化するように空間を仕切る超平面を設定するものでした。
先の例では地図上の建物を2つのグループに仕切る境界線を、建物との最短距離が最大となるように設定するイメージです。
マージンが大きくなるような境界線の設定は実は簡単ではありません。
多くの場合はいくつかの建物が邪魔してしまいマージンが大きくなるような境界線をうまく引けません。
そこで妥協策としてサポートベクターマシンではマージン内に一定の建物が入ってしまうことを許容することができます。
例えば「建物3つまでならマージン内に入ってしまっても許容する」といった具合です。
これは仮にその3つの建物を除いて考えればとてもマージンが大きい境界線を引けるようなときに有効です。
一方でマージン内に入ってしまう建物をいくつまで許容するかというのは悩ましいです。
あまりにも多くの建物を許容してしまうと建物たちの存在を無視し過ぎてしまい単純思考型過ぎる状態(未学習)になってしまいます。
一方で一切許容せずに建物全てがマージン内に入らないような境界線を探そうとすると、たまたま邪魔なところにあるだけの建物も重要視してしまう状態(過学習)に陥ってしまいます。
したがってサポートベクターマシンではマージンを最大化する境界を設定する際に、未学習でも過学習でもないちょうどよい程度の許容範囲を調整するという作業が必要になってきます。
まとめ
最後に今回の記事のポイントを整理します。
- サポートベクターマシンは超平面というある空間を仕切るような1つ次元を落とした仕切り面を利用する
- サポートベクターマシンでは観測されたデータと超平面との最短距離(マージン)を最大化するような超平面を設定する
- 超平面から最も近くにあるデータのことをサポートベクターという
- マージン内にどれくらいのデータが入っても良いかの許容レベルを調整する必要がある
サポートベクターマシンについて超平面、マージン、サポートベクターという言葉とともに考えてきました。
難しそうな言葉ばかりですが、具体的な例とあわせて考えることで理解しやすくなると思います。
※今回はサポートベクターマシンの考え方を中心に見てきました。これに加えてサポートベクターマシンには「非線形」という特徴もありますが本記事では割愛しました。サポートベクターマシンは「非線形」なアルゴリズムであるということだけはぜひ覚えておいてください。
今回は以上になります。
最後まで読んでいただきありがとうございました!

統計学の基礎を効率的に学べるベーシック講座です。統計学の入り口となる「確率分布・推定・検定」について豊富な図を用いて説明していきます。
2021年3月リリース後すでに20,000人以上の方に受講いただき大人気ベストセラーコースとなっています!ぜひこの機会に統計学や確率思考という一生モノのスキルを一緒に身につけましょう!
※上記リンクからですと時期によってはクーポンが自動適用されます。
※Udemyは世界最大級のオンライン学習プラットフォームです。以下記事にてUdemyをご紹介しておりますのでよろしければこちらもご覧ください。
