ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

fitcsvm

二項サポート ベクター マシン分類器の学習

構文

  • SVMModel = fitcsvm(TBL,ResponseVarName)
  • SVMModel = fitcsvm(TBL,formula)
  • SVMModel = fitcsvm(TBL,Y)
  • SVMModel = fitcsvm(X,Y)
  • SVMModel = fitcsvm(___,Name,Value)

説明

SVMModel = fitcsvm(TBL,ResponseVarName) は、テーブル (TBL) に含まれている標本データを使用して学習させたサポート ベクター マシン分類器 SVMModel を返します。ResponseVarName は、1 クラスまたは 2 クラス分類用のクラス ラベルが含まれている TBL 内の変数の名前です。

SVMModel = fitcsvm(TBL,formula) は、テーブル (TBL) に含まれている標本データを使用して学習させた SVM 分類器を返します。formula は、学習に使用する TBL 内の応答変数と予測子変数を特定する式の文字列です。

SVMModel = fitcsvm(TBL,Y) は、テーブル TBL の予測子変数とベクトル Y のクラス ラベルを使用して学習させた SVM 分類器を返します。

SVMModel = fitcsvm(X,Y) は、行列 X に含まれている予測子とベクトル Y に含まれている 1 クラスまたは 2 クラス分類用のクラス ラベル を使用して学習させた SVM 分類器を返します。

SVMModel = fitcsvm(___,Name,Value) は、前の構文のいずれかを使用し、1 つ以上の Name,Value ペア引数で指定されたオプションを追加して、サポート ベクター マシン分類器を返します。たとえば、交差検定の種類、誤分類のコスト、スコア変換関数の種類を指定できます。

すべて折りたたむ

フィッシャーのアヤメのデータセットを読み込みます。がく片の長さと幅および観測済みのすべての setosa を削除します。

load fisheriris
inds = ~strcmp(species,'setosa');
X = meas(inds,3:4);
y = species(inds);

処理済みのデータセットを使用して SVM 分類器に学習させます。

SVMModel = fitcsvm(X,y)
SVMModel = 

  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 100
                    Alpha: [24x1 double]
                     Bias: -14.4149
         KernelParameters: [1x1 struct]
           BoxConstraints: [100x1 double]
          ConvergenceInfo: [1x1 struct]
          IsSupportVector: [100x1 logical]
                   Solver: 'SMO'


コマンド ウィンドウに、SVMModel は学習済みの ClassificationSVM 分類器およびプロパティ リストであることが示されます。SVMModel のプロパティを表示します。これにより、たとえばドット表記を使用してクラスの順序を確認できます。

classOrder = SVMModel.ClassNames
classOrder = 

    'versicolor'
    'virginica'

最初のクラス ('versicolor') は陰性のクラスで、2 番目のクラス ('virginica') は陽性のクラスです。'ClassNames' 名前と値のペアの引数を使用すると、学習中にクラスの順序を変更できます。

データの散布図をプロットし、サポート ベクトルを円で囲みます。

sv = SVMModel.SupportVectors;
figure
gscatter(X(:,1),X(:,2),y)
hold on
plot(sv(:,1),sv(:,2),'ko','MarkerSize',10)
legend('versicolor','virginica','Support Vector')
hold off

サポート ベクトルは、推定されたクラス境界の上または外側で発生する観測値です。

名前と値のペアの引数 'BoxConstraint' を使用して学習時のボックス制約を設定すると、境界 (および結果的にサポート ベクトルの数) を調整できます。

ionosphere データセットを読み込みます。

load ionosphere
rng(1); % For reproducibility

放射基底関数を使用して SVM 分類器に学習させます。本ソフトウェアを使用してカーネル関数のスケール値を検出します。予測子の標準化をお勧めします。

SVMModel = fitcsvm(X,Y,'Standardize',true,'KernelFunction','RBF',...
    'KernelScale','auto');

SVMModel は学習させた ClassificationSVM 分類器です。

SVM 分類器の交差検定を実行します。既定では、10 分割交差検定が使用されます。

CVSVMModel = crossval(SVMModel);

CVSVMModelClassificationPartitionedModel 交差検定分類器です。

標本外誤判別率を推定します。

classLoss = kfoldLoss(CVSVMModel)
classLoss =

    0.0484

一般化率は約 5% です。

フィッシャーのアヤメのデータセットを読み込みます。花弁の長さと幅を削除します。すべてのアヤメを同じクラスとして扱います。

load fisheriris
X = meas(:,1:2);
y = ones(size(X,1),1);

処理済みのデータセットを使用して SVM 分類器に学習させます。観測値のうち 5% が外れ値であるとします。予測子の標準化をお勧めします。

rng(1);
SVMModel = fitcsvm(X,y,'KernelScale','auto','Standardize',true,...
    'OutlierFraction',0.05);

SVMModel は学習させた ClassificationSVM 分類器です。既定では、1 クラス学習にはガウス カーネルが使用されます。

観測値と判定境界をプロットします。サポート ベクトルと外れ値の可能性がある値にフラグを設定します。

svInd = SVMModel.IsSupportVector;
h = 0.02; % Mesh grid step size
[X1,X2] = meshgrid(min(X(:,1)):h:max(X(:,1)),...
    min(X(:,2)):h:max(X(:,2)));
[~,score] = predict(SVMModel,[X1(:),X2(:)]);
scoreGrid = reshape(score,size(X1,1),size(X2,2));

figure
plot(X(:,1),X(:,2),'k.')
hold on
plot(X(svInd,1),X(svInd,2),'ro','MarkerSize',10)
contour(X1,X2,scoreGrid)
colorbar;
title('{\bf Iris Outlier Detection via One-Class SVM}')
xlabel('Sepal Length (cm)')
ylabel('Sepal Width (cm)')
legend('Observation','Support Vector')
hold off

外れ値と他のデータとの境界は、等高線値が 0 である場所で発生します。

交差検定データで負のスコアをもつ観測値のごく一部が、約 5% であることを確認します。

CVSVMModel = crossval(SVMModel);
[~,scorePred] = kfoldPredict(CVSVMModel);
outlierRate = mean(scorePred<0)
outlierRate =

    0.0467

