ドキュメンテーション

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

ClassificationSVM

1 クラスおよびバイナリ分類用のサポート ベクター マシン (SVM)

説明

ClassificationSVM は 1 クラスおよび 2 クラス学習用のサポート ベクター マシン (SVM) 分類器です。学習済みの ClassificationSVM 分類器には、学習データ、パラメーター値、事前確率、サポート ベクターおよびアルゴリズムの実装情報が格納されます。これらの分類器を使用して、スコアから事後確率に変換する関数のあてはめ (fitPosterior を参照) や新しいデータに対するラベルの予測 (predict を参照) などのタスクを実行できます。

作成

ClassificationSVM オブジェクトの作成には fitcsvm を使用します。

プロパティ

すべて展開する

SVM のプロパティ

このプロパティは読み取り専用です。

学習済み分類器の係数。s 行 1 列の数値ベクトルを指定します。s は学習済み分類器に含まれているサポート ベクターの個数 (sum(Mdl.IsSupportVector)) です。

Alpha には、双対問題に対する学習済み分類器の係数、つまり推定したラグランジュ乗数が格納されます。fitcsvm の名前と値のペアの引数 RemoveDuplicates を使用して重複を削除した場合、サポート ベクターである重複する観測値の特定の集合に対して、集合全体に対応する 1 つの係数が Alpha に格納されます。つまり、MATLAB® は、ある非ゼロ係数を重複集合内の 1 つの観測値によるものとし、係数 0 は集合内の他のすべての重複観測値によるものとします。

データ型: single | double

このプロパティは読み取り専用です。

線形予測子の係数。数値ベクトルを指定します。Beta の長さは、モデルの学習に使用する予測子の個数と同じです。

MATLAB では、完全なダミー エンコードを使用して予測子データ内のカテゴリカル変数が拡張されます。つまり、MATLAB では各カテゴリカル変数の各レベルについて 1 つずつダミー変数が作成されます。Beta には、ダミー変数を含む各予測子変数について 1 つずつ値が格納されます。たとえば、3 つの予測子があり、そのうちの 1 つは 3 つのレベルがあるカテゴリカル変数である場合、Beta は 5 つの値が含まれている数値ベクトルになります。

KernelParameters.Function'linear' の場合、観測値 x の分類スコアは次のようになります。

f(x)=(x/s)β+b.

Mdl では、β、b および s がそれぞれ BetaBias および KernelParameters.Scale プロパティに格納されます。

分類スコアを手動で推定するには、はじめに、学習時に適用したすべての変換を予測子データに適用しなければなりません。具体的には、fitcsvm を使用するときに 'Standardize',true を指定した場合は、平均 Mdl.Mu と標準偏差 Mdl.Sigma を使用して予測子データを手動で標準化してから、結果を Mdl.KernelParameters.Scale 内のカーネル スケールで除算しなければなりません。

resubPredictpredict など、すべての SVM 関数で、必要な変換の適用は推定の前に行われます。

KernelParameters.Function'linear' ではない場合、Beta は空 ([]) になります。

データ型: single | double

このプロパティは読み取り専用です。

バイアス項。スカラーを指定します。

データ型: single | double

このプロパティは読み取り専用です。

ボックス制約。ボックス制約が含まれている n 行 1 列の数値ベクトルを指定します。n は学習データ内の観測値の個数 (NumObservations プロパティを参照) です。

fitcsvm の名前と値のペアの引数 RemoveDuplicates を使用して重複を削除した場合、重複する観測値の特定の集合に対して MATLAB はボックス制約を合計し、この合計が 1 つの観測値からのものと見なします。MATLAB は、0 のボックス制約が集合内の他のすべての観測値によるものと見なします。

データ型: single | double

このプロパティは読み取り専用です。

キャッシュ情報。構造体配列を指定します。キャッシュ情報には、次の表に記載されているフィールドが含まれます。

フィールド説明
サイズ

SVM 分類器に学習をさせるために予約されているキャッシュのサイズ (MB 単位)。詳細については、'CacheSize' を参照してください。

アルゴリズム

最適化時に使用されるキャッシュ アルゴリズム。現在、使用可能なキャッシュ アルゴリズムは Queue のみです。キャッシュ アルゴリズムは設定できません。

