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

4 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2019 年 8 月 19 日
編集済み: MathWorks Support Team 2019 年 8 月 19 日
fitcsvm や svmtrain でソフトマージンのボックス制約 C はどのように設定されるか、教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2019 年 8 月 19 日
編集済み: MathWorks Support Team 2019 年 8 月 19 日
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) と暗示的に指定されるため、それぞれのクラスには確率的に均等にデータが含まれていると解釈されます。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeデータ分布プロット についてさらに検索

製品


リリース

R2014a

Community Treasure Hunt

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

Start Hunting!