フィッシャーのアヤメのデータセットを読み込みます。花弁の長さと幅を使用します。

load fisheriris
X = meas(:,3:4);
Y = species;

データの散布図を調べます。

figure
gscatter(X(:,1),X(:,2),Y);
h = gca;
lims = [h.XLim h.YLim]; % Extract the x and y axis limits
title('{\bf Scatter Diagram of Iris Measurements}');
xlabel('Petal Length (cm)');
ylabel('Petal Width (cm)');
legend('Location','Northwest');

3 つのクラスがあり、そのうち 1 つは他のクラスから線形分離可能です。

各クラスに対して、以下を実行します。

  1. 観測値がクラスのメンバーであるかどうかを示す論理ベクトル (indx) を作成します。

  2. 予測子データと indx を使用して SVM 分類器に学習させます。

  3. 分類器をセル配列のセルに保存します。

クラスの順序を定義することをお勧めします。

SVMModels = cell(3,1);
classes = unique(Y);
rng(1); % For reproducibility

for j = 1:numel(classes);
    indx = strcmp(Y,classes(j)); % Create binary classes for each classifier
    SVMModels{j} = fitcsvm(X,indx,'ClassNames',[false true],'Standardize',true,...
        'KernelFunction','rbf','BoxConstraint',1);
end

SVMModels は 3 行 1 列のセル配列です。ここで、各セルには ClassificationSVM 分類器が格納されています。各セルで、陽性のクラスはそれぞれ setosa、versicolor、virginica です。

プロット内で細かいグリッドを定義し、座標を学習データの分布からの新しい観測値として扱います。各分類器を使用して、この新しい測定値のスコアを推定します。

d = 0.02;
[x1Grid,x2Grid] = meshgrid(min(X(:,1)):d:max(X(:,1)),...
    min(X(:,2)):d:max(X(:,2)));
xGrid = [x1Grid(:),x2Grid(:)];
N = size(xGrid,1);
Scores = zeros(N,numel(classes));

for j = 1:numel(classes);
    [~,score] = predict(SVMModels{j},xGrid);
    Scores(:,j) = score(:,2); % Second column contains positive-class scores
end

Scores の各行には 3 つのスコアが格納されています。スコアが最大の要素のインデックスは、新しいクラスの観測値の所属先となる可能性が最も高いと思われるクラスのインデックスです。

新しいそれぞれの観測値を、当該の観測値に最大スコアを設定する分類器に関連付けます。

[~,maxScore] = max(Scores,[],2);

プロットの各領域の色は、対応する新しい観測値が属するクラスに基づいています。

figure
h(1:3) = gscatter(xGrid(:,1),xGrid(:,2),maxScore,...
    [0.1 0.5 0.5; 0.5 0.1 0.5; 0.5 0.5 0.1]);
hold on
h(4:6) = gscatter(X(:,1),X(:,2),Y);
title('{\bf Iris Classification Regions}');
xlabel('Petal Length (cm)');
ylabel('Petal Width (cm)');
legend(h,{'setosa region','versicolor region','virginica region',...
    'observed setosa','observed versicolor','observed virginica'},...
    'Location','Northwest');
axis tight
hold off

関連する例

入力引数

すべて折りたたむ

モデルを学習させるために使用する標本データ。テーブルとして指定します。TBL の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。オプションとして、TBL に応答変数用の列を 1 つ追加できます。複数列の変数と、文字列のセル配列ではないセル配列は使用できません。

TBL に応答変数が含まれている場合に TBL 内の他の変数をすべて予測子として使用するには、ResponseVarName を使用して応答変数を指定します。

TBL に応答変数が含まれている場合に TBL 内の他の変数の一部のみを予測子として使用するには、formula を使用して式の文字列を指定します。

TBL に応答変数が含まれていない場合は、Y を使用して応答変数を指定します。応答変数の長さと TBL の行数は、同じでなければなりません。

データ型: table

応答変数の名前。TBL に含まれている変数の名前として指定します。

ResponseVarName は、文字列として指定しなければなりません。たとえば、応答変数 YTBL.Y として格納されている場合、'Y' として指定します。そうでない場合、モデルを学習させるときに、TBL の列は Y を含めてすべて予測子として扱われます。

応答変数は、カテゴリカル配列、文字配列、論理ベクトル、数値ベクトル、または文字列のセル配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

ClassNames 名前と値のペアの引数を使用してクラスの順序を指定することをお勧めします。

モデルの学習で使用する応答変数と予測子変数。'Y~X1+X2+X3' という形式の文字列として指定します。この形式では、Y は応答変数を、X1X2 および X3 は予測子変数を表します。

モデルを学習させるための予測子として、TBL に含まれている変数の一部を指定するには、式の文字列を使用します。式の文字列を指定した場合、formula に現れない TBL の変数はモデルの学習に使用されません。

SVM 分類器に学習させる予測子データ。数値の行列として指定します。

X の各行は 1 件の観測 (インスタンスや例とも呼ばれます) に対応し、各列は 1 個の予測子に対応します。

Y の長さと X の行数は等しくなければなりません。

予測子の名前を X に表示される順序で指定するには、PredictorNames 名前と値のペアの引数を使用します。

データ型: double | single

SVM モデルに学習させるクラス ラベル。カテゴリカル配列か文字配列、論理ベクトル、数値ベクトルまたは文字列のセル配列として指定します。

  • Y に含まれるクラスは、2 種類を超えてはなりません。マルチクラス学習については、fitcecoc を参照してください。

  • Y が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

  • Y の長さと TBL または X の行数は、同じでなければなりません。

  • ClassNames 名前と値のペアの引数を使用したクラスの順序を指定することをお勧めします。

データ型: char | cell | categorical | logical | single | double

名前/値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'KFold',10,'Cost',[0 2;1 0],'ScoreTransform','sign' は、10 分割交差検定を実行し、偽陰性と比較して偽陽性に 2 倍のペナルティを適用し、関数 sign を使用してスコアを変換するよう指定します。

すべて折りたたむ

