Main Content

oobQuantileError

回帰の bag of trees の out-of-bag 分位点損失

説明

err = oobQuantileError(Mdl) は、予測子データ Mdl.X で予測された out-of-bag 中央値に対して Mdl.Y 内の真の応答を比較し、回帰の bag of trees である Mdl を使用して、out-of-bag 平均絶対偏差 (MAD) の 1/2 を返します。MdlTreeBagger モデル オブジェクトでなければなりません。

err = oobQuantileError(Mdl,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。たとえば、分位確率、誤差のタイプ、分位点回帰誤差の推定に含める木を指定します。

入力引数

すべて展開する

回帰の bag of trees。関数 TreeBagger によって作成された TreeBagger モデル オブジェクトとして指定します。

  • Mdl.Method の値は regression でなければなりません。

  • 関数 TreeBagger を使用して Mdl に学習させる場合、名前と値のペア 'OOBPrediction','on' を指定しなければなりません。このようにすると、必要な out-of-bag 観測値のインデックスの行列が TreeBagger によって Mdl.OOBIndices に格納されます。

名前と値の引数

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

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

アンサンブル誤差のタイプ。'Mode' と次の表の値から構成されるコンマ区切りのペアとして指定します。tauQuantile の値であるとします。

説明
'cumulative'

err は、分位点回帰の累積誤差が格納されている Mdl.NumTreesnumel(tau) 列の数値行列です。err(j,k) は、Mdl.Trees(1:j) の学習器のみを使用した tau(k) の分位点回帰誤差です。

'ensemble'

err は、アンサンブル全体に対する分位点回帰の累積誤差が格納されている 1 行 numel(tau) 列の数値ベクトルです。err(k) は、tau(k) のアンサンブル分位点回帰誤差です。

'individual'

err は、個々の学習器の分位点回帰誤差が格納されている Mdl.NumTreesnumel(tau) 列の数値行列です。err(j,k) は、Mdl.Trees(j) の学習器のみを使用した tau(k) の分位点回帰誤差です。

'cumulative' または 'individual' の場合、Trees を使用して分位点推定に含める木の本数を減らすと、err の行数および対応する行のインデックスが変化します。

例: 'Mode','cumulative'

分位確率。'Quantile' と区間 [0,1] の値が含まれている数値ベクトルから構成されるコンマ区切りのペアとして指定します。oobQuantileError は、Mdl.X の各観測値 (行) について、Quantile 内のすべての確率に対応する分位数を推定します。

例: 'Quantile',[0 0.25 0.5 0.75 1]

データ型: single | double

応答の推定に使用する木のインデックス。'Trees''all' または正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。インデックスは Mdl.Trees のセルに対応します。各セルにはアンサンブル内の木が格納されます。Trees の最大値は、アンサンブル内の木の本数 (Mdl.NumTrees) 以下でなければなりません。

'all' の場合、oobQuantileError はアンサンブル内のすべての木を使用します (つまり、インデックスは 1:Mdl.NumTrees になります)。

既定以外の値を指定すると、err の行数が変化する可能性があります。

例: 'Trees',[1 10 Mdl.NumTrees]

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

各木の応答の重み。'TreeWeights'numel(trees) 個の非負値による数値ベクトルから構成されるコンマ区切りのペアとして指定します。treesTrees の値です。

'Mode','individual' を指定した場合、oobQuantileErrorTreeWeights を無視します。

データ型: single | double

出力引数

すべて展開する

out-of-bag 分位点回帰誤差の 1/2。数値スカラーまたは Tnumel(tau) 列の行列として返されます。tauQuantile の値です。

T は、ModeTrees および Quantile の値に依存します。'Quantile',tau'Trees',trees を指定したとします。

  • 'Mode','cumulative' の場合、errnumel(trees)numel(tau) 列の数値行列になります。err(j,k) は、Mdl.Trees(trees(1:j)) の学習器を使用した tau(k) の累積的な out-of-bag 分位点回帰誤差です。

  • 'Mode','ensemble' の場合、err1numel(tau) 列の数値ベクトルになります。err(k) は、Mdl.Trees(trees) の学習器を使用した tau(k) の累積的な out-of-bag 分位点回帰誤差です。

  • 'Mode','individual' の場合、errnumel(trees)numel(tau) 列の数値行列になります。err(j,k) は、Mdl.Trees(trees(j)) の学習器を使用した tau(k) の out-of-bag 分位点回帰誤差です。

すべて展開する

carsmall データ セットを読み込みます。与えられたエンジン排気量、重量および気筒数に対して自動車の燃費の平均を予測するモデルを考えます。Cylinders はカテゴリカル変数であるとします。

load carsmall
Cylinders = categorical(Cylinders);
X = table(Displacement,Weight,Cylinders,MPG);

データ セット全体を使用して、バギング回帰木のアンサンブルに学習をさせます。100 個の弱学習器を指定し、out-of-bag インデックスを格納します。

rng(1); % For reproducibility
Mdl = TreeBagger(100,X,'MPG','Method','regression','OOBPrediction','on');

MdlTreeBagger アンサンブルです。

分位点回帰を実行し、予測された条件付き中央値を使用してアンサンブル全体の MAD を out-of-bag 推定します。

oobErr = oobQuantileError(Mdl)
oobErr = 
1.5349

oobErr は、アンサンブル全体に対する分位点回帰誤差の不偏推定です。

carsmall データ セットを読み込みます。与えられたエンジン排気量、重量および気筒数に対して自動車の燃費の平均を予測するモデルを考えます。

load carsmall
X = table(Displacement,Weight,Cylinders,MPG);

データ セット全体を使用して、バギング回帰木のアンサンブルに学習をさせます。250 個の弱学習器を指定し、out-of-bag インデックスを格納します。

rng('default'); % For reproducibility
Mdl = TreeBagger(250,X,'MPG','Method','regression',...
    'OOBPrediction','on');

0.25、0.5 および 0.75 の累積的な out-of-bag 分位点回帰誤差を推定します。

err = oobQuantileError(Mdl,'Quantile',[0.25 0.5 0.75],'Mode','cumulative');

err は、累積的な out-of-bag 分位点回帰誤差が含まれている 250 行 3 列の行列です。列は分位確率に、行はアンサンブル内の木に対応します。誤差は累積的なので、前の木から集約した予測が含まれています。

同じプロットに累積的な out-of-bag 分位数誤差をプロットします。

figure;
plot(err);
legend('0.25 quantile error','0.5 quantile error','0.75 quantile error');
ylabel('Out-of-bag quantile error');
xlabel('Tree index');
title('Cumulative, Out-of-Bag, Quantile Regression Error')

Figure contains an axes object. The axes object with title Cumulative, Out-of-Bag, Quantile Regression Error, xlabel Tree index, ylabel Out-of-bag quantile error contains 3 objects of type line. These objects represent 0.25 quantile error, 0.5 quantile error, 0.75 quantile error.

すべての分位数誤差曲線は、約 50 本の木に学習をさせた後で横ばい状態になっているように見えます。したがって、50 本の木に学習をさせれば、3 つの分位確率の分位数誤差を最小化するために十分であると考えられます。

詳細

すべて展開する

ヒント

out-of-bag アンサンブル誤差推定量は、真のアンサンブル誤差に対して不偏です。したがって、ランダム フォレストのパラメーターを調整するには、交差検証を実施するのではなく out-of-bag アンサンブル誤差を推定します。

参考文献

[1] Breiman, L. "Random Forests." Machine Learning 45, pp. 5–32, 2001.

[2] Meinshausen, N. “Quantile Regression Forests.” Journal of Machine Learning Research, Vol. 7, 2006, pp. 983–999.

バージョン履歴

R2016b で導入