SVMTRAIN 関数で多項式や RBF カーネルのパラメータ (gamma, C) を決定する方法はありますか?

SVMTRAIN を使用しています。SVMTRAIN は自動的にカーネルパラメータを最適化しているのか教えてください。また、手動でカーネルパラメータを設定する方法も教えてください。

 Accepted Answer

MathWorks Support Team
MathWorks Support Team on 25 Aug 2020
Edited: MathWorks Support Team on 22 Jul 2020
MATLAB はカーネルパラメータの最適化はしていません。ユーザーがパラメータを指定しない限り、既定の値を使用します。多項式カーネルのオーダーは既定では 3 になっています。このオーダーを 4 に変更するには以下のコードを使用します。
svmstruct = svmtrain(data, groups, 'Kernel_Function', 'polynomial', 'Polyorder', 4)
RBF カーネルに関しても同様です。MATLAB は以下のような RBF カーネルを使用しています。
k_rbf(x,y) = exp(-1/(2*sigma^2) * ||x-y||^2).
文献では、カーネルは以下のように定義されています。
k(x,y) = exp(-gamma * ||x-y||^2)
カーネルパラメータ sigma の既定値は 1 です。これを 0.2 に変更するには以下のコードを使用します。
svmstruct = svmtrain(data, groups, 'Kernel_Function', 'rbf', 'RBF_Sigma', 0.2)
ペナルティパラメータ C は BoxConstraintValue オプションで指定できます。SVMTRAIN では既定値が 1 に設定されており、例えば以下のように手動で 0.8 に変更することができます。
svmstruct = svmtrain(data, groups, 'Kernel_Function', 'rbf', 'RBF_Sigma', 0.2, 'BoxConstraint', 0.8)
これらのパラメータ (sigma, C) の最適解を求めるにはクロスバリデーションとグリッドサーチあるいは解の最適化を行います。その手順は以下のページをご確認ください。
- SVM Classification with Cross Validation

More Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!