アルファ係数の初期推定値。'Alpha' と非負の実数値のベクトルで構成されるコンマ区切りのペアとして指定します。Alpha の長さは X の行数と等価でなければなりません。

  • Alpha の各要素は X の観測値に対応します。

  • AlphaNaN を格納できません。

  • Alpha と交差検定の名前と値のペアの引数 ('CrossVal''CVPartition''Holdout''KFold' または 'Leaveout') のいずれかを指定すると、エラーが返されます。

Y に欠損値が含まれている場合、欠損値に対応するすべての行を YX および Alpha から削除しなければなりません。つまり、次のように入力します。

idx = ~isundefined(categorical(Y));
Y = Y(idx,:);
X = X(idx,:);
alpha = alpha(idx);
そして、YX および alpha をそれぞれ応答値、予測子およびアルファの初期推定値として渡します。

既定値は以下のとおりです。

  • 1 クラス学習の場合: 0.5*ones(size(X,1),1)

  • 2 クラス学習の場合: zeros(size(X,1),1)

例: 'Alpha',0.1*ones(size(X,1),1)

データ型: double | single

ボックス制約'BoxConstraint' と正のスカラーで構成されるコンマ区切りペアとして指定します。

1 クラス学習の場合、ボックス制約は必ず 1 に設定されます。

BoxConstraintCostPriorStandardize および Weights の関係とアルゴリズム動作についての詳細は、アルゴリズムを参照してください。

例: 'BoxConstraint',100

データ型: double | single

キャッシュ サイズ。'CacheSize''maximal' または正のスカラーで構成されるコンマ区切りのペアとして指定します。

CacheSize'maximal' の場合、n 行 n 列 のグラム行列を保持できる十分なメモリが確保されます。

CacheSize が正のスカラーの場合、分類器の学習用に CacheSize メガバイトのメモリが確保されます。

例: 'CacheSize','maximal'

データ型: double | char | single

カテゴリカル予測子のリスト。'CategoricalPredictors' と次のいずれかから構成されるコンマ区切りのペアとして指定します。

  • 1 から p までのインデックスを使用する数値ベクトル。p は、X の列数を示します。

  • 長さ p の論理ベクトル。true のエントリは、対応する X の列がカテゴリカル変数であることを示します。

  • 文字列のセル配列。配列の各要素は、予測子変数の名前です。名前は PredictorNames プロパティの値と一致してなければなりません。

  • 'all'、すべての予測子がカテゴリカルであることを示します。

既定の設定では、予測子データが行列 (X) に格納されている場合、fitcsvm はどの予測子もカテゴリカルではないと見なします。予測子データがテーブル (TBL) にあり、その中に論理値、カテゴリカル値、または文字列のセル配列が含まれている場合、fitcsvm は変数がカテゴリカルであると見なします。

たとえば、次の構文は入力行列 X の列 1 および 3 がカテゴリカル変数を含むことを指定します。

例: 'CategoricalPredictors',[1,3]

データ型: single | double | logical | cell

学習に使用するクラスの名前。'ClassNames' とカテゴリカル配列、文字配列、論理ベクトル、数値ベクトル、または文字列のセル配列から構成されるコンマ区切りのペアとして指定します。ClassNames のデータ型は Y と同じでなければなりません。

ClassNames が文字配列の場合、各要素は配列の 1 つの "行" に対応しなければなりません。

ClassNames の使用目的は次のとおりです。

  • 学習時のクラスの順序を指定する。

  • クラスの順序に対応する入力または出力引数の次元の順序を指定する。たとえば、Cost の次元の順序や predict によって返される分類スコアの列の順序を指定するために ClassNames を使用します。

  • 学習用にクラスのサブセットを選択する。たとえば、Y に含まれているすべての異なるクラス名の集合が {'a','b','c'} であるとします。クラス 'a' および 'c' のみの観測値を使用してモデルに学習をさせるには、'ClassNames',{'a','c'} を指定します。

既定の設定は、Y に含まれているすべての異なるクラス名の集合です。

例: 'ClassNames',{'b','g'}

データ型: categorical | char | logical | single | double | cell

アルファ係数をクリップするためのフラグ。'ClipAlphas'true または false のいずれかから構成されるコンマ区切りのペアとして指定します。

観測値 j のアルファ係数が αj、観測値 j のボックス制約が Cj であるとします (j = 1,...,n)。n は学習標本のサイズです。

説明
true各反復で αj が 0 または Cj に近い場合、MATLAB® で αj がそれぞれ 0 または Cj に設定されます。
false最適化時に MATLAB でアルファ係数は変更されません。

MATLAB では、学習済みの SVM モデル オブジェクトの Alpha プロパティに最終的な α の値が格納されます。

ClipAlphas は、SMO と ISDA の収束に影響を与える可能性があります。

例: 'ClipAlphas',false

データ型: logical

誤判別のコスト。'Cost' と正方行列または構造体から構成されるコンマ区切りペアとして指定します。指定する項目によって、内容は次のように変わります。

  • 正方行列 Cost の場合、Cost(i,j) は真のクラスが i である 1 つの点をクラス j に分類するコストです (つまり、各行は真のクラスに、各列は予測クラスに対応します)。Cost の対応する行および列についてクラスの順序を指定するには、名前と値のペアの引数 ClassNames をさらに指定します。

  • 構造体 S の場合、次の 2 つのフィールドが必要となります。

    • S.ClassNames: Y と同じデータ型のクラス名を表す変数を含む。

    • S.ClassificationCosts。行と列の順序が S.ClassNames と同じコスト行列。

2 クラス学習の場合、コスト行列を指定すると、そのコスト行列で指定されているペナルティが組み込まれ、事前確率が更新されます。その後、コスト行列は既定の状態にリセットされます。BoxConstraintCostPriorStandardize および Weights の関係とアルゴリズム動作についての詳細は、アルゴリズムを参照してください。

既定値は以下のとおりです。

  • 1 クラス学習では、Cost = 0 です。

  • 2 クラス学習では、i ~= j の場合は Cost(i,j) = 1i = j の場合は Cost(i,j) = 0 です。

例: 'Cost',[0,1;2,0]

データ型: double | single | struct

交差検定決定木を学習させるためのフラグ。'Crossval' と文字列で構成されるコンマ区切りのペアとして指定します。

'on' を指定すると、10 の分割を使用して交差検定分類器の学習が実行されます。