CacheInfo のフィールドを表示するには、ドット表記を使用します。たとえば、Mdl.CacheInfo.Size はキャッシュ サイズの値を表示します。

データ型: 構造体

このプロパティは読み取り専用です。

サポート ベクターのインジケーター。予測子データ行列内の対応する観測値がサポート ベクターであるかどうかを示す n 行 1 列の logical ベクトルを指定します。n は学習データ内の観測値の個数 (NumObservations を参照) です。

fitcsvm の名前と値のペアの引数 RemoveDuplicates を使用して重複を削除した場合、サポート ベクターである重複する観測値の特定の集合に対して、IsSupportVector は 1 つの観測値のみにサポート ベクターであるというフラグを設定します。

データ型: logical

このプロパティは読み取り専用です。

カーネル パラメーター。構造体配列を指定します。カーネル パラメーター プロパティには、次の表に記載されているフィールドが含まれます。

フィールド説明
関数

グラム行列の要素を計算するために使用するカーネル関数。詳細については、'KernelFunction' を参照してください。

スケール

モデルに学習させる予測子データのすべての要素をスケーリングするために使用するカーネル スケール パラメーター。詳細については、'KernelScale' を参照してください。

KernelParameters の値を表示するには、ドット表記を使用します。たとえば、Mdl.KernelParameters.Scale はカーネル スケール パラメーターの値を表示します。

KernelParameters は入力として使用され、値は変更されません。

データ型: 構造体

このプロパティは読み取り専用です。

1 クラス学習のパラメーター ν。正のスカラーを指定します。

データ型: single | double

このプロパティは読み取り専用です。

学習データに含まれている外れ値の比率。数値スカラーを指定します。

データ型: double

このプロパティは読み取り専用です。

SVM 分類器の学習に使用する最適化ルーチン。'ISDA''L1QP'、または 'SMO' を指定します。詳細については、'Solver' を参照してください。

このプロパティは読み取り専用です。

サポート ベクターのクラス ラベル。s 行 1 列の数値ベクトルを指定します。s は学習済み分類器に含まれているサポート ベクターの個数 (sum(Mdl.IsSupportVector)) です。

SupportVectorLabels+1 という値は、対応するサポート ベクターが陽性クラス (ClassNames{2}) に含まれることを示します。–1 という値は、対応するサポート ベクターが陰性クラス (ClassNames{1}) に含まれていることを示します。

fitcsvm の名前と値のペアの引数 RemoveDuplicates を使用して重複を削除した場合、サポート ベクターである重複する観測値の特定の集合に対して、SupportVectorLabels には一意なサポート ベクターのラベルが 1 つ含まれます。

データ型: single | double

このプロパティは読み取り専用です。

学習済み分類器内のサポート ベクター。s 行 p 列の数値行列を指定します。s は学習済み分類器内のサポート ベクターの個数 (sum(Mdl.IsSupportVector))、p は予測子データ内の予測子変数の個数です。

SupportVectors には、MATLAB でサポート ベクターと見なされる予測子データ X の行が格納されます。fitcsvm を使用して SVM 分類器に学習をさせるときに 'Standardize',true を指定した場合、SupportVectors には標準化された X の行が格納されます。

fitcsvm の名前と値のペアの引数 RemoveDuplicates を使用して重複を削除した場合、サポート ベクターである重複する観測値の特定の集合に対して、SupportVectors には一意なサポート ベクターが 1 つ含まれます。

データ型: single | double

他の分類のプロパティ

このプロパティは読み取り専用です。

カテゴリカル予測子のインデックス。正の整数のベクトルを指定します。CategoricalPredictors には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値を格納します。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型: single | double

このプロパティは読み取り専用です。

モデルの学習に使用した一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。

データ型: single | double | logical | char | cell | カテゴリカル

このプロパティは読み取り専用です。

誤分類コスト。数値正方行列を指定します。Cost(i,j) は、真のクラスが i である場合に点をクラス j に分類するコストです。

学習時に、コスト行列で表されているペナルティが組み込まれて、事前確率が更新されます。

  • 2 クラス学習の Cost は、i ~= j の場合は Cost(i,j) = 1i = j の場合は Cost(i,j) = 0 という形式に必ずなります。行は真のクラスに、列は予測するクラスに対応します。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。

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

