ドキュメンテーション

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

ClassificationPartitionedKernelECOC

マルチクラス分類用の交差検証済みカーネル誤り訂正出力符号 (ECOC) モデル

説明

ClassificationPartitionedKernelECOC は、交差検証分割に対して学習をさせたカーネル分類モデルから構成される誤り訂正出力符号 (ECOC) モデルです。"kfold" 関数 kfoldPredictkfoldLosskfoldMarginkfoldEdge を 1 つ以上使用する交差検証により、分類の品質を推定します。

すべての "kfold" メソッドでは、学習分割 (分割内) 観測値で学習をさせたモデルを使用して、検証分割 (分割外) 観測値に対する応答を予測します。たとえば、データを 5 つに分割して交差検証を行うとします。この場合、ほぼ等しいサイズの 5 つのグループに各観測値が無作為に割り当てられます。"学習分割" にはグループのうち 4 つ (データの約 4/5) が含まれ、"検証分割" には残りのグループ (データの約 1/5) が含まれます。この場合、交差検証は次のように処理されます。

  1. (CVMdl.Trained{1} に格納されている) 1 番目のモデルの学習には最後の 4 つのグループの観測値が使用され、1 番目のグループの観測値は検証用に確保されます。

  2. (CVMdl.Trained{2} に格納されている) 2 番目のモデルの学習には、1 番目のグループと最後の 3 つのグループの観測値が使用されます。2 番目のグループの観測値は、検証用に予約されます。

  3. 3 番目、4 番目および 5 番目のモデルに対しても同様に続けられます。

kfoldPredict を使用して検証する場合、i 番目のモデルを使用してグループ i の観測値について予測が計算されます。つまり、それぞれの観測値に対する応答は、その観測値を使用せずに学習させたモデルによって推定されます。

メモ

ClassificationPartitionedKernelECOC モデル オブジェクトに予測子データセットは格納されません。

作成

ClassificationPartitionedKernelECOC モデルは、fitcecoc を使用し、以下の名前と値のペアの引数を指定して、ECOC モデルに学習をさせることにより作成できます。

  • 'Learners' – 値を 'kernel'templateKernel が返すテンプレート オブジェクト、またはこのようなテンプレート オブジェクトの cell 配列に設定します。

  • 引数 'CrossVal''CVPartition''Holdout''KFold''Leaveout' のいずれか。

詳細は、fitcecocを参照してください。

プロパティ

すべて展開する

交差検証のプロパティ

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

交差検証済みモデルの名前。文字ベクトルを指定します。

たとえば、'KernelECOC' は交差検証済みのカーネル ECOC モデルを指定します。

データ型: char

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

交差検証分割の個数。正の整数スカラーを指定します。

データ型: double

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

交差検証パラメーター値。オブジェクトを指定します。パラメーター値は、ECOC 分類器の交差検証に使用した名前と値のペアの引数の値に対応します。推定されたパラメーターは ModelParameters に含まれません。

ドット表記を使用して ModelParameters のプロパティにアクセスできます。

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

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

データ型: double

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

データを交差検証分割に分割する方法を含むデータ分割。cvpartition モデルとして指定します。

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

交差検証分割で学習させたコンパクトな分類器。CompactClassificationECOC モデルの cell 配列を指定します。Trained には k 個のセルがあります。k は分割数です。

データ型: cell

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

モデルの交差検証に使用した観測値の重み。数値ベクトルを指定します。W には NumObservations 個の要素があります。

学習に使用する重みは正規化され nansum(W)1 になります。

データ型: single | double

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

モデルの交差検証に使用される、観測されたクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y には NumObservations 個の要素があり、データ型はモデルの交差検証を実行するために fitcecoc に渡した入力引数 Y と同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

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

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

ECOC のプロパティ

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

バイナリ学習器の損失関数。損失関数名を表す文字ベクトルを指定します。

既定では、すべてのバイナリ学習器が SVM を使用するカーネル分類モデルである場合、BinaryLoss'hinge' です。すべてのバイナリ学習器がロジスティック回帰を使用するカーネル分類モデルである場合、BinaryLoss'quadratic' です。精度が向上する可能性を高めるには、kfoldPredict または kfoldLoss の名前と値のペアの引数 'BinaryLoss' を使用して予測または損失を計算するときに、既定以外のバイナリ損失関数を指定します。

データ型: char

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

バイナリ学習器クラス ラベル。数値行列または [] として指定します。

  • すべての分割で符号化行列が同じである場合、BinaryYNumObservations 行 L 列の行列になります。L はバイナリ学習器の個数 (size(CodingMatrix,2)) です。

    BinaryY の要素は –10 または 1 であり、値は二分法によるクラス割り当てに対応します。次の表に、学習器 j が観測値 kBinaryY(k,j) の値に対応する二分法によるクラスに割り当てる方法を示します。

    二分法によるクラス割り当て
    –1学習器 j は、観測値 k を陰性クラスに割り当てます。
    0学習の前に、学習器 j は観測値 k をデータセットから削除します。
    1学習器 j は、観測値 k を陽性クラスに割り当てます。

  • コーディング行列が分割全体で異なる場合、BinaryY は空 ([]) です。