'CVPartition''Holdout''KFold' または 'Leaveout' 名前と値のペアの引数のいずれかを使用してこの交差検定の設定をオーバーライドできます。交差検定対象モデルを作成するときに使用できる交差検定の名前と値のペアの引数は、一度に 1 つだけです。

または、crossvalSVMModel を渡すことにより、後で交差検定を実行します。

例: 'Crossval','on'

データ型: char

交差検定分割。'CVPartition'cvpartition により作成された cvpartition 分割オブジェクトで構成されるコンマ区切りのペアとして指定します。分割オブジェクトは交差検定のタイプおよび学習と検証セットのインデックス付けを指定します。

交差検定対象モデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold''Leaveout' のいずれかのみです。

SMO (逐次最小最適化) または ISDA (反復単一データ アルゴリズム) により取得された上位の違反値と下位の違反値の間に存在する、勾配差分の許容誤差。'DeltaGradientTolerance' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

DeltaGradientTolerance0 の場合、最適化収束を確認するために、勾配差分の許容誤差を使用しません。

既定値は以下のとおりです。

  • ソルバーが SMO の場合 (たとえば、'Solver','SMO' を設定した場合など) は 1e-3

  • ソルバーが ISDA の場合 (たとえば、'Solver','ISDA' を設定した場合など) は 0

例: 'DeltaGapTolerance',1e-2

データ型: double | single

SMO または ISDA により取得された実行可能性の差異の許容誤差。'GapTolerance' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

GapTolerance0 の場合、最適化収束の確認には、実行可能性の差異の許容誤差を使用しません。

例: 'GapTolerance',1e-2

データ型: double | single

ホールドアウト検定に使用されるデータの比率。'Holdout' と、(0,1) の範囲内のスカラー値から成るコンマ区切りのペアとして指定します。'Holdout',p を指定すると、次が実行されます。

  1. p*100% のデータを検証データとして無作為に予約し、残りのデータを使用してモデルを学習させる

  2. コンパクトな学習済みモデルを交差検定対象モデルの Trained プロパティに格納する。

交差検定対象モデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold''Leaveout' のいずれかのみです。

例: 'Holdout',0.1

データ型: double | single

数値最適化反復の最大回数。'IterationLimit' と正の整数値で構成されるコンマ区切りのペアとして指定します。

最適化ルーチンの収束が正常に行われたかにかかわらず、学習させた分類器が返されます。

例: 'IterationLimit',1e8

データ型: double | single

グラム行列の計算に使用するカーネル関数。'KernelFunction' と文字列で構成されるコンマ区切りのペアとして指定します。

次の表は、カーネル関数の設定に使用できるオプションの一覧です。

説明
'gaussian' または 'rbf'ガウスまたは放射基底関数 (RBF) カーネル (1 クラス学習の場合の既定値)

G(x1,x2)=exp(x1x22)

'linear'線形カーネル (2 クラス学習の場合の既定値)

G(x1,x2)=x1x2

'polynomial'多項式カーネル。'PolynomialOrder',polyOrder を使用して多項式カーネルの次数 (polyOrder) を指定します。

G(x1,x2)=(1+x1x2)p

独自のカーネル関数を設定することもできます。たとえば、'KernelFunction','kernel' を設定すると kernel が設定されます。この kernel は次の形式でなければなりません。

function G = kernel(U,V)
ここで、

  • U は、m 行 p 列の行列です。

  • V は、n 行 p 列の行列です。

  • G は、m 行 n 列で構成される、UV の行のグラム行列です。

kernel.m は、MATLAB パス上になければなりません。

カーネル関数には一般的な名前を使用しないようにしてください。たとえば、シグモイド カーネル関数には 'sigmoid' ではなく 'mysigmoid' などの名前を使用します。

例: 'KernelFunction','gaussian'

データ型: char

カーネル オフセット パラメーター。'KernelOffset' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

KernelOffsetグラム行列の各要素に追加されます。

既定値は以下のとおりです。

  • ソルバーが SMO の場合 (たとえば、'Solver','SMO' を設定した場合など) は 0

  • ソルバーが ISDA の場合 (たとえば、'Solver','ISDA' を設定した場合など) は 0.1

例: 'KernelOffset',0

データ型: double | single

カーネル スケール パラメーター。'KernelScale' と、'auto' または正のスカラーで構成される、コンマ区切りのペアとして指定します。

  • KernelFunction'gaussian' ('rbf')、'linear''polymonial' のいずれかである場合、予測子行列 X のすべての要素が KernelScale の値で除算されます。その後、適切なカーネル ノルムが適用され、グラム行列が計算されます。

  • 'auto' を指定すると、ヒューリスティックな手順によりスケール値が選択されます。ヒューリスティックな手順では副標本を使用します。そのため、結果を再現するには、分類器の学習の前に rng を使用して乱数シードを設定します。

  • KernelScale を指定し、さらに独自のカーネル関数を設定すると (たとえば、'KernelFunction','kernel' を使用して kernel を設定すると)、エラーが表示されます。kernel の内部でスケーリングを適用しなければなりません。

例: 'KernelScale',''auto'

データ型: double | single | char

交差検定分類器で使用する分割の数。'KFold' と 1 より大きい正の整数から構成されるコンマ区切りのペアとして指定します。たとえば、'KFold',k を指定した場合、以下が行われます。

  1. データを無作為に k 個のセットに分割する

  2. 各セットについて、そのセットを検証データとして予約し、他の k – 1 個のセットを使用してモデルを学習させる

  3. k 個のコンパクトな学習済みモデルを、交差検定対象モデルの Trained プロパティに含まれている k 行 1 列のセル ベクトルのセルに格納する。

交差検定対象モデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold''Leaveout' のいずれかのみです。

例: 'KFold',8

データ型: single | double

KKT (カルーシュ・キューン・タッカー) 相補性条件の違反許容誤差。'KKTTolerance' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。

KKTTolerance0 の場合、最適化収束の確認に実行可能性の KKT 相補性条件の違反許容誤差は使用されません。

既定値は以下のとおりです。

  • ソルバーが SMO の場合 (たとえば、'Solver','SMO' を設定した場合など) は 0

  • ソルバーが ISDA の場合 (たとえば、'Solver','ISDA' を設定した場合など) は 1e-3

