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

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

 Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 25 Août 2020
Modifié(e) : MathWorks Support Team le 22 Juil 2020

0 votes

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

Plus de réponses (0)

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Centre d'aide et File Exchange

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!