Main Content

margin

アンサンブル分類モデルの分類マージン

説明

m = margin(ens,tbl,ResponseVarName) は、table tbl 内の予測子データと tbl.ResponseVarName 内の真のクラス ラベルを使用して、学習済みアンサンブル分類モデル ens分類マージン m を返します。

分類マージンは、真のクラスの分類スコアと偽のクラスの最大分類スコアの差です。mtbl と同じ行数の列ベクトルです。

m = margin(ens,tbl,Y) は、table tbl 内の予測子データと Y 内の真のクラス ラベルを使用して分類マージンを返します。

m = margin(ens,X,Y) は、行列 X 内の予測子データと Y 内の真のクラス ラベルを使用して分類マージンを返します。

m = margin(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、マージンの計算に使用するアンサンブル内の弱学習器のインデックスを指定したり、計算を並列に実行したりできます。

すべて折りたたむ

fisheriris データの平均的な花を 'versicolor' に分類するマージンを求めます。

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

load fisheriris

AdaBoostM2 を使用して 100 本のブースティング分類木のアンサンブルに学習をさせます。

t = templateTree(MaxNumSplits=1); % Weak learner template tree object
ens = fitcensemble(meas,species,"Method","AdaBoostM2","Learners",t);

平均的な花を分類し、分類マージンを求めます。

flower = mean(meas);
predict(ens,flower)
ans = 1x1 cell array
    {'versicolor'}

margin(ens,flower,"versicolor")
ans = 3.2140

入力引数

すべて折りたたむ

完全なアンサンブル分類モデル。fitcensemble で学習させた ClassificationEnsemble モデル オブジェクト、または compact で作成した CompactClassificationEnsemble モデル オブジェクトとして指定します。

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

table に格納されている標本データを使用して ens に学習させた場合、margin の入力データも table に含まれていなければなりません。

データ型: table

応答変数の名前。tbl 内の変数の名前で指定します。ens を学習させるために使用した応答変数が tbl に含まれている場合、ResponseVarName を指定する必要はありません。

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

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

データ型: char | string

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

Y の型は ens の学習に使用した分類と同じでなければならず、要素数は tbl または X の行数と等しくなければなりません。

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

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

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。X の列内の変数は、ens の学習に使用した変数と同じでなければなりません。

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

行列に格納されている標本データを使用して ens に学習させた場合、margin の入力データも行列でなければなりません。

データ型: double | single

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: margin(Mdl,X,Learners=[1 2],UseParallel=true) は、アンサンブル内の最初の 2 つの学習器をマージンの計算に使用し、並列に実行するように指定します。

margin で使用するアンサンブル内の弱学習器のインデックス。範囲 [1:ens.NumTrained] の正の整数のベクトルとして指定します。既定では、すべての学習器が使用されます。

例: Learners=[1 2 4]

データ型: single | double

学習器の観測値を使用するオプション。NT 列のサイズの logical 行列として指定します。

  • NX の行の数です。

  • T は、ens に存在する弱学習器の数です。

UseObsForLearner(i,j)true (既定) の場合、学習器 jX の行 i のクラスの予測に使用されます。

例: UseObsForLearner=logical([1 1; 0 1; 1 0])

データ型: logical matrix

並列実行のフラグ。数値または logical の 1 (true) または 0 (false) として指定します。UseParallel=true を指定した場合、関数 marginparfor を使用して for ループの反復を実行します。Parallel Computing Toolbox™ がある場合、ループが並列に実行されます。

例: UseParallel=true

データ型: logical

詳細

すべて折りたたむ

分類マージン

分類マージンは、真のクラスの分類スコアと、偽のクラスの最大分類スコアの差を表します。マージンは、行列 X と同じ行数をもつ列ベクトルです。

スコア (アンサンブル)

アンサンブルの場合、分類スコアは分類の信頼度をクラスで表したものです。スコアが高いほど、信頼度も高くなります。

アンサンブル アルゴリズムが異なれば、スコアの定義も違ってきます。さらに、スコアの範囲はアンサンブル タイプによって異なります。以下に例を示します。

  • AdaBoostM1 スコアの範囲は –∞ ~ ∞ です。

  • Bag スコアの範囲は 01 です。

拡張機能

バージョン履歴

R2011a で導入