例: 'KKTTolerance',1e-2

データ型: double | single

Leave-one-out 法の交差検定のフラグ。'Leaveout''on' または 'off' で構成されるコンマ区切りのペアとして指定します。'Leaveout','on' を指定する場合、n 個の各観察に対して、次が実行されます。ここで、n は size(Mdl.X,1) です。

  1. 観測は検証データとして予約され、モデルは他の n – 1 個の観測を使用して学習させる

  2. n 個のコンパクトな学習済みモデルを、交差検定対象モデルの Trained プロパティに含まれている n 行 1 列のセル ベクトルのセルに格納する。

交差検定対象モデルを作成するために使用できるオプションは、'CVPartition''Holdout''KFold''Leaveout' のいずれかのみです。

例: 'Leaveout','on'

データ型: char

1 クラス学習の ν パラメーター。'Nu' と正のスカラーで構成されるコンマ区切りのペアとして指定します。Nu0 より大きく、1 以下でなければなりません。

Nu の設定により、学習例の大部分を陽性のクラスにするか、スコア関数の重みを最小限にするかのバランスを制御します。

例: 'Nu',0.25

データ型: double | single

最適化診断メッセージ出力の反復回数。'NumPrint' と非負の整数で構成されるコンマ区切りのペアとして指定します。

'Verbose',1'NumPrint',numprint を使用すると、numprint 回反復するたびに SMO と ISDA からのすべての最適化診断メッセージがコマンド ウィンドウに表示されます。

例: 'NumPrint',500

データ型: double | single

学習データで想定される外れ値の割合。'OutlierFraction' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。OutlierFraction0 以上 1 未満でなければなりません。

'OutlierFraction',outlierfraction (outlierfraction は 0 より大きい値) を設定すると、次のようになります。

  • 2 クラス学習では "ロバスト学習" が行われます。この方式では、最適化アルゴリズムが収束すると、観測値のうち 100*outlierfraction% が削除されます。削除された観測値は、勾配の大きいものに対応します。

  • 1 クラス学習では、学習セットに負のスコアをもつ観測 outlierfraction など、適切なバイアス項が検出されます。

例: 'OutlierFraction',0.01

データ型: double | single

多項式カーネル関数の次数。'PolynomialOrder' と正の整数から成るコンマ区切りのペアとして指定されます。

'PolynomialOrder' が設定されていて、KernelFunction'polynomial' でない場合、エラーが表示されます。

例: 'PolynomialOrder',2

データ型: double | single

予測子変数名。'PredictorNames' と、予測子変数名を含む文字列のセル配列で構成される、コンマ区切りのペアとして指定されます。予測子変数名は X と同じ順序で配列されます。

予測子をテーブル (TBL) として指定する場合、PredictorNamesTBL に含まれている変数名のサブセットでなければなりません。この場合、PredictorNames に含まれている変数のみがモデルの学習に使用されます。formula を使用してモデルを指定する場合、名前と値のペア PredictorNames は使用できません。

例: 'PredictorNames',{'PedalWidth','PedalLength'}

データ型: cell

各クラスの事前確率。'Prior' と文字列、数値ベクトル、構造体のいずれかで構成されるコンマ区切りのペアとして指定します。

次の表は、事前確率の設定に使用できるオプションの一覧です。

説明
'empirical'クラスの事前確率は、Y のクラスの相対的頻度です。
'uniform'クラスの事前確率はいずれも 1/K (K はクラス数) となります。
数値ベクトル各要素はクラスの事前確率です。SVMModel.ClassNames に従って要素を並べ替えるか、ClassNames 名前と値のペアの引数を使用して順序を指定します。要素は合計が 1 になるように正規化されます。
構造体

構造体 S には 2 つのフィールドがあります。

  • S.ClassNames: Y と同じ型の変数のクラス名が格納されます。

  • S.ClassProbs: 対応する事前確率のベクトルが格納されます。要素は合計が 1 になるように正規化されます。

2 クラス学習の場合、コスト行列を指定すると、そのコスト行列で指定されているペナルティが組み込まれ、事前確率が更新されます。BoxConstraintCostPriorStandardize および Weights の関係とアルゴリズム動作についての詳細は、アルゴリズムを参照してください。

例: struct('ClassNames',{{'setosa','versicolor','virginica'}},'ClassProbs',1:3)

データ型: char | double | single | struct

応答変数名。'ResponseName' と、応答変数 Y の名前が格納された文字列で構成される、コンマ区切りのペアとして指定します。

入力引数 ResponseVarName または formula を使用した場合、この名前と値のペアは無効になります。

例: 'ResponseName','IrisType'

データ型: char

スコア変換関数。'ScoreTransform' と文字列または関数ハンドルで構成されるコンマ区切りペアとして指定します。

  • 値が文字列の場合、この文字列が組み込み関数に対応していなければなりません。次の表は、使用可能な組み込み関数の一覧です。

    文字列
    'doublelogit'1/(1 + e–2x)
    'invlogit'log(x / (1–x))
    'ismax'最大のスコアをもつクラスのスコアを 1 に設定し、それ以外のクラスのスコアを 0 に設定します。
    'logit'1/(1 + e–x)
    'none' または 'identity'x (変換なし)
    'sign'x < 0 のとき –1
    x = 0 のとき 0
    x > 0 のとき 1
    'symmetric'2x – 1
    'symmetriclogit'2/(1 + e–x) – 1
    'symmetricismax'最大のスコアをもつクラスのスコアを 1 に設定し、それ以外のクラスのスコアを -1 に設定します。

  • MATLAB 関数やユーザー定義関数の場合は、関数ハンドルを入力します。

    SVMModel.ScoreTransform = @function;

    function は、行列 (元のスコア) を受け入れて同じサイズの行列 (変換したスコア) を返さなければなりません。

例: 'ScoreTransform','sign'

データ型: char | function_handle

アクティブ セットから非アクティブ セットへの観測値が移動する反復回数。'ShrinkagePeriod' と非負の整数で構成されるコンマ区切りのペアとして指定します。

'ShrinkagePeriod',0 を設定すると、アクティブ セットは縮小されません。