詳細は、アルゴリズムを参照してください。

データ型: double

このプロパティは読み取り専用です。

展開された予測子名。文字ベクトルの cell 配列を指定します。

モデルでカテゴリカル変数用にダミー変数のエンコードを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が含まれます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

データ型: cell

このプロパティは読み取り専用です。

学習データの勾配の値。数値ベクトルを指定します。Gradient の長さは、観測値の個数 (NumObservations を参照) と同じです。

データ型: single | double

このプロパティは読み取り専用です。

ClassificationSVM モデルの学習に使用するパラメーター。構造体配列を指定します。ModelParameters には、SVM 分類器の学習に使用する名前と値のペアの引数の値などのパラメーター値が格納されます。推定したパラメーターは ModelParameters に格納されません。

ModelParameters のフィールドにアクセスするには、ドット表記を使用します。たとえば、Alpha を推定するための初期値にアクセスするには、Mdl.ModelParameters.Alpha を使用します。

データ型: 構造体

このプロパティは読み取り専用です。

予測子の平均。数値ベクトルを指定します。fitcsvm を使用して SVM 分類器に学習をさせるときに 'Standardize',1 または 'Standardize',true を指定した場合、Mu の長さは予測子の個数と同じです。

MATLAB では、完全なダミー エンコードを使用して予測子データ内のカテゴリカル変数が拡張されます。つまり、MATLAB では各カテゴリカル変数の各レベルについて 1 つずつダミー変数が作成されます。Mu には、ダミー変数を含む各予測子変数について 1 つずつ値が格納されます。ただし、カテゴリカル変数が含まれている列は MATLAB では標準化されません。

fitcsvm を使用して SVM 分類器に学習をさせるときに 'Standardize',false を設定した場合、Mu は空ベクトル ([]) です。

データ型: single | double

このプロパティは読み取り専用です。

X および Y に格納されている学習データ内の観測値の個数。数値スカラーを指定します。

データ型: single | double

このプロパティは読み取り専用です。

予測子変数の名前。文字ベクトルの cell 配列を指定します。PredictorNames の要素の順序は、予測子名が学習データに現れる順序に対応します。

データ型: cell

このプロパティは読み取り専用です。

各クラスの事前確率。数値ベクトルを指定します。Prior の要素の順序は Mdl.ClassNames の要素に対応します。

2 クラス学習の場合、コスト行列を指定すると、そのコスト行列で指定されているペナルティが組み込まれ、事前確率が更新されます。

詳細は、アルゴリズムを参照してください。

データ型: single | double

このプロパティは読み取り専用です。

応答変数名。文字ベクトルを指定します。

データ型: char

このプロパティは読み取り専用です。

ClassificationSVM モデルのあてはめに使用した元のデータ X の行。logical ベクトルを指定します。すべての行を使用した場合、このプロパティは空になります。

データ型: logical

スコア変換。文字ベクトルまたは関数ハンドルを指定します。ScoreTransform は、組み込みの変換関数または予測した分類スコアを変換する関数のハンドルを表します。

スコア変換関数を function などに変更するには、ドット表記を使用します。

  • 組み込み関数の場合は、文字ベクトルを入力します。

    Mdl.ScoreTransform = 'function';

    次の表は、使用可能な組み込み関数の一覧です。

    説明
    '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
    'symmetricismax'最大のスコアをもつクラスのスコアを 1 に設定し、他のすべてのクラスのスコアを –1 に設定します。
    'symmetriclogit'2/(1 + e–x) – 1

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

    Mdl.ScoreTransform = @function;

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

データ型: char | function_handle

このプロパティは読み取り専用です。

予測子の標準偏差。数値ベクトルを指定します。

fitcsvm を使用して SVM 分類器に学習をさせるときに 'Standardize',true を指定した場合、Sigma の長さは予測子変数の個数と同じです。

