Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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 はキャッシュ サイズの値を表示します。

データ型: struct

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

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

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

データ型: logical

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

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

フィールド説明
関数

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

スケール

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

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

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

データ型: struct

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

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 には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型: double

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

学習で使用する一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。ClassNames のデータ型はクラス ラベル Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。ClassNames はクラスの順序も決定します。

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

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

誤分類のコスト。数値正方行列として指定します。

  • 2 クラス学習の場合、Cost プロパティには、近似関数の名前と値の引数 Cost で指定された誤分類コスト行列が格納されます。行は真のクラスに、列は予測するクラスに対応します。つまり、Cost(i,j) は、真のクラスが i である場合に点をクラス j に分類するコストです。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 では、ダミー変数を使用して予測子データ内のカテゴリカル変数が拡張されます。Mu には、ダミー変数を含む各予測子変数について 1 つずつ値が格納されます。ただし、カテゴリカル変数が含まれている列は MATLAB では標準化されません。

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

データ型: single | double

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

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

データ型: double

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

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

データ型: cell

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

各クラスの事前確率。数値ベクトルを指定します。

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

  • 2 クラス学習では、近似関数の名前と値の引数 Prior で指定された事前確率が確率の合計が 1 になるように正規化されます。Prior プロパティには正規化された事前確率が格納されます。Prior の要素の順序は Mdl.ClassNames の要素に対応します。

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

データ型: single | double

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

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

データ型: char

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

モデルに格納されている元の学習データの行。logical ベクトルとして指定します。このプロパティは、XY にすべての行が格納される場合は空になります。

データ型: 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 では、ダミー変数を使用して予測子データ内のカテゴリカル変数が拡張されます。Sigma には、ダミー変数を含む各予測子変数について 1 つずつ値が格納されます。ただし、カテゴリカル変数が含まれている列は MATLAB では標準化されません。

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

データ型: single | double

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

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

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

データ型: single | double

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

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

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

データ型: single | double

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

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

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

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

収束制御のプロパティ

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

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

フィールド説明
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双対目的関数のスカラー値。

データ型: struct

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

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

反復回数の制限を、たとえば 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機械学習モデルのサイズの縮小
compareHoldout新しいデータを使用して 2 つの分類モデルの精度を比較
crossval機械学習モデルの交差検証
discardSupportVectors線形サポート ベクター マシン (SVM) 分類器のサポート ベクターを破棄
edgeサポート ベクター マシン (SVM) 分類器の分類エッジを計算
fitPosteriorサポート ベクター マシン (SVM) 分類器の事後確率の当てはめ
gatherGPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集
incrementalLearnerバイナリ分類サポート ベクター マシン (SVM) モデルのインクリメンタル学習器への変換
limeLocal Interpretable Model-agnostic Explanations (LIME)
lossサポート ベクター マシン (SVM) 分類器の分類誤差を計算
marginサポート ベクター マシン (SVM) 分類器の分類マージンを計算
partialDependence部分依存の計算
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predictサポート ベクター マシン (SVM) 分類器を使用して観測値を分類
resubEdge再代入分類エッジ
resubLoss再代入分類損失
resubMargin再代入分類マージン
resubPredict学習済み分類器を使用した学習データの分類
resumeサポート ベクター マシン (SVM) 分類器の学習を再開
shapleyシャープレイ値
testckfold交差検証の反復により 2 つの分類モデルの精度を比較

すべて折りたたむ

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

Figure contains an axes object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent versicolor, virginica, Support Vector.

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

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

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

load ionosphere

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

rng(1);  % For reproducibility
CVSVMModel = fitcsvm(X,Y,'Standardize',true,...
    'ClassNames',{'b','g'},'CrossVal','on')
CVSVMModel = 
  ClassificationPartitionedModel
    CrossValidatedModel: 'SVM'
         PredictorNames: {'x1'  'x2'  'x3'  'x4'  'x5'  'x6'  'x7'  'x8'  'x9'  'x10'  'x11'  'x12'  'x13'  'x14'  'x15'  'x16'  'x17'  'x18'  'x19'  'x20'  'x21'  'x22'  'x23'  'x24'  'x25'  'x26'  'x27'  'x28'  'x29'  'x30'  'x31'  'x32'  'x33'  'x34'}
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


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

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

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

CVSVMModel.Trained{1}
ans = 
  CompactClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'b'  'g'}
           ScoreTransform: 'none'
                    Alpha: [78x1 double]
                     Bias: -0.2210
         KernelParameters: [1x1 struct]
                       Mu: [0.8888 0 0.6320 0.0406 0.5931 0.1205 0.5361 0.1286 0.5083 0.1879 0.4779 0.1567 0.3924 0.0875 0.3360 0.0789 0.3839 9.6066e-05 0.3562 -0.0308 0.3398 -0.0073 0.3590 -0.0628 0.4064 -0.0664 0.5535 -0.0749 0.3835 ... ] (1x34 double)
                    Sigma: [0.3149 0 0.5033 0.4441 0.5255 0.4663 0.4987 0.5205 0.5040 0.4780 0.5649 0.4896 0.6293 0.4924 0.6606 0.4535 0.6133 0.4878 0.6250 0.5140 0.6075 0.5150 0.6068 0.5222 0.5729 0.5103 0.5061 0.5478 0.5712 0.5032 ... ] (1x34 double)
           SupportVectors: [78x34 double]
      SupportVectorLabels: [78x1 double]


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

汎化誤差を推定します。

genError = kfoldLoss(CVSVMModel)
genError = 0.1168

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

詳細

すべて展開する

アルゴリズム

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

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

  • 名前と値の引数 CostPrior、および Weights を指定すると、出力モデル オブジェクトに CostPrior、および W の各プロパティの指定値がそれぞれ格納されます。Cost プロパティには、ユーザー指定のコスト行列 (C) が変更なしで格納されます。Prior プロパティと W プロパティには、正規化後の事前確率と観測値の重みがそれぞれ格納されます。モデルの学習用に、事前確率と観測値の重みが更新されて、コスト行列で指定されているペナルティが組み込まれます。詳細については、誤分類コスト行列、事前確率、および観測値の重みを参照してください。

    名前と値の引数 Cost および Prior は 2 クラス学習用であることに注意してください。1 クラス学習の場合、Cost プロパティには 0Prior プロパティには 1 が格納されます。

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

    Cj=nC0wj,

    ここで、C0 は初期のボックス制約 (名前と値の引数 BoxConstraint を参照)、wj* は観測値 j の CostPrior で調整された観測値の重みです。観測値の重みの詳細については、誤分類コスト行列に応じた事前確率と観測値の重みの調整を参照してください。

  • Standardizetrue として指定し、名前と値の引数 CostPrior、または Weights を設定した場合、fitcsvm は対応する加重平均および加重標準偏差を使用して予測子を標準化します。つまり、fitcsvm は、以下を使用して予測子 j (xj) を標準化します。

    xj=xjμjσj,

    ここで、xjk は予測子 j (列) の観測値 k (行) であり、次のようになります。

    μj=1kwk*kwk*xjk,(σ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 で導入

すべて展開する