Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

ClassificationPartitionedModel

パッケージ:classreg.learning.partition

交差検証分類モデル

説明

ClassificationPartitionedModelは、交差検証の学習集合で学習を行った分類モデルのセットです。次のうち 1 つ以上の kfold メソッドを使用した交差検証により、分類の品質を評価します。それらはkfoldPredictkfoldLosskfoldMarginkfoldEdgeおよびkfoldfunです。

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

  • CVMdl.Trained{1}に保存されている最初のモデルは、後の 4 グループの観測値によって学習され、最初のグループの観測値を検証用に保存します。

  • CVMdl.Trained{2}に保存されている 2 番目のモデルは、最初のグループおよび後の 3 グループの観測値によって学習され、検証のために 2 番目のグループの観測が保存されます。

  • 同様の方法で、3 番目から 5 番目までのモデルに対しても続けます。

kfoldPredictを呼び出して検証する場合、最初のモデルを使用してグループ 1 の観測に対する予測が計算され、2 番目のモデルにはグループ 2 が計算され、以降同様です。つまり、それぞれの観測値に対する応答は、その観測値ではなく学習したモデルによって推定されます。

構築

CVMdl= crossval(Mdl)は、分類モデル (Mdl) から交差検証済みの分類モデルを作成します。

あるいは、

  • CVDiscrMdl = fitcdiscr(X,Y,Name,Value)

  • CVKNNMdl = fitcknn(X,Y,Name,Value)

  • CVNetMdl = fitcnet(X,Y,Name,Value)

  • CVNBMdl = fitcnb(X,Y,Name,Value)

  • CVSVMMdl = fitcsvm(X,Y,Name,Value)

  • CVTreeMdl = fitctree(X,Y,Name,Value)

Name'CrossVal''KFold''Holdout''Leaveout'または'CVPartition'のいずれかである場合、交差検証されたモデルを作成します。構文の詳細については、fitcdiscrfitcknnfitcnetfitcnbfitcsvmおよびfitctreeを参照してください。

入力引数

Mdl

分類モデル。次のいずれかを指定します。

  • fitctreeを使用して学習させた分類木

  • fitcdiscrを使用して学習させた判別分析分類器

  • fitcnetを使用して学習させたニューラル ネットワーク分類器

  • fitcnbを用いて学習した単純ベイズ分類器

  • fitcknnを使用して学習させた最近傍分類器

  • fitcsvmを使用して学習させたサポート ベクター マシン分類器

プロパティ

BinEdges

数値予測子のビンのエッジ。p 個の数値ベクトルが含まれている cell 配列を指定します。p は予測子の個数です。各ベクトルには、数値予測子のビンのエッジを含めます。カテゴリカル予測子はビン化されないので、カテゴリカル予測子の場合は、この cell 配列の要素を空にします。

数値予測子がビン化されるのは、木学習器を使用してモデルに学習をさせるときに名前と値の引数'NumBins'として正の整数スカラーを指定した場合だけです。'NumBins'の値が空 (既定) である場合、BinEdgesプロパティは空になります。

学習済みモデルmdlBinEdgesプロパティを使用することにより、ビン化された予測子データXbinnedを再現できます。

X = mdl.X; % Predictor data Xbinned = zeros(size(X)); edges = mdl.BinEdges; % Find indices of binned predictors. idxNumeric = find(~cellfun(@isempty,edges)); if iscolumn(idxNumeric) idxNumeric = idxNumeric'; end for j = idxNumeric x = X(:,j); % Convert x to array if x is a table. if istable(x) x = table2array(x); end % Group x into bins by using thediscretizefunction. xbinned = discretize(x,[-inf; edges{j}; inf]); Xbinned(:,j) = xbinned; end
数値予測子の場合、1 からビンの個数までの範囲にあるビンのインデックスがXbinnedに格納されます。カテゴリカル予測子の場合、Xbinnedの値は 0 になります。XNaNが含まれている場合、対応するXbinnedの値はNaNになります。

CategoricalPredictors

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。予測子データの行に観測値が含まれていると仮定すると、CategoricalPredictorsには、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値が格納されます。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

