ドキュメンテーション

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

ClassificationSVM クラス

スーパークラス: CompactClassificationSVM

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

説明

ClassificationSVM は 1 または 2 クラス学習のサポート ベクター マシン分類器です。fitcsvm および学習データを使用し、ClassificationSVM 分類器に学習させます。

学習させた ClassificationSVM 分類器は、学習データ、パラメーター値、事前確率、サポート ベクトルおよびアルゴリズムの実装情報を保存します。これらの分類器は以下に使用できます。

  • 再置換予測の推定。詳細は、「resubPredict」を参照してください。

  • 新しいデータのラベルまたは事後確率の予測。詳細は、「predict」を参照してください。

構築

SVMModel = fitcsvm(X,Y) は学習させた SVM 分類器 (SVMModel) を、入力変数 (予測子、特徴、属性とも呼ばれます) X と出力変数 (応答またはクラス ラベルとも呼ばれます) Y に基づいて返します。詳細は、fitcsvm を参照してください。

SVMModel = fitcsvm(X,Y,Name,Value) は、1 つ以上の Name,Value ペア引数で指定された追加オプションで、学習させた SVM 分類器を返します。名前と値のペアの引数についての詳細は、fitcsvm を参照してください。

次の 5 つのオプションのいずれかが設定されている場合、SVMModelClassificationPartitionedModel モデルです。それらは、'CrossVal''CVPartition''Holdout''KFold' または 'Leaveout' です。それ以外の場合、SVMModelClassificationSVM 分類器です。

入力引数

すべて折りたたむ

X — 予測子データ数値の行列

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

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

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

次の操作をお勧めします。

  • KFold 名前と値のペアの引数による交差検定。この交差検定の結果により、SVM 分類器の一般化の精度がわかります。

  • Standardize 名前と値のペアの引数による予測子変数の標準化。

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

データ型: double | single

Y — クラス ラベルカテゴリカル配列 | 文字配列 | 論理ベクトル | 数値のベクトル | 文字列のセル配列

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

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

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

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

応答変数名を指定するには、ResponseName 名前と値のペアの引数を使用します。

    メモ:   NaN、空の文字列 ('') および <undefined> 要素は欠損値として扱われます。X の行または Y の要素に NaN が 1 つでもあれば、当該の行や要素が両方の引数から削除されます。この削除処理により、学習や交差検定の実際の標本サイズが小さくなります。

プロパティ

Alpha

双対問題 (推測されたラグランジュ乗数) からの学習させた分類器の係数数値ベクトル。Alpha の長さは、学習させた分類器のサポート ベクトルの数 (sum(SVMModel.IsSupportVector)) と等しくなります。

Beta

線形主問題からの学習させた分類器係数の数値ベクトル。Beta の長さは予測子の数 (size(SVMModel.X,2)) と等しくなります。

非線形カーネル関数を使用する 1 クラス学習または 2 クラス学習の Beta = []

Bias

学習させた分類器のバイアス項に対応するスカラー。

BoxConstraints

ボックス制約の数値ベクトル。

BoxConstraints の長さは、観測の数 (size(SVMModel.X,1)) と等しくなります。

CacheInfo

次のものを含む構造体配列

  • SVM 分類器を学習させるために予約されているキャッシュのサイズ (SVMModel.CacheInfo.Size、MB 単位)。キャッシュのサイズを CacheSize MB に設定するには、fitcsvm 名前と値のペアの引数を 'CacheSize',CacheSize に設定します。

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

CategoricalPredictors

カテゴリカル予測子のリスト。SVM および判別分析分類器では常に空 ([]) です。

ClassNames

重複が削除された Y の要素のリスト。ClassNames のデータ型は引数 Y と同じなので、カテゴリカル配列または文字配列、論理ベクトルまたは数値ベクトル、または文字列のセル配列を指定できます。

ConvergenceInfo

収束情報が含まれる構造体配列。

フィールド説明
Convergedアルゴリズムが収束しているかどうかを示す論理フラグ (1 は収束を示す)
ReasonForConvergence収束を検出するための条件を示す文字列
Gap双対関数および主目的関数の間のスカラー実行可能性の差異
GapToleranceスカラー実行可能性の差異の許容誤差。この許容誤差を、たとえば gt に設定するには、fitcsvm の名前と値のペアの引数 'GapTolerance',gt を使用します。
DeltaGradientスカラーで取得された、上位の違反値と下位の違反値の間の勾配差分
DeltaGradientTolerance上位の違反値と下位の違反値の間の勾配差分に対するスカラーの許容誤差。fitcsvm の 名前と値のペアの引数 'DeltaGradientTolerance',dgt を使用して、この許容誤差を (たとえば dgt に) 設定します。
LargestKKTViolationスカラーの KKT (カルーシュ・キューン・タッカー) 違反の最大値
KKTToleranceKKT 違反の最大値に対するスカラーの許容誤差。fitcsvm の 名前と値のペアの引数 'KKTTolerance',kktt を使用して、この許容誤差を (たとえば kktt に) 設定します。
History設定された最適化反復での収束情報を含む構造体配列。フィールドは次のとおりです。
  • NumIterations: 収束情報の記録の対象となる反復インデックスの数値ベクトル

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

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

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

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

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

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

