Main Content

loss

アンサンブル回帰モデルの回帰誤差

説明

L = loss(ens,tbl,ResponseVarName) は、tbl 内のデータに対する ens の予測を真の応答 tbl.ResponseVarName と比較し、予測間の平均二乗誤差 L を返します。L の解釈は損失関数 (LossFun) と加重スキーム (Weights) によって異なります。一般に、優れた分類器の方が分類損失値が小さくなります。loss の式については、重み付けされた平均二乗誤差のセクションで説明しています。

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

L = loss(ens,tbl,Y) は、真の応答 Y に対する、ens の予測間の平均二乗誤差を tbl 内のデータに返します。

L = loss(ens,X,Y) は、真の応答 Y に対する、ens の予測間の平均二乗誤差を X 内のデータに返します。

L = loss(___,Name=Value) では、前の構文におけるいずれかの入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、損失関数、出力の集約レベル、計算を並列に実行するかどうかを指定できます。

すべて折りたたむ

carsmall データ セットを使用して、アンサンブル予測器の損失を求めます。

carsmall データ セットを読み込み、エンジン排気量、馬力および車両重量を予測子として選択します。

load carsmall
X = [Displacement Horsepower Weight];

回帰木のアンサンブルに学習をさせ、MPG の予測における回帰誤差を求めます。

ens = fitrensemble(X,MPG);
L = loss(ens,X,MPG)
L = 0.3463

入力引数

すべて折りたたむ

完全なアンサンブル回帰モデル。fitrensemble で学習させた RegressionEnsemble モデル オブジェクト、またはcompactで作成した CompactRegressionEnsemble モデル オブジェクトとして指定します。

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

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

データ型: table

応答変数の名前。tbl 内の変数の名前で指定します。応答変数は、数値ベクトルでなければなりません。

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

データ型: char | string

応答データ。tbl または X と同じ行数の数値列ベクトルとして指定します。Y の各エントリは、tbl または X の対応する行のデータに対する真の応答です。

Y に含まれる NaN 値は欠損値として扱われます。欠損値がある Y の観測値は、損失の計算に使用されません。

データ型: double | single

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

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

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

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

データ型: double | single

名前と値の引数

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

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

例: loss(Mdl,X,Learners=[1 2 4],UseParallel=true) は、アンサンブル内の 1 番目、2 番目、および 4 番目の学習器を使用し、計算を並列に実行するように指定します。

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

例: Learners=[1 2 4]

データ型: single | double

損失関数。"mse" (平均二乗誤差) または関数ハンドルとして指定します。関数ハンドル fun を渡す場合、loss でこの関数を次のように呼び出します。

fun(Y,Yfit,W)

ここで、YYfitW は、すべて同じ長さの数値ベクトルです。

  • Y は、観測された応答です。

  • Yfit は予測された応答です。

  • W は観測の重みです。

fun(Y,Yfit,W) の戻り値はスカラーでなければなりません。

例: LossFun="mse"

例: LossFun=@Lossfun

データ型: char | string | function_handle

出力の集約レベル。"ensemble""individual"、または "cumulative" として指定します。

説明
"ensemble"出力は、アンサンブル全体に対する損失を表すスカラー値になります。
"individual"出力は、学習させた学習器ごとに 1 つの要素をもつベクトルになります。
"cumulative"出力は、学習器の入力リストから学習器 1:J を使用して要素 J が取得されたベクトルになります。

例: Mode="individual"

データ型: char | string

NNumTrained 列のサイズの logical 行列。ここで、Nens.X の観測値の数、NumTrained は弱学習器の数です。UseObsForLearner(i,j)true (既定) の場合、学習器 jX の行 i の応答の予測に使用されます。

データ型: logical matrix

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

例: UseParallel=true

データ型: logical

観測値の重み。数値ベクトルまたは tbl 内の変数の名前を指定します。X または tbl の各行に含まれている観測値には、Weights の対応する重みが適用されます。Weights を付加した loss の式については、重み付けされた平均二乗誤差のセクションで説明しています。

数値ベクトルとして Weights を指定する場合、Weights のサイズは X または tbl の行数と等しくなければなりません。

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

独自の損失関数を指定しない場合、Weights が正規化され、合計が各クラスの事前確率の値になります。

例: Weights="W"

データ型: single | double | char | string

詳細

すべて折りたたむ

重み付けされた平均二乗誤差

n はデータの行数、xj は j 行目のデータ、yj は xj の真の応答、f(xj) は xj に対する ens の応答予測とします。w は、重み付けのベクトルとします (既定はすべて 1)。

まず、各重みを重みの合計で割り、それらの合計が 1 になるようにします: w→w/Σw。平均二乗誤差 L は次のとおりです。

L=j=1nwj(f(xj)yj)2.

拡張機能

バージョン履歴

R2011a で導入