fitcsvm や svmtrain でソフトマージンのボックス制約 C はどのように設定されますか?

5 views (last 30 days)
fitcsvm や svmtrain でソフトマージンのボックス制約 C はどのように設定されるか、教えてください。

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 19 Aug 2019
Edited: MathWorks Support Team on 19 Aug 2019
svmtrain 関数で対応するパラメータは 'boxconstraint' です。スカラー値として与えることも可能で、各学習データ毎に重みを加味した値をベクトルとして与えることも可能です。
fitcsvm 関数では 'BoxConstraint', 'Cost', 'Prior', 'Weight' を用いて設定され、最終的に svmtrain 関数の 'boxconstraint' に相当するベクトルのボックス制約を作成します。学習後に出力される分類器の 'BoxContraints' プロパティで確認できます。
それぞれ既定値は (N は学習データの数)
'BoxConstraint' = 1;
'Cost' = [0,1;1,0];
'Weight' = ones(N,1);
'Prior' = 'empirical' (学習データのクラス相対的頻度が採用される)
です。
****
'Cost'
****
クラスごとに異なるボックス制約を設定することを目的とし、fitcsvm 関数では 'Cost' - 誤判別のコストを設定します。正方行列として与えるケースだと、Cost(i,j) は真のクラスが i である場合に、1 つのポイントをクラス j に誤分類してしまうコストです。対角成分は 0 となります。
******
'Weight'
******
ボックス制約の重みをデータ毎に明示的に指定できます。
*****
'Prior'
*****
'Prior' = 'empirical' と設定(特に指定しない場合はこの設定となります)した場合は、学習データの相対的頻度の比を Prior に設定した場合と同じ挙動となります。
具体的な例を挙げます。X を学習データの行列、y をグループ化変数(カテゴリベクトル)とします。
*Case 1: クラス 1 に 50, クラス -1 に 50 のデータ数 *
SVMModel = fitcsvm(X,y,'BoxConstraint',1);
ではクラス 1 には C = 1、クラス -1 にも C = 1 のボックス制約が与えられます。ここで、
SVMModel = fitcsvm(X,y,'BoxConstraint',1,'Prior',[2 1]);
としますと、クラス毎の事前確率を 2:1 を指定することで、クラス 1 には C = 1.33、クラス -1 には C = 0.67 のコストパラメータが与えられます。相対的にクラス 1 のデータが少ないため、クラス 1 へのコストパラメータが増やされます。
最終的な コストパラメータの値は合計値が ('BoxConstraint' の値)*N となるように正規化されます。(N は学習データの数)
*Case 2: クラス 1 に 50, クラス -1 に 25 のデータ数 *
学習データ内のクラスが均等に存在しない場合、その相対的頻度に合せてコストパラメータが自動調節されます。母集団では均等に分布すると仮定する場合は 'Prior' = 'uniform' として下さい。この場合、データの数が少ないクラスの重みが増します。例えばクラス -1 が全体の 20% しかない場合、クラス -1 の重みは 4 倍になります。
例:
SVMModel = fitcsvm(X,y,'BoxConstraint',1, 'Prior','uniform'); または
SVMModel = fitcsvm(X,y,'BoxConstraint',1, 'Prior', [1 1]);
では、クラス 1 には C = 1、クラス -1 には C = 2 のコストパラメータが与えられます。データの相対頻度は 2:1 ですが、事前確率は均等 1:1 という前提があるため、クラス -1 のデータが相対的に「少ない」からです。ただ、
SVMModel = fitcsvm(X,y,'BoxConstraint',1);
とすると、クラス 1 には C = 1、クラス -1 にも C = 1 のコストパラメータが与えられます。データの相対頻度は 2:1 ですが、このとき Prior = [2 1] (emprical) と暗示的に指定されるため、それぞれのクラスには確率的に均等にデータが含まれていると解釈されます。

More Answers (0)

Products


Release

R2014a

Community Treasure Hunt

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

Start Hunting!