体育館にボールを並べて、赤と青のグループを分ける線を引くとき、どこに線を引くのが一番安全? その直感から『サポートベクターマシン(SVM)』の本質をつかみます。数式に入る前に、イメージを固めましょう。
例えばさ、机の上に赤い玉と青い玉が混ざってて、2色を分ける線を引くとしたら、あたしならできるだけ両方から離れた真ん中に線を引くじゃん。
ギリギリの線って怖いし。
その直感、機械学習のSVMそのものよ、ジャスミンちゃん。
はい、サポートベクターマシン(SVM)は、2クラスの間に『最も余裕のある境界線』を引くアルゴリズムです。
ぽわわ〜、余裕のある境界線ってどういうことですか〜?
境界線と、最も近いデータ点との距離をマージンと呼ぶの。
SVMはこのマージンを最大化する線(または超平面)を探すのよ。
あー、なるほど!
余裕がないとちょっとずれただけで境界越えちゃうじゃん。
余裕があるほうが未知データに強い、って理屈だね。
まさに。
汎化性能を上げる直感的な考え方よ。
境界ギリギリに立つデータ点を『サポートベクター』と呼び、それが境界を支えているからSVMという名前なの。
また、直線で分けられないデータでも『カーネルトリック』という技法で扱えます。
これは高次元空間にデータを写像して、そこで直線で分けられる形に変換するテクニックです。
高次元…? ましろ、3次元ですらあやしいのに〜。
ふふ、概念なので無理に想像しなくていいわ。
『曲がった境界も扱える強力な武器』と覚えればOKよ。
カーネルの具体例には、ガウスカーネル(RBFカーネル)、多項式カーネル、シグモイドカーネルなどがあります。
問題の性質で選びます。
少ないデータでも強いって聞いたけど、それも本当?
はい、SVMは比較的少ないデータでも高精度を出せる特性があります。
深層学習が流行する前は画像分類でもよく使われていました。
ただし大規模データだと計算コストが重くなる弱点もあります。
歴史的にも重要なアルゴリズムで、1990〜2000年代の画像認識・文字認識の主役だったのよ。
深層学習の登場で主役の座を譲ったけど、今でも表形式データや医療系では現役ね。
『マージンを最大化』って、人生の余裕を大事にする感じで、なんだか素敵な発想ですね〜。
ましろ、また哲学的じゃん(笑)。
でも本質を突いてる気がする。
ちなみに、SVMは基本的に二値分類向けですが、多クラス分類にはOne-vs-RestやOne-vs-Oneといった工夫で対応します。
One-vs-Rest、って英語でかっこいいですけど、要するに『1対その他』で何個も作るんですか〜?
まさにその通り。
『犬 vs その他』『猫 vs その他』のように二値分類器をクラス数だけ作って、最も確信度の高いものを答えにします。
シンプルで効果的な拡張方法ですね。
試験では『SVM=マージン最大化』『カーネルトリックで非線形分離』の2点をしっかり押さえてね。
真ん中に線を引く。
シンプルで覚えやすいじゃん!
確認クイズ
SVMが重視する『マージン』とは何か?
- データの次元数
- 境界線とデータの間の最大の隙間
- 学習に使うデータ量
- モデルのパラメータ数
こたえを見る
正解: 2. 境界線とデータの間の最大の隙間
SVMにおけるマージンは、分類境界と最も近いデータ点の距離のことです。これを最大化することで、未知データへの汎化性能が高まります。境界を支えるデータ点がサポートベクターです。