MATLAB では、完全なダミー エンコードを使用して予測子データ内のカテゴリカル変数が拡張されます。つまり、MATLAB では各カテゴリカル変数の各レベルについて 1 つずつダミー変数が作成されます。Sigma には、ダミー変数を含む各予測子変数について 1 つずつ値が格納されます。ただし、カテゴリカル変数が含まれている列は MATLAB では標準化されません。

fitcsvm を使用して SVM 分類器に学習をさせるときに 'Standardize',false を設定した場合、Sigma は空ベクトル ([]) です。

データ型: single | double

このプロパティは読み取り専用です。

SVM 分類器の学習に使用する観測値の重み。n 行 1 列の数値ベクトルを指定します。n は観測値の個数 (NumObservations を参照) です。

fitcsvm は、特定のクラスにおける W の要素の合計がそのクラスの事前確率になるように、名前と値のペアの引数 'Weights' で指定された観測値の重みを正規化します。

データ型: single | double

このプロパティは読み取り専用です。

SVM 分類器の学習に使用する、標準化されていない予測子。数値行列またはテーブルを指定します。

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

MATLAB では、欠損値が少なくとも 1 つ含まれている観測値が除外され、対応する要が Y から削除されます。

データ型: single | double

このプロパティは読み取り専用です。

SVM 分類器の学習に使用するクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y のデータ型は fitcsvm の入力引数 Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

Y の各行は、X の対応する行の観測された分類を表します。

MATLAB では、欠損値が含まれている要素が除外され、対応する観測値が X から削除されます。

データ型: single | double | logical | char | cell | カテゴリカル

収束制御のプロパティ

このプロパティは読み取り専用です。

収束情報。構造体配列を指定します。

フィールド説明
Convergedアルゴリズムが収束したかどうかを示す論理フラグ (1 は収束を示す)。
ReasonForConvergence使用する収束検出条件を示す文字ベクトル。
Gap双対目的関数と主目的関数の間の実行可能性ギャップを示すスカラー。
GapTolerance実行可能性ギャップの許容誤差を示すスカラー。この許容誤差を、たとえば 1e-2 に設定するには、fitcsvm の名前と値のペアの引数 'GapTolerance',1e-2 を使用します。
DeltaGradientスカラーで取得された、上位の違反値と下位の違反値の間の勾配差分
DeltaGradientTolerance上位の違反値と下位の違反値の間の勾配差分に対するスカラーの許容誤差。この許容誤差を、たとえば 1e-2 に設定するには、fitcsvm の名前と値のペアの引数 'DeltaGradientTolerance',1e-2 を使用します。
LargestKKTViolationカルーシュ・キューン・タッカー (KKT) 違反の最大値を示すスカラー。
KKTToleranceKKT 違反の最大値に対するスカラーの許容誤差。この許容誤差を、たとえば 1e-3 に設定するには、fitcsvm の名前と値のペアの引数 'KKTTolerance',1e-3 を使用します。
History

設定された最適化反復での収束情報を含む構造体配列。フィールドは次のとおりです。

  • NumIterations: 収束情報の記録の対象となる反復インデックスの数値ベクトル

  • Gap: 反復時の Gap 値の数値ベクトル

  • DeltaGradient: 反復時の DeltaGradient 値の数値ベクトル

  • LargestKKTViolation: 反復時の LargestKKTViolation 値の数値ベクトル

  • NumSupportVectors: 反復時のサポート ベクターの数を示す数値ベクトル

  • Objective: 反復時の Objective 値の数値ベクトル

Objective双対目的関数のスカラー値。

データ型: 構造体

このプロパティは読み取り専用です。

最適化ルーチンが収束するために必要な反復回数。正の整数を指定します。

反復回数の制限を、たとえば 1000 に設定するには、fitcsvm を使用して SVM 分類器に学習をさせるときに 'IterationLimit',1000 を指定します。

データ型: double

このプロパティは読み取り専用です。

アクティブ セットの縮小間の反復回数。非負の整数値を指定します。

縮小期間を、たとえば 1000 に設定するには、fitcsvm を使用して SVM 分類器に学習をさせるときに 'ShrinkagePeriod',1000 を指定します。

データ型: single | double

ハイパーパラメーター最適化のプロパティ

このプロパティは読み取り専用です。

