ドキュメンテーション

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

margin

単純ベイズ分類器の分類マージン

説明

m = margin(Mdl,tbl,ResponseVarName) は、テーブル tbl に含まれている予測子データと tbl.ResponseVarName に含まれているクラス ラベルを使用して、学習済みの単純ベイズ分類器 Mdl分類マージン (m) を返します。

m = margin(Mdl,tbl,Y) は、テーブル tbl に含まれている予測子データとベクトル Y に含まれているクラス ラベルを使用して、学習済みの単純ベイズ分類器 Mdl の分類マージン (m) を返します。

m = margin(Mdl,X,Y) は、予測子データ X とクラス ラベル Y を使用して、学習済みの単純ベイズ分類器 Mdl の分類マージン (m) を返します。

入力引数

すべて展開する

単純ベイズ分類器。それぞれ fitcnb または compact により返される ClassificationNaiveBayes モデルまたは CompactClassificationNaiveBayes モデルとして指定します。

標本データ。テーブルとして指定します。tbl の各行は 1 つの観測値に、各列は 1 つの予測子変数に対応します。必要に応じて、応答変数用および観測値の重み用の追加列を tbl に含めることができます。tbl には、Mdl を学習させるために使用したすべての予測子が含まれていなければなりません。文字ベクトルの cell 配列ではない cell 配列と複数列の変数は使用できません。

table に含まれている標本データを使用して Mdl を学習させた場合、このメソッドの入力データもテーブルでなければなりません。

データ型: テーブル

応答変数の名前。tbl 内の変数の名前で指定します。

ResponseVarName には文字ベクトルまたは string スカラーを指定しなければなりません。たとえば、応答変数 ytbl.y として格納されている場合、'y' として指定します。それ以外の場合、モデルを学習させるときに、tbl の列は y を含めてすべて予測子として扱われます。

応答変数は、categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列でなければなりません。応答変数が文字配列の場合、各要素は配列の 1 つの行に対応しなければなりません。

データ型: char | string

予測子データ。数値行列として指定します。

X の各行は 1 件の観測 (インスタンスや例とも呼ばれます) に対応し、各列は 1 個の変数 (特徴とも呼ばれます) に対応します。X の列を構成する変数は、Mdl の学習に使用した変数と同じである必要があります。

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

データ型: double | single

クラス ラベル。categorical 配列、文字配列、string 配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Y のデータ型は Mdl.ClassNames と同じでなければなりません。(string 配列は文字ベクトルの cell 配列として扱われます)。

Y の長さと tbl または X の行数は、同じでなければなりません。

データ型: カテゴリカル | char | string | logical | single | double | cell

出力引数

すべて展開する

分類マージン。数値ベクトルとして返します。

msize(X,1) と同じ長さです。m の各エントリは X の対応する観測 (行) の分類マージンおよび Y の要素です。

すべて展開する

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

単純ベイズ分類器を学習させます。テスト用の 30% のホールドアウト標本を指定します。クラスの順序を指定することをお勧めします。各予測子は、ラベルに対して条件付きで正規分布すると仮定します。

CVMdl = fitcnb(X,Y,'Holdout',0.30,...
    'ClassNames',{'setosa','versicolor','virginica'});
CMdl = CVMdl.Trained{1}; ...
    % Extract the trained, compact classifier
testInds = test(CVMdl.Partition);   % Extract the test indices
XTest = X(testInds,:);
YTest = Y(testInds);

CVMdlClassificationPartitionedModel 分類器です。この分類器には Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationNaiveBayes 分類器が格納されています。

検定標本分類マージンを推定します。箱ひげ図を使用してマージンの分布を表示します。

m = margin(CMdl,XTest,YTest);

figure;
boxplot(m);
title 'Distribution of the Test-Sample Margins';

観測マージンは、観測された真のクラスのスコアから、該当するクラスのすべてのスコアの中で最大の偽のクラスのスコアを差し引いたものです。分類器のマージンは比較的大きいことが推奨されます。

分類器マージンは、特定のクラスについて真のクラスで観測されたスコアと偽のクラスの最大スコアの差を観測値ごとに測定します。特徴選択を行う方法の一つとして、複数のモデルからの検定標本マージンを比較します。この条件のみに基づき、マージンが最高となる分類器が最善の分類器と判断されます。

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

load fisheriris
X = meas;    % Predictors
Y = species; % Response
rng(1);

データセットを学習セットとテスト セットに分割します。テスト用の 30% のホールドアウト標本を指定します。

Partition = cvpartition(Y,'Holdout',0.30);
testInds = test(Partition); % Indices for the test set
XTest = X(testInds,:);
YTest = Y(testInds);

分割によりデータセットの分割が定義されます。

次の 2 つのデータセットを定義します。

  • fullX にはすべての予測子が含まれます。

  • partX。最後の 2 個の予測子が格納されます。

fullX = X;
partX = X(:,3:4);

各予測子セットの単純ベイズ分類器を学習させます。分割の定義を指定します。

FCVMdl = fitcnb(fullX,Y,'CVPartition',Partition);
PCVMdl = fitcnb(partX,Y,'CVPartition',Partition);
FCMdl = FCVMdl.Trained{1};
PCMdl = PCVMdl.Trained{1};

FullCVMdlPartCVMdlClassificationPartitionedModel 分類器です。これらの分類器には Trained プロパティが含まれています。これは 1 行 1 列の cell 配列で、学習セットにより学習させた CompactClassificationNaiveBayes 分類器が格納されています。

分類器ごとに検定標本マージンを推定します。箱ひげ図を使用してモデルごとのマージンの分布を表示します。

fullM = margin(FCMdl,XTest,YTest);
partM = margin(PCMdl,XTest(:,3:4),YTest);

figure;
boxplot([fullM partM],'Labels',{'All Predictors','Two Predictors'})
h = gca;
h.YLim = [0.98 1.01]; % Modify axis to see boxes.
title 'Boxplots of Test-Sample Margins';

マージンの分布は類似性がありますが、PCMdl の複雑度が低減されます。

詳細

すべて展開する

拡張機能