Cost

正方行列。Cost(i,j) は真のクラスが i である場合に 1 つのポイントをクラス j に分類するためのコスト。

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

  • 2 クラス学習では常に、Cost の形式は i ~= j の場合は Cost(i,j) = 1i = j の場合は Cost(i,j) = 0 となります。

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

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

Gradient

学習データの勾配値の数値ベクトル。Gradient の長さは、観測値の数 (size(SVMModel.X,1)) と等しくなります。

IsSupportVector

予測子データ行列の対応する行がサポート ベクトルであるかどうかを示す論理ベクトル。IsSupportVector の長さは、観測値の数 (size(SVMModel.X,1)) と等しくなります。

KernelParameters

カーネルの名前とパラメーター値が格納された構造体配列。

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

KernelParameters が入力として使用され、値は変更されません。KernelParameters を変更するには、fitcsvm を使用して SVM 分類器に学習させる際に、適切な名前と値のペアの引数を設定します。

ModelParameters

SVM 分類器の学習に使用するパラメーター値に含まれるオブジェクト (名前と値のペアの引数など)。ModelParameters には推定されたパラメーターは格納されません。

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

Mu

予測子平均の数値ベクトル。

fitcsvm を使用して SVM 分類器を学習させる際に 'Standardize',1 または 'Standardize',true を指定すると、Mu の長さは予測子の数 (size(SVMModel.X,2)) と等しくなります。それ以外の場合は、Mu は空のベクトル ([]) です。

NumIterations

収束を実現するための最適化ルーチンで必要となる反復の回数を示す正の整数。

反復の回数を (たとえば k に) 制限する場合、fitcsvm の名前と値のペアの引数 'IterationLimit',k を指定します。

Nu

1 クラス学習の ν パラメーターを表す正のスカラー。

NumObservations

学習データにある観測値の数を表す数値スカラー。入力引数 X または Y に欠損値が格納されている場合、NumObservationsY より長さが小さくなります。

OutlierFraction

学習データ内で想定されている外れ値の割合を示すスカラー。

PredictorNames

予測子名が含まれる文字列のセル配列。X と同じ順序で配列されます。

Prior

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

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

ResponseName

応答変数 Y を記述する文字列。

ScoreTransform

組み込みの変換関数を表す文字列、または予測された分類スコアを変換するための関数ハンドル。

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

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

    SVMModel.ScoreTransform = 'function';

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

    文字列
    'doublelogit'1/(1 + e–2x)
    'invlogit'log(x / (1–x))
    'ismax'最大のスコアをもつクラスのスコアを 1 に設定し、それ以外のクラスのスコアを 0 に設定します。
    'logit'1/(1 + e–x)
    'none'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 は行列 (元のスコア) を受け入れ、同じサイズの行列 (変換されたスコア) を返さなければなりません。

ShrinkagePeriod

縮小期間 (アクティブ セットの削減間での反復回数) を示す非負の整数。

縮小期間を (たとえば sp に) 設定するには、fitcsvm の 名前と値のペアの引数 'ShrinkagePeriod',sp を指定します。

Sigma

予測子の標準偏差の数値ベクトル。

SVM 分類器を学習させる際に 'Standardize',1 または 'Standardize',true を指定すると、Sigma の長さは予測子の数 (size(SVMModel.X,2)) と等しくなります。それ以外の場合は、Sigma は空のベクトル ([]) です。

Solver

SVM 分類器の学習に使用された解法ルーチンを示す文字列。

ソルバーを (たとえば solver に) 設定するには、fitcsvm の 名前と値のペアの引数 'Solver',solver を指定します。

SupportVectors

サポート ベクトルとして認識される X の行を含む行列。

'Standardize',1 または 'Standardize',true が指定されている場合、SupportVectorsX の標準化された行となります。

SupportVectorLabels

サポート ベクトルのクラス ラベルの数値ベクトル。SupportVectorLabels の長さは、サポート ベクトルの数 (sum(SVMModel.IsSupportVector)) と等しくなります。

+1 は、対応するサポート ベクトルが陽性のクラス (SVMModel.ClassNames{2}) にあることを表します。-1 は、対応するサポート ベクトルが陰性のクラス (SVMModel.ClassNames{1}) にあることを表します。

W

SVM 分類器の学習に使用された観測値の重みの数値ベクトル。

W の長さは SVMModel.NumObservations です。

fitcsvm により Weights が正規化され、特定のクラス内にある W の要素の合計がそのクラスの事前確率と等しくなります。

X

SVM 分類器の学習に使用された、標準化されていない予測子の値の数値ベクトル。

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