データ型: double

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

バイナリ学習器のクラス割り当てを指定するコード。数値行列または [] として指定します。

  • すべての分割で符号化行列が同じである場合、CodingMatrix は K 行 L 列の行列になります。K はクラスの個数、L はバイナリ学習器の個数です。

    CodingMatrix の要素は –10 または 1 であり、値は二分法によるクラス割り当てに対応します。次の表に、学習器 j がクラス i の観測値を CodingMatrix(i,j) の値に対応する二分法によるクラスに割り当てる方法を示します。

    二分法によるクラス割り当て
    –1学習器 j は、クラス i の観測値を陰性クラスに割り当てます。
    0学習の前に、学習器 j はクラス i の観測値をデータセットから削除します。
    1学習器 j は、クラス i の観測値を陽性クラスに割り当てます。

  • コーディング行列が分割全体で異なる場合、CodingMatrix は空 ([]) です。Trained プロパティを使用することにより、各分割の符号化行列を取得できます。たとえば、CVMdl.Trained{1}.CodingMatrix は、交差検証された ECOC モデル CVMdl の最初の分割のコーディング行列です。

データ型: double | single | int8 | int16 | int32 | int64

他の分類のプロパティ

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

カテゴリカル予測子のインデックス。空の数値を指定します。一般に、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が、CategoricalPredictors に格納されます。ClassificationKernel モデルは数値予測子データのみに対して学習をさせることができるので、このプロパティは空 ([]) です。

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

学習で使用する一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。ClassNames は、観測されたクラス ラベル プロパティ Y と同じデータ型であり、クラスの順序を決定します。

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

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

誤分類のコスト。正方数値行列として指定します。Cost には K 個の行および列が含まれ、K はクラスの数です。

Cost(i,j) は、真のクラスが i である点をクラス j に分類するコストです。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。

データ型: double

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

予測子データ X に現れる順序で並んでいる予測子名。{'x1','x2',...} という形式の文字ベクトルの cell 配列を指定します。PredictorNames の長さは、X の列数と同じです。

データ型: cell

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

クラスの事前確率。Prior の要素数は ClassNames 内のクラス数と同じであり、要素の順序は ClassNames の要素に対応します。

データ型: double

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

応答変数名。'Y' を指定します。ClassificationKernel モデルは表形式の予測子データに対して学習をさせることができないので、このプロパティは常に 'Y' です。

データ型: char

予測されたスコアに適用するスコア変換関数。関数名または関数ハンドルを指定します。

カーネル分類モデル Mdl の場合、スコアを変換前する前は、観測値 x (行ベクトル) について予測される分類スコアは f(x)=T(x)β+b. です。

  • T(·) は特徴量拡張のための観測値の変換です。

  • β は推定された係数の列ベクトルです。

  • b は推定されたスカラー バイアスです。

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

  • 組み込み関数の場合、function を表の値に置き換えて次のコードを入力します。

    CVMdl.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® 関数やユーザー定義関数の場合は、関数ハンドルを入力します。

    CVMdl.ScoreTransform = @function;

    function は、各クラスの元のスコアの行列を受け入れて、各クラスの変換後のスコアを表す同じサイズの行列を返さなければなりません。

データ型: char | 関数ハンドル

オブジェクト関数

kfoldEdge交差検証済みカーネル ECOC モデルの分類エッジ
kfoldLoss交差検証済みカーネル ECOC モデルの分類損失
kfoldMargin交差検証済みカーネル ECOC モデルの分類マージン
kfoldPredict交差検証済みカーネル ECOC モデルの観測値の分類

すべて折りたたむ

fitcecoc を使用して、交差検証済みのマルチクラス カーネル ECOC 分類モデルを作成します。

フィッシャーのアヤメのデータセットを読み込みます。X には花の測定値が、Y には花の種類の名前が格納されています。

load fisheriris
X = meas;
Y = species;

花の測定値に基づいて花の種類を識別できるマルチクラス カーネル ECOC 分類モデルを交差検証します。

rng(1); % For reproducibility
CVMdl = fitcecoc(X,Y,'Learners','kernel','CrossVal','on')
CVMdl = 
  classreg.learning.partition.ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


  Properties, Methods

CVMdl は交差検証済み ClassificationPartitionedKernelECOC モデルです。既定では、fitcecoc は 10 分割交差検証を実施します。したがって、各分割について 1 つずつ、10 個の CompactClassificationECOC モデルから成る 10 行 1 列の cell 配列が CVMdl.Trained に格納されます。コンパクトな各 ECOC モデルは、バイナリ カーネル分類モデルから構成されています。

CVMdlkfoldLoss に渡して、分類誤差を推定します。

error = kfoldLoss(CVMdl)
error = 0.0333

推定された分類誤差は、約 3% の誤分類観測値です。

カーネル分類モデルから構成される ECOC モデルに学習をさせるときの既定オプションを変更するには、templateKernel を使用してカーネル分類モデル テンプレートを作成し、このテンプレートを fitcecoc に渡します。

R2018b で導入