メニュー 閉じる

sklearnを使ったSVMではlinearとrbfという2つのカーネルを使える

サポートベクターマシン(SVM)を使おうと思ったとき、
突如「カーネル」という言葉が出てきます。

SVMのカーネルというのはOSのカーネルとは全く別物です。
ここでは「サポートベクターマシンの判断基準」と考えて良いと思います。

より専門的にはカーネル関数というものを用いて、
特徴ベクトルの内積を置き換えていくというところから名付けられています。

sklearnでは「linear」か「rbf」という2つが用意されています。
前者は線形モデルであり、後者はRadial basis function kernelというモデルです。

rbfカーネルはたくさんのパラメータを設定することができますが、
入力特徴量を増やすということになります。
つまりこれらのパラメータは「訓練データをどれだけ重視して判断するか」を決める要素となります。

 

SVM(RBFカーネル)のハイパーパラメータを変えると何が起こるの?
https://qiita.com/sz_dr/items/f3d6630137b184156a67

 

個人的にシンプルに線形カーネルで分類してみるのは最初の一歩として適切だと思います。
もちろん、データ分布を見たときにある程度あたりを付けることが大前提です。

rbfでは細かいパラメータ設定ができますのでチューニングにはもってこいです。
例えば非線形分類などデータが複雑な場合には役立ちます。
当然ですがチューニング次第で限りなくlinearと同様の設定とすることができます。

しかし、データ分析の最終的な意味は何らかの意思決定に役立てることですから、
データ分析の競技用としてはパラメーターを調整すべきでしょうが、
結局の所、精度が落ちることを許容したシンプルなモデルのほうが解釈がしやすいかもしれません。

 

カーネル法のサポートベクタマシン(教師あり学習)
https://note.com/okonomiyaki011/n/n64216b96c54f

 

余談ですが、SVMに用いられているラグランジュの未定乗数法は、
経済数学でも頻繁に出てくる概念なのでとても懐かしいなと思いました。

ラグランジュ未定乗数法は等式制約付きの関数最大化、
最小化問題を解くときに使う偏微分方程式の解き方です。
経済学でも予算という制約下において、効用を最大化することを目的とするために、
このような方法で最適解を導出するのです。

サポートベクターマシンにおいてもデータを何らかの基準を用いて分類するわけですが、
その問題も完全に線形分離可能とは限りませんが最適解で分類するためには、
制約式の下でうまくパラメータを調整しながら分類するという作業をしているわけですね。

SVMではコンピュータによってゴリゴリと解いていくために、
わざわざ手計算でラグランジュの未定乗数法を解くことはありえませんが、
一度復習して原理を知っておくとその素晴らしさと限界について把握することができます。