Mdlが学習済みの判別分析分類器である場合、CategoricalPredictorsは常に空 ([]) になります。

ClassNames

モデルの学習に使用した一意なクラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。

Cost

正方行列。Cost(i,j)は真のクラスがiである場合に 1 つの点をクラスjに分類するためのコストです (行は真のクラス、列は予測したクラスに対応します)。Costの行と列の順序は、ClassNamesのクラスの順序に対応します。Costの行および列の数は、応答に含まれている一意なクラスの数です。

CVModelが交差検証済みのClassificationDiscriminantモデル、ClassificationKNNモデルまたはClassificationNaiveBayesモデルの場合、ドット表記を使用してコスト行列をたとえばCostMatrixなどに変更することができます。

CVModel。Cost = CostMatrix;

CrossValidatedModel

交差検証済みモデルの名前。文字ベクトル。

KFold

交差検証済みモデルで使用される分割数。正の整数。

ModelParameters

CVModelのパラメーターを保持しているオブジェクト。

NumObservations

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

Partition

交差検証済みモデルの作成に使用されるクラスCVPartitionの分割。

PredictorNames

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

Prior

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

CVModelが交差検証済みのClassificationDiscriminantモデルまたはClassificationNaiveBayesモデルの場合、ドット表記を使用して事前確率のベクトルをたとえばpriorVectorなどに変更することができます。

CVModel。之前= priorVector;

ResponseName

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

ScoreTransform

スコア変換。文字ベクトルまたは関数ハンドルを指定します。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は、行列 (元のスコア) を受け入れて同じサイズの行列 (変換したスコア) を返さなければなりません。

Trained

学習済みの学習器。コンパクトな分類モデルの cell 配列。

W

スケーリングされたweights。長さnのベクトル、Xの観測値の数。

X

予測子の値の行列または table。

Y

各観測値のクラス ラベルを指定する categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列。Yの各エントリは、Xで該当する観測の応答値です。

オブジェクト関数

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

コピーのセマンティクス

値。値のクラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

分類木モデルのk分割交差検証誤差を評価します。

フィッシャーのアヤメのデータセットを読み込みます。

loadfisheriris

既定のオプションを使用して分類木を学習させます。

Mdl = fitctree(meas,species);

分類木モデルを交差検証します。

CVMdl = crossval(Mdl);

10 分割交差検証損失を推定します。

L = kfoldLoss(CVMdl)
L = 0.0533

SVM アルゴリズムの検定セットの陽性クラス事後確率を推定します。

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

loadionosphere

SVM 分類器を学習させます。20% のホールドアウト標本を指定します。予測子を標準化してクラスの順序を指定することをお勧めします。

rng(1)% For reproducibilityCVSVMModel = fitcsvm(X,Y,'Holdout',0.2,'Standardize',true,...'ClassNames',{'b','g'});

CVSVMModelは学習させたClassificationPartitionedModel交差検証分類器です。

観測スコアを、'g'として分類される観測の事後確率にマッピングするために最適なスコア関数を推定します。

ScoreCVSVMModel = fitSVMPosterior(CVSVMModel);

ScoreSVMModelは学習させたClassificationPartitionedModel交差検証分類器で、学習データから推定された最適スコア変換関数が含まれます。

標本外の陽性クラス事後確率を推定します。最初の 10 件の標本外観測の結果を表示します。

[~,OOSPostProbs] = kfoldPredict(ScoreCVSVMModel); indx = ~isnan(OOSPostProbs(:,2)); hoObs = find(indx);% Holdout observation numbersOOSPostProbs = [hoObs, OOSPostProbs(indx,2)]; table(OOSPostProbs(1:10,1),OOSPostProbs(1:10,2),...“VariableNames”,{'ObservationIndex','PosteriorProbability'})
ans=10×2 tableObservationIndex PosteriorProbability ________________ ____________________ 6 0.17379 7 0.89638 8 0.0076606 9 0.91603 16 0.026714 22 4.6086e-06 23 0.9024 24 2.4131e-06 38 0.00042687 41 0.86427

ヒント

学習させた交互検定済みの SVM 分類器の事後確率を推定するには、fitSVMPosteriorを使用します。

拡張機能