ハイパーパラメーターの交差検証最適化の説明。BayesianOptimization オブジェクト、またはハイパーパラメーターおよび関連する値が含まれているテーブルを指定します。作成時に fitcsvm の名前と値のペアの引数 'OptimizeHyperparameters' が空以外であった場合、このプロパティは空以外になります。HyperparameterOptimizationResults の値は、次の表で説明されているように、作成時の fitcsvm の構造体 HyperparameterOptimizationOptions における Optimizer フィールドの設定によって変化します。

Optimizer フィールドの値HyperparameterOptimizationResults の値
'bayesopt' (既定の設定)BayesianOptimization クラスのオブジェクト
'gridsearch' または 'randomsearch'使用したハイパーパラメーター、観測された目的関数の値 (交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル

オブジェクト関数

compactサポート ベクター マシン (SVM) 分類器のサイズを縮小
compareHoldout新しいデータを使用して 2 つの分類モデルの精度を比較
crossvalサポート ベクター マシン (SVM) 分類器の交差検証
discardSupportVectors線形サポート ベクター マシン (SVM) 分類器のサポート ベクターを破棄
edgeサポート ベクター マシン (SVM) 分類器の分類エッジを計算
fitPosteriorサポート ベクター マシン (SVM) 分類器の事後確率のあてはめ
lossサポート ベクター マシン (SVM) 分類器の分類誤差を計算
marginサポート ベクター マシン (SVM) 分類器の分類マージンを計算
predictサポート ベクター マシン (SVM) 分類器を使用して観測値を分類
resubEdge再代入によるサポート ベクター マシン (SVM) 分類器の分類エッジを計算
resubLoss再代入によるサポート ベクター マシン (SVM) 分類器の分類損失を計算
resubMargin再代入によるサポート ベクター マシン (SVM) 分類器の分類マージンを計算
resubPredictサポート ベクター マシン (SVM) 分類器内の観測値を分類
resumeサポート ベクター マシン (SVM) 分類器の学習を再開

すべて折りたたむ

フィッシャーのアヤメのデータセットを読み込みます。がく片の長さと幅および観測済みのすべての 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'


  Properties, Methods

SVMModel は学習させた ClassificationSVM 分類器です。SVMModel のプロパティを表示します。たとえば、クラスの順序を確認するには、ドット表記を使用します。

classOrder = SVMModel.ClassNames
classOrder = 2x1 cell array
    {'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

SVM 分類器の学習と交差検証を行います。予測子データを標準化し、クラスの順序を指定します。

rng(1);  % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Standardize',true,...
    'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = 
  classreg.learning.partition.ClassificationPartitionedModel
    CrossValidatedModel: 'SVM'
         PredictorNames: {1x34 cell}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


  Properties, Methods

CVSVMModelClassificationPartitionedModel 交差検証 SVM 分類器です。既定では、10 分割交差検証が実行されます。

あるいは、学習済みの ClassificationSVM 分類器を crossval に渡すことにより、この分類器を交差検証することができます。

ドット表記を使用して、学習させた分割のいずれかを検査します。

CVSVMModel.Trained{1}
ans = 
  classreg.learning.classif.CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [78x1 double]
                     Bias: -0.2209
         KernelParameters: [1x1 struct]
                       Mu: [1x34 double]
                    Sigma: [1x34 double]
           SupportVectors: [78x34 double]
      SupportVectorLabels: [78x1 double]


  Properties, Methods

各分割は、データの 90% で学習済みの CompactClassificationSVM 分類器です。

汎化誤差を推定します。

genError = kfoldLoss(CVSVMModel)
genError = 0.1168

平均すると汎化誤差は約 12% です。

詳細

すべて展開する

アルゴリズム

  • SVM バイナリ分類アルゴリズムの数学的定式化については、バイナリ分類のサポート ベクター マシンサポート ベクター マシンについてを参照してください。

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

  • 'Standardize',true と訛れと値のペアの引数 'Cost''Prior' または 'Weights' を設定した場合、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.

  • p は学習データで予期される外れ値の比率であり、'OutlierFraction',p を設定したと仮定します。

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

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

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

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

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

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

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

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

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

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

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

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

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

    j=1nαj=nν.

参照

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

[2] 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.

[3] 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.

[4] 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 で導入