例: 'ShrinkagePeriod',1000

データ型: double | single

最適化ルーチン。文字列として指定します。

次の表は、最適化ルーチンに使用できるオプションの一覧です。

説明
'ISDA'反復単一データ アルゴリズム ([4] 参照)
'L1QP'quadprog を使用して二次計画法による L1 ソフト マージン最小化を実装します。このオプションには Optimization Toolbox™ ライセンスが必要です。詳細は、「二次計画法の定義」を参照してください。
'SMO'逐次最小最適化 ([2] 参照)

既定値は以下のとおりです。

  • 'OutlierFraction' を 2 クラス学習用の正の値に指定した場合は 'ISDA'

  • それ以外の場合は 'SMO'

例: 'Solver','ISDA'

データ型: char

予測子を標準化するためのフラグ。'Standardize' と、true (1) または false (0) のいずれかで構成される、コンマ区切りのペアとして指定します。

'Standardize',true を設定した場合、次のようになります。

  • MATLAB で列の加重平均と標準偏差によって予測子データ (X) の各列がそれぞれセンタリングおよびスケーリングされます (重みを付けた標準化についての詳細はアルゴリズムを参照してください)。MATLAB では、カテゴリカル予測子用に生成されたダミー変数の列に含まれているデータは標準化されません。

  • MATLAB では標準化した予測子行列を使用して分類器を学習させますが、分類器の X プロパティには標準化されていないデータが格納されます。

例: 'Standardize',true

データ型: logical

詳細レベル。'Verbose' と、012 のいずれかで構成される、コンマ区切りのペアとして指定します。Verbose により、コマンド ウィンドウに表示されて構造体として SVMModel.ConvergenceInfo.History に保存される最適化情報の量が制御されます。

次の表は、使用できる詳細レベル オプションの一覧です。

説明
0収束情報の表示や保存は行われません。
1診断メッセージが表示され、numprint 回の反復ごとに収束条件が保存されます。ここで、numprint は名前と値のペアの引数 'NumPrint' の値です。
2診断メッセージが表示され、1 回の反復ごとに収束条件が保存されます。

例: 'Verbose',1

データ型: double | single

観測値の重み。'Weights' と数値ベクトルで構成されるコンマ区切りのペアとして指定します。X または TBL の各行に含まれている観測値は、Weights の対応する値で重み付けされます。Weights のサイズは、X または TBL の行数と等しくなければなりません。

入力データをテーブル TBL として指定した場合、Weights は数値ベクトルが含まれている TBL 内の変数の名前にすることができます。この場合、Weights は変数名の文字列として指定しなければなりません。たとえば、重みベクトル WTBL.W として格納されている場合、'W' として指定します。そうでない場合、モデルを学習させるときに、TBL の列は W を含めてすべて予測子として扱われます。

合計が各クラスの事前確率の値と等しくなるように Weights が正規化されます。BoxConstraintCostPriorStandardize および Weights の関係とアルゴリズム動作についての詳細は、アルゴリズムを参照してください。

データ型: double | single

出力引数

すべて折りたたむ

学習させた分類器。ClassificationSVM 分類器または ClassificationPartitionedModel 交差検定分類器として返します。

以下の各名前と値のペアの引数のいずれかを設定する場合、SVMModelClassificationPartitionedModel 交差検定分類器となります。KFoldHoldoutLeaveoutCrossVal または CVPartition。それ以外の場合、SVMModelClassificationSVM 分類器です。

SVMModel のプロパティを参照するには、ドット表記を使用します。たとえば、コマンド ウィンドウに SVMModel.Alpha と入力すると、学習させたラグランジュ乗数が表示されます。

制限

  • fitcsvm は、1 クラスまたは 2 クラスの学習アプリケーション用に SVM 分類器を学習させます。クラスが 3 つ以上あるデータを使用して SVM 分類器を学習させるには、fitcecoc を使用します。

詳細

すべて折りたたむ

ボックス制約

マージンに違反している観測に課せられる最大ペナルティを制御し、過適合防止 (正則化) を促進するためのパラメーター。

ボックス制約の値を大きくすると、SVM 分類器が割り当てるサポート ベクトルは少なくなります。ただし、ボックス制約の値を大きくすると、学習時間が長くなる場合があります。

グラム行列

n 個のベクトルの組 {x1,..,xn; xj ∊ Rp} のグラム行列とは、n 行 n 列の行列で、要素 (j,k) は G(xj,xk) = <ϕ(xj),ϕ(xk)> (カーネル関数 ϕ を使用して変換された予測子の内積) として定義されます。

非線形 SVM の場合、アルゴリズムにより予測子行列の列を使用してグラム行列が形成されます。双対形式化により、予測子の内積が、形成されるグラム行列の対応する要素に置き換えられます (「カーネル トリック」と呼ばれます)。その後、非線形 SVM は変換された予測子空間で分離超平面を検出します。

カルーシュ・キューン・タッカー相補性条件

KKT 相補性条件は、最適な非線形計画法の解決に必要な最適化制約です。

SVM では、すべての j = 1,...,n についてKKT 相補性条件は次のようになります。

