LoginSignup
7
5

More than 5 years have passed since last update.

各パッケージにおける RBF カーネルのパラメータ名の違い

Posted at

R で SVM を使おうとして RBF カーネルのパラメータの設定に手間取ったのでメモ.RBF カーネルの一般的な定義における文字の使い方と,各パッケージにおける文字の使い方が異なるため,対応関係を整理します.

一般的な形

k\left(\mathbf{x_1}, \mathbf{x_2}\right) = \exp\left(-\frac{\|\mathbf{x_1} - \mathbf{x_2}\|^2}{2\sigma^2}\right) = \exp\left(-\gamma \|\mathbf{x_1} - \mathbf{x_2}\|^2\right)

RBF カーネルはガウス関数の形をしているので,正規分布を意識した表し方で定義するのが一般的だと思います.この定義では,文字 $\sigma$ は標準偏差っぽい値として使われており,$\gamma = 1 / 2\sigma^2$ と置くことで定義を簡潔化しています.さらにマイナスを含めて $\gamma = -1 / 2\sigma^2$ とする場合もあります.

e1071

k\left(\mathbf{x_1}, \mathbf{x_2}\right) = \exp\left(-\gamma \|\mathbf{x_1} - \mathbf{x_2}\|^2\right)

e1071 の svm では RBF カーネルのパラメータとして gamma を指定することができますが,この gamma が表しているのは一般的な定義でいうところの $\gamma$ です.

一般的な定義における文字の使い方と,svm における文字の使い方が一致しているので,特に混乱することはありません.

なお,デフォルトでは gamma に特徴ベクトルの次元数の逆数がセットされます.

kernlab

k\left(\mathbf{x_1}, \mathbf{x_2}\right) = \exp\left(-\sigma\|\mathbf{x_1} - \mathbf{x_2}\|^2\right)

kernlab の ksvm では RBF カーネルのパラメータとして sigma を指定することができますが,この sigma が表しているのは一般的な定義でいうところの $\gamma$ です.

一般的な定義における文字の使い方と,ksvm における文字の使い方が異なるので,注意が必要です.

なお,デフォルトでは sigma の値は sigest 関数で推定された値がセットされます.

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5