Main Content

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 個の要素があります。

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

データ型: single | double

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

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

Y の各行は、予測子データの対応する行の観測された分類を表します。

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

ECOC のプロパティ

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

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

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

サポートされるバイナリ損失関数のリストについては、バイナリ損失を参照してください。

データ型: char

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

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

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

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

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

  • 符号化行列が分割全体で異なる場合、BinaryY は空 ([]) です。

データ型: double

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

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

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

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

データ型: single | double

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

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

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

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

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

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

データ型: double

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

予測子データに現れる順序で並んでいる予測子名。文字ベクトルの cell 配列として指定します。PredictorNames の長さは、学習データ X または Tbl で予測子変数として使用される列の数と等しくなります。

データ型: cell

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

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

データ型: double

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

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

データ型: char

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

予測されたスコアに適用するスコア変換関数。'none' を指定します。ECOC モデルではスコア変換はサポートされません。

オブジェクト関数

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 = 
  ClassificationPartitionedKernelECOC
    CrossValidatedModel: 'KernelECOC'
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         ScoreTransform: 'none'


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 で導入