NaN が原因で削除された予測子データ行は X から除外されます。

Y

カテゴリカル配列または文字配列、論理ベクトルまたは数値ベクトル、または文字列のセル配列。観測済みのクラス ラベルを表し、SVM 分類器の学習に使用されます。Y のデータ型は fitcsvm の入力引数 Y と同じになります。

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

NaN が原因で削除された要素は Y から除外されます。

メソッド

compactコンパクトなサポート ベクター マシン分類器
crossval交差検定を使用したサポート ベクター マシン分類器
fitPosterior事後確率の近似
resubEdge再置換によるサポート ベクター マシン分類器の分類エッジ
resubLoss再置換によるサポート ベクター マシン分類器の分類損失
resubMargin再置換によるサポート ベクター マシン分類器の分類マージン
resubPredictサポート ベクター マシン再置換応答を予測します。
resumeサポート ベクター マシンの分類器の学習の再開

継承メソッド

edgeサポート ベクター マシン分類器の分類エッジ
fitPosterior事後確率の近似
lossサポート ベクター マシンの分類誤差
marginサポート ベクター マシン分類器の分類マージン
predictサポート ベクター マシン分類器のラベルを予測します。

定義

ボックス制約

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

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

グラム行列

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

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

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

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

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

{αj[yj(wϕ(xj)+b)1+ξj]=0ξj(Cαj)=0

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

1 クラス学習

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

このアルゴリズムは「バイナリ分類の SVM」 のアルゴリズムと類似しています。このアルゴリズムは、双対式

0.5jkαjαkG(xj,xk)

α1,...,αn について最小化することです。ここで、すべての j = 1、...、n について

αj=nν

かつ 0αj1 であることが条件となります。G(xj,xk,) は「グラム行列」の要素 (j,k) です。

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

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

サポート ベクトル

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

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

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

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

線形 SVM スコア関数は次のとおりです。

f(x)=xβ+β0,

ここで、以下のようになります。

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

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

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

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

SVM 分類器はマージンの長さの最大値を検索し、その一方で陽性のクラス (y = 1) の観測値と陰性のクラス (y = –1) の観測値は分離されたままにします。したがって、

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

  • クラスが分離可能でない場合、SVM はスラック変数 (ξj) を使用して、クラスのマージン境界を超過する観測値について目的関数を抑制します。クラスのマージン境界を超過しない観測値については ξj = 0 となり、それ以外の場合は ξj ≥ 0 となります。

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

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

  • クラスが分離可能な場合、

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

    を α1、...、αn に関して最小化します。ここで、すべての j = 1、...、n について αjyj=0 かつ αj ≥ 0 であることが条件となり、さらに 「KKT (カルーシュ・キューン・タッカー) 相補性条件」 が適用されます。

  • クラスが分離可能でない場合でも、目的は分離可能なクラスと同じですが、さらにすべての j = 1、...、n について 0αjC であることが条件として追加されます。

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

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

主形成化の結果、このスコア関数には β の推定はありません。

場合によっては、クラスを分離する非線形境界が存在します。"非線形 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]」および「[2]」を参照してください。

コピーのセマンティクス

値。コピー操作に対する値クラスの影響については、MATLAB のドキュメンテーションの「オブジェクトのコピー」を参照してください。

すべて折りたたむ

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

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

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

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

SVMModel = fitcsvm(X,y)
SVMModel = 

  ClassificationSVM
      PredictorNames: {'x1'  'x2'}
        ResponseName: 'Y'
          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

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'


CVSVMModelClassificationSVM 分類器ではなく、ClassificationPartitionedModel 交差検定された SVM 分類器です。既定では、10 分割交差検定が実行されます。

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

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

CVSVMModel.Trained{1}
ans = 

  classreg.learning.classif.CompactClassificationSVM
         PredictorNames: {1x34 cell}
           ResponseName: 'Y'
             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]


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

一般化誤差を推定します。

genError = kfoldLoss(CVSVMModel)
genError =

    0.1168

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

関連する例

アルゴリズム

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

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

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

    j=1nαj=nν.

  • 2 クラス学習の場合、コスト行列 C を指定すると、C で指定されているペナルティが組み込まれ、クラスの事前確率 (p) が pc に更新されます。更新後の事前確率ベクトルの公式は次のようになります。

    pc=pCpC.

    その後、コスト行列は既定の設定にリセットされます。

    C=[0110].

  • fitcsvm を使用して SVM 分類器を学習させる際に 'Standardize',true を設定すると、標準化された予測子行列を使用して分類器の学習が行われますが、標準化されていないデータは分類器の X プロパティに保存されます。ただし、データを標準化すると、最適化が終了するまでメモリのデータ サイズは 2 倍になります。

  • 'Standardize',true および 'Cost''Prior' または 'Weights' のいずれかを設定する場合、予測子は対応する加重平均と加重標準偏差を使用して標準化されます。

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

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

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

参照

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

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