{αj[yjf(xj)1+ξj]=0ξj(Cαj)=0

ここで、f(xj)=ϕ(xj)β+b, であり、ϕ はカーネル関数 (「グラム行列」を参照)、ξj はスラック変数です。クラスが完全に分離可能な場合、すべての j = 1,...,n に対して ξj = 0 となります。

1 クラス学習

1 クラス学習 (教師なし SVM) は、高次元の予測子空間 (元の予測子空間ではありません) からデータを分離するためのもので、外れ値の検出に使用するアルゴリズムです。

このアルゴリズムは「バイナリ分類の SVM」 のアルゴリズムと類似しています。目的は、α1,...,αn に関して次の双対式を最小化することです。

0.5jkαjαkG(xj,xk)

これには、すべての j = 1,...,n について 0αj1 と次の式を満たすという条件があります。

αj=nν

G(xj,xk) は、「グラム行列」の要素 (j,k) です。

ν の値が小さいとサポート ベクトルは少なくなり、そのため判定境界は起伏が少なく柔軟性が低いものとなります。ν の値が大きいとサポート ベクトルは多くなり、そのため判定境界は起伏が多く柔軟性が高いものとなります。ν の最適値は、データの複雑さを取得できるだけの大きさがあり、過学習が発生しない程度に小さい値です。また、0 < ν ≤ 1 です。

詳細は、「[5]」を参照してください。

サポート ベクトル

サポート ベクトルは、α1,...,αn の厳密に正の推定値に対応する観測値です。

特定の学習に対して生成されるサポート ベクトルが少ない SVM 分類器の方が推奨されます。

バイナリ分類のサポート ベクター マシン

SVM バイナリ分類アルゴリズムでは、データを 2 つのクラスに分離する最適超平面が検索されます。クラスが分離可能な場合、最適超平面は周囲の "マージン" (観測値がない領域) を最大化します。これにより、陽性のクラスと陰性のクラスの境界が作成されます。クラスが分離可能でない場合でも目的は同じですが、クラスの境界の誤った側にあるすべての観測のマージンの長さに対し、アルゴリズムによりペナルティが課されます。

線形 SVM スコア関数は次のようになります。

f(x)=xβ+b,

ここで

  • x は観測値です (X の行に対応します)。

  • ベクトル β には超平面に直交するベクトルを定義する係数 (SVMModel.Beta に対応) が含まれています。分離可能なデータの場合、最適なマージンの長さは 2/β. です。

  • b は (SVMModel.Bias に対応する) バイアス項です。

特定の係数に対する f(x) の根により超平面が定義されます。特定の超平面について、f(z) は点 z から超平面までの距離です。

このアルゴリズムでは、陽性 (y = 1) のクラスと陰性 (y = -1) のクラスを分離したままマージンの最大長を求めます。したがって、

  • 分離可能なクラスの場合、目的は β および b に関して β を最小化することです。これには、すべての j = 1,..,n について yjf(xj) ≥ 1 という条件があります。これが分離可能クラスの "主" 問題の定式化です。

  • 分離可能でないクラスの場合、このアルゴリズムではスラック変数 (ξj) を使用して、クラスのマージン境界を超える観測値の目的関数にペナルティを課します。観測値がクラスのマージン境界を超えない場合は ξj = 0、そうでない場合は ξj ≥ 0 です。

    目的は、β、b および ξj に関して 0.5β2+Cξj を最小化することです。これには、すべての j = 1,..,n および正のスカラー「ボックス制約」 C について yjf(xj)1ξj および ξj0 という条件があります。これは分離不可能クラスの主問題の定式化です。

このアルゴリズムでは、ラグランジュ乗数法を使用して目的関数を最適化します。これにより、n 個の係数 α1、...、αn (SVMModel.Alpha に対応) が導入されます。線形 SVM の双対形式化には、次のようなものがあります。

  • 分離可能なクラスの場合、すべての j = 1,...,n について αjyj=0, αj ≥ 0 という条件と「カルーシュ・キューン・タッカー相補性条件」で、α1,...,αn に関して次の式を最小化します。

    0.5j=1nk=1nαjαkyjykxjxkj=1nαj

  • 分離可能でないクラスの場合、目的は分離可能なクラスの場合と同じですが、すべての j = 1,..,n について 0αjC という条件が加わります。

生成されるスコア関数は次のようになります。

f^(x)=j=1nα^jyjxxj+b^.

b^ はバイアスの推定値、α^j はベクトル α^ の j 番目の推定値です (j = 1,...,n)。このように記述すると、主問題を定式化した結果、スコア関数は β の推定値の影響を受けなくなります。

SVM アルゴリズムでは、sign(f^(z)). を使用して新しい観測値 z を分類します。

場合によっては、クラスを分離する非線形境界が存在します。"非線形 SVM" は変換済み予測子空間で、最適な分離超平面を検索します。

非線形 SVM の双対問題は、α1,...,αn に関して次のように定式化されます。

0.5j=1nk=1nαjαkyjykG(xj,xk)j=1nαj

これには、すべての j = 1,..,n について αjyj=0, 0αjC という条件と KKT 相補性条件が適用されます。G(xk,xj) は「グラム行列」の要素です。生成されるスコア関数は次のようになります。

f^(x)=j=1nα^jyjG(x,xj)+b^.

詳細は、「サポート ベクター マシンについて」「[1]」および「[3]」を参照してください。

ヒント

  • データセットが大規模でない限り、常に予測子を標準化してください (Standardize を参照してください)。標準化を行うと、予測子を測定するスケールの影響を受けなくなります。

  • 名前と値のペアの引数 KFold を使用して交差検定を行うことをお勧めします。この交差検定の結果により、SVM 分類器の一般化の精度がわかります。

  • 各予測子変数の範囲が大きく異なる場合は、名前と値のペアの引数 Standardize を使用して予測子を標準化することを検討してください。

  • 1 クラス学習では、以下のようになります。

    • 名前と値のペアの引数 'Alpha' で既定の設定を使用すると、学習時間が長くなる場合があります。学習時間を短縮するには、主に 0 で構成されているベクトルに Alpha を設定します。

    • 名前と値のペアの引数 Nu0 に近い値に設定すると、サポート ベクトルの数は少なくなり、そのため判定境界は起伏が少なく柔軟性が低いものになります。

  • SVM 分類器では、サポート ベクトルの密度が低い方が望ましい状態です。サポート ベクトルの数を少なくするには、BoxConstraint を大きい値に設定します。この場合、学習時間も長くなります。

  • データセットが大きい場合、キャッシュ サイズを最適化してください。この処理は学習速度に大きく影響します。

  • 設定されたサポート ベクトルの数が学習セットの観測値の数よりはるかに少ない場合、名前と値のペアの引数 'ShrinkagePeriod' を使用してアクティブ セットを縮小し、収束速度を大幅に上げることができます。'ShrinkagePeriod',1000 の使用をお勧めします。

アルゴリズム

  • NaN<undefined> および空の文字列 ('') は、欠損値を示します。fitcsvm は、欠損応答に対応するデータ行全体を削除します。重みの合計を計算するときに (以下の項目を参照)、fitcsvm は欠損している予測子の観測値を無視します。これにより、平衡なクラスの問題で不平衡な事前確率が発生する可能性があります。したがって、観測値のボックス制約が BoxConstraint に等しくならない可能性があります。

  • fitcsvm は、重みまたは事前確率がゼロの観測値を削除します。

  • 2 クラス学習でコスト行列 C (Cost を参照) を指定した場合、C で表されているペナルティを組み込むことにより、クラスの事前確率 p (Prior を参照) が pc に更新されます。

    具体的には、fitcsvm は以下を行います。

    1. 次の計算を行います。pc=pC.

    2. 更新された事前確率の合計が 1 になるように pc* を正規化します。

      pc=1j=1Kpc,jpc.

      K はクラスの数です。

    3. コスト行列を既定値にリセットします。

      C=[0110].

    4. 事前確率がゼロのクラスに対応する学習データから観測値を削除します。

  • 2 クラス学習の場合、fitcsvm は合計が 1 になるようにすべての観測値の重み (Weights を参照) を正規化します。その後、正規化された重みを再度正規化し、観測値が属しているクラスの更新後の事前確率に重みの合計が等しくなるようにします。つまり、クラス k の観測値 j について、重みの合計は次のようになります。

    wj=wjjClass kwjpc,k.

    ここで、wj は観測値 j の正規化された重み、pc,k はクラス k の更新された事前確率 (前の項目を参照) です。

  • 2 クラス学習の場合、fitcsvm は学習データの各観測値にボックス制約を割り当てます。観測値 j のボックス制約の式は、次のようになります。

    Cj=nC0wj.

    ここで、n は学習標本のサイズ、C0 は初期のボックス制約 (BoxConstraint を参照)、wj は観測値 j の重みの合計 (前の項目を参照) です。

  • 'Cost''Prior' または 'Weights' のいずれかと 'Standardize',true を設定した場合、fitcsvm は対応する重みの平均および重み付き標準偏差を使用して予測子を標準化します。つまり、fitcsvm は次の式を使用して予測子 j (xj) を標準化します。

    xj=xjμjσj.

    ここで

    • μj=1kwkkwkxjk.

    • xjk は、予測子 j (列) の観測値 k (行)。

    • (σj)2=v1v12v2kwk(xjkμj)2.

    • v1=jwj.

    • v2=j(wj)2.

  • op は学習データで想定される外れ値の割合です。fitcsvm を使用して SVM 分類器を学習させる際に 'OutlierFraction',op を使用すると、次のようになります。

    • 1 クラス学習では、バイアス項の学習により、学習データの観測値のうち 100op% が負のスコアをもつようになります。

    • 2 クラス学習では "ロバスト学習" が行われます。この方式では、最適化アルゴリズムが収束すると、観測値のうち 100op% の削除が試行されます。削除された観測値は、勾配の大きいものに対応します。

  • 予測子データにカテゴリカル変数が含まれている場合、一般にこれらの変数について完全なダミー エンコードが使用されます。各カテゴリカル変数の各レベルについて、1 つずつダミー変数が作成されます。

    • PredictorNames プロパティには、元の予測子変数名のそれぞれについて 1 つずつ要素が格納されます。たとえば、3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、PredictorNames は元の予測子変数名が含まれている 1 行 3 列の文字列のセル配列になります。

    • ExpandedPredictorNames プロパティには、ダミー変数を含む予測子変数のそれぞれについて 1 つずつ要素が格納されます。たとえば、3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、ExpandedPredictorNames は予測子変数および新しいダミー変数の名前が含まれている 1 行 5 列の文字列のセル配列になります。

    • 同様に、Beta プロパティには、ダミー変数を含む各予測子について 1 つずつベータ係数が格納されます。

    • SupportVectors プロパティには、ダミー変数を含むサポート ベクトルの予測子の値が格納されます。たとえば、m 個のサポート ベクトルと 3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数であるとします。この場合、SupportVectors は n 行 5 列の行列になります。

    • X プロパティには、はじめに入力した状態で学習データが格納されます。ダミー変数は含まれません。入力がテーブルの場合、X には予測子として使用した列のみが格納されます。

  • テーブルで予測子を指定した場合、いずれかの変数に順序付きのカテゴリが含まれていると、これらの変数について順序付きエンコードが使用されます。

    • k 個の順序付きレベルが変数に含まれている場合、k – 1 個のダミー変数が作成されます。j 番目のダミー変数は、j までのレベルについては -1、j + 1 から k までのレベルについては +1 になります。

    • ExpandedPredictorNames プロパティに格納されるダミー変数の名前は 1 番目のレベルを示し、値は +1 になります。レベル 2, 3, ..., k の名前を含む k – 1 個の追加予測子名がダミー変数について格納されます。

  • どのソルバーも L1 ソフト マージン最小化を実行します。

  • fitcsvmsvmtrain は最適化に SMO アルゴリズムを使用します。2 つの関数の間で SMO の実行方式は異なりますが、数値を調べると結果には明確な一致があることがわかります。

  • 1 クラス学習の場合、次の条件を満たすラグランジュ乗数 α1,...,αn が推定されます。

    j=1nαj=nν.

参照

[1] Christianini, N., and J. C. Shawe-Taylor. An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge, UK: Cambridge University Press, 2000.

[2] Fan, R.-E., P.-H. Chen, and C.-J. Lin. “Working set selection using second order information for training support vector machines.” Journal of Machine Learning Research, Vol 6, 2005, pp. 1889–1918.

[3] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.

[4] Kecman V., T. -M. Huang, and M. Vogt. “Iterative Single Data Algorithm for Training Kernel Machines from Huge Data Sets: Theory and Performance.” In Support Vector Machines: Theory and Applications. Edited by Lipo Wang, 255–274. Berlin: Springer-Verlag, 2005.

[5] Scholkopf, B., J. C. Platt, J. C. Shawe-Taylor, A. J. Smola, and R. C. Williamson. “Estimating the Support of a High-Dimensional Distribution.” Neural Comput., Vol. 13, Number 7, 2001, pp. 1443–1471.

[6] Scholkopf, B., and A. Smola. Learning with Kernels: Support Vector Machines, Regularization, Optimization and Beyond, Adaptive Computation and Machine Learning. Cambridge, MA: The MIT Press, 2002.

R2014a で導入

この情報は役に立ちましたか?