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
関数で推定された値がセットされます.