Main Content

ClassificationPartitionedKernel

交差検証済みのバイナリ カーネル分類モデル

説明

ClassificationPartitionedKernel は、交差検証分割に対して学習をさせたバイナリ カーネル分類モデルです。分類の品質や、カーネル分類モデルがどの程度一般化を行うかは、"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 の観測値について予測が計算されます。つまり、それぞれの観測値に対する応答は、その観測値を使用せずに学習させたモデルによって推定されます。

メモ

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

作成

ClassificationPartitionedKernel モデルは、fitckernel を使用し、名前と値のペアの引数 'Crossval''CVPartition''Holdout''KFold''Leaveout' のいずれかを指定して、分類カーネル モデルに学習をさせることにより作成できます。

プロパティ

すべて展開する

交差検証のプロパティ

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

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

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

データ型: char

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

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

データ型: double

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

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

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

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

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

データ型: double

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

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

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

交差検証分割に対して学習をさせたカーネル分類器。ClassificationKernel モデルの cell 配列を指定します。Trained には k 個のセルがあります。k は分割数です。

データ型: cell

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

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

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

データ型: single | double

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

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

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

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

他の分類のプロパティ

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

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。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

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

カーネル分類モデル 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 | function_handle

オブジェクト関数

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

すべて折りたたむ

ionosphere データ セットを読み込みます。このデータ セットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。

load ionosphere
rng('default') % For reproducibility

バイナリ カーネル分類モデルを交差検証します。既定では、10 分割交差検証が使用されます。

CVMdl = fitckernel(X,Y,'CrossVal','on')
CVMdl = 
  ClassificationPartitionedKernel
    CrossValidatedModel: 'Kernel'
           ResponseName: 'Y'
        NumObservations: 351
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'b'  'g'}
         ScoreTransform: 'none'


numel(CVMdl.Trained)
ans = 10

CVMdlClassificationPartitionedKernel モデルです。fitckernel は 10 分割交差検証を実施するので、学習分割 (分割内) 観測値に対して学習をさせる 10 個の ClassificationKernel モデルが CVMdl に格納されます。

交差検証分類誤差を推定します。

kfoldLoss(CVMdl)
ans = 0.0940

分類誤差率は約 9% です。

バージョン履歴

R2018b で導入

すべて展開する