サポートベクターマシンは、直線で分割できない国境問題でも対応が可能で、ここからがサポートベクターマシンの真骨頂と言えます。
上の図は、どっか既視感のある国境ですが ―― あまり気にせずに進めます。
このような曲線問題の場合、取り扱う次元数を増やすことで対応するのですが、ここでは、あえて、次元の話を無視して、サポートベクターマシンの魔法ともいえる「カーネルトリック」の理屈を説明します。
カーネルトリックとは、ひとことで言えば、「無理やり、都合よく地図の形を変える」ことになります。あえて言えば、「人工地震を発生させて、半島の地下にあるプレートを、強制移動させる」イメージです。
このような地図の強制的な形状の変更などして、一体、何がうれしいかというと、「国境を直線として取り扱うことができる」ということです。直線化できれば、計算量が多くなる面倒くさい曲線補間などを持ち込まなくても、マージン最大化の仕組みがそのまま使えることになり、非常に助かります。
実際のところ、カーネルトリックで使用するカーネルを自分で設計するのは無謀です。よく使われるカーネル*1)は、無償のサポートベクターマシンのオープンソースライブラリ*2)に組み込まれているので、これらの利用をお勧めします。
*1)では、線形カーネルの他、多項式カーネル、ガウスカーネル、シグモイドカーネルなど、*2)では、LIBSVM、LIBLINEARなどが有名です(私はOpenCVをインストールしています)。
Copyright © ITmedia, Inc. All Rights Reserved.