oobQuantilePredict
回帰の bag of trees による out-of-bag 観測値の分位数予測
構文
説明
は、回帰の bag of trees である YFit
= oobQuantilePredict(Mdl
)Mdl
を使用して、予測子データ Mdl.X
内のすべての out-of-bag 観測値で予測された応答の中央値のベクトルを返します。Mdl
は TreeBagger
モデル オブジェクトでなければならず、Mdl.OOBIndices
を空にすることはできません。
は、1 つ以上の YFit
= oobQuantilePredict(Mdl
,Name,Value
)Name,Value
引数のペアによって指定された追加オプションを使用します。たとえば、分位確率や、分位推定に含める木を指定します。
入力引数
Mdl
— 回帰の bag of trees
TreeBagger
モデル オブジェクト (既定値)
回帰の 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
を引用符で囲みます。
Quantile
— 分位確率
0.5
(既定値) | [0,1] の値が含まれている数値ベクトル
分位確率。'Quantile'
と区間 [0,1] の値が含まれている数値ベクトルから構成されるコンマ区切りのペアとして指定します。oobQuantilePredict
は、Mdl.X
の各観測値 (行) について、Quantile
内のすべての確率に対応する分位数を推定します。
例: 'Quantile',[0 0.25 0.5 0.75 1]
データ型: single
| double
Trees
— 応答の推定に使用する木のインデックス
'all'
(既定値) | 正の整数の数値ベクトル
応答の推定に使用する木のインデックス。'Trees'
と 'all'
または正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。インデックスは Mdl.Trees
のセルに対応します。各セルにはアンサンブル内の木が格納されます。Trees
の最大値は、アンサンブル内の木の本数 (Mdl.NumTrees
) 以下でなければなりません。
'all'
の場合、oobQuantilePredict
はインデックスとして 1:Mdl.NumTrees
を使用します。
例: 'Trees',[1 10 Mdl.NumTrees]
データ型: char
| string
| single
| double
TreeWeights
— 各木の応答の重み
非負値の数値ベクトル
各木の応答の重み。'TreeWeights'
と numel(
個の非負値による数値ベクトルから構成されるコンマ区切りのペアとして指定します。trees
)trees
は名前と値のペアの引数 Trees
の値です。
既定の設定は、ones(size(
です。trees
))
データ型: single
| double
出力引数
例
分位点回帰の使用による out-of-bag 中央値の予測
carsmall
データ セットを読み込みます。与えられたエンジン排気量に対して自動車の燃費 (MPG) を予測するモデルを考えます。
load carsmall
データ セット全体を使用して、バギング回帰木のアンサンブルに学習をさせます。100 個の弱学習器を指定し、out-of-bag インデックスを格納します。
rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',... 'OOBPrediction','on');
Mdl
は TreeBagger
アンサンブルです。
分位点回帰を実行して、すべての学習観測値について燃費の out-of-bag 中央値を予測します。
oobMedianMPG = oobQuantilePredict(Mdl);
oobMedianMPG
は、並べ替えられた Mdl.X
内の観測値が与えられた場合の応答の条件付き分布に対応する中央値が含まれている n
行 1 列の数値ベクトルです。n
は観測値の個数 (size(Mdl.X,1)
) です。
観測値を昇順に並べ替えます。同じ Figure に観測値と推定された中央値をプロットします。out-of-bag 中央値および平均応答を比較します。
[sX,idx] = sort(Mdl.X); oobMeanMPG = oobPredict(Mdl); figure; plot(Displacement,MPG,'k.'); hold on plot(sX,oobMedianMPG(idx)); plot(sX,oobMeanMPG(idx),'r--'); ylabel('Fuel economy'); xlabel('Engine displacement'); legend('Data','Out-of-bag median','Out-of-bag mean'); hold off;
百分位数の使用による out-of-bag 予測区間の推定
carsmall
データ セットを読み込みます。与えられたエンジン排気量に対して自動車の燃費 (MPG) を予測するモデルを考えます。
load carsmall
データ セット全体を使用して、バギング回帰木のアンサンブルに学習をさせます。100 個の弱学習器を指定し、out-of-bag インデックスを格納します。
rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',... 'OOBPrediction','on');
分位点回帰を実行して、out-of-bag の 2.5% および 97.5% 百分位数を予測します。
oobQuantPredInts = oobQuantilePredict(Mdl,'Quantile',[0.025,0.975]);
oobQuantPredInts
は、Mdl.X
内の out-of-bag 観測値に対応する予測区間が含まれている n
行 2 列の数値行列です。n
は観測値の個数 (size(Mdl.X,1)
) です。1 列目には 2.5% 百分位数が、2 列目には 97.5% 百分位数が含まれています。
同じ Figure に観測値と推定された中央値をプロットします。MPG
の条件付き分布がガウス分布であると仮定して、百分位数の予測区間と 95% の予測区間を比較します。
[oobMeanMPG,oobSTEMeanMPG] = oobPredict(Mdl); STDNPredInts = oobMeanMPG + [-1 1]*norminv(0.975).*oobSTEMeanMPG; [sX,idx] = sort(Mdl.X); figure; h1 = plot(Displacement,MPG,'k.'); hold on h2 = plot(sX,oobQuantPredInts(idx,:),'b'); h3 = plot(sX,STDNPredInts(idx,:),'r--'); ylabel('Fuel economy'); xlabel('Engine displacement'); legend([h1,h2(1),h3(1)],{'Data','95% percentile prediction intervals',... '95% Gaussian prediction intervals'}); hold off;
分位点回帰の使用による out-of-bag 条件付き累積分布の推定
carsmall
データ セットを読み込みます。与えられたエンジン排気量に対して自動車の燃費 (MPG) を予測するモデルを考えます。
load carsmall
データ セット全体を使用して、バギング回帰木のアンサンブルに学習をさせます。100 個の弱学習器を指定し、out-of-bag インデックスを格納します。
rng(1); % For reproducibility Mdl = TreeBagger(100,Displacement,MPG,'Method','regression',... 'OOBPrediction','on');
out-of-bag の応答の重みを推定します。
[~,YW] = oobQuantilePredict(Mdl);
YW
は、応答の重みが含まれている n 行 n 列のスパース行列です。n
は学習観測値の個数 numel(Y)
です。Mdl.X(j,:)
の観測値に対する応答の重みは YW(:,j)
にあります。応答の重みは、指定された分位確率に依存しません。
以下により、応答の out-of-bag 条件付き累積分布関数 (CCDF) を推定します。
応答を昇順にソートし、さらにそれによって導かれたインデックスを使用して応答の重みをソートします。
並べ替えられた応答の重みの各列に対する累積和を計算します。
[sortY,sortIdx] = sort(Mdl.Y); cpdf = full(YW(sortIdx,:)); ccdf = cumsum(cpdf);
ccdf(:,j)
は、与えられた観測値 j
に対する応答の経験的 out-of-bag CCDF です。
4 つの学習観測値の無作為標本を選択します。学習標本をプロットし、選択された観測値を特定します。
[randX,idx] = datasample(Mdl.X,4); figure; plot(Mdl.X,Mdl.Y,'o'); hold on plot(randX,Mdl.Y(idx),'*','MarkerSize',10); text(randX-10,Mdl.Y(idx)+1.5,{'obs. 1' 'obs. 2' 'obs. 3' 'obs. 4'}); legend('Training Data','Chosen Observations'); xlabel('Engine displacement') ylabel('Fuel economy') hold off
選択された 4 つの応答の out-of-bag CCDF を同じ Figure にプロットします。
figure; plot(sortY,ccdf(:,idx)); legend('ccdf given obs. 1','ccdf given obs. 2',... 'ccdf given obs. 3','ccdf given obs. 4',... 'Location','SouthEast') title('Out-of-Bag Conditional Cumulative Distribution Functions') xlabel('Fuel economy') ylabel('Empirical CDF')
詳細
out-of-bag
バギング アンサンブルにおいて、特定の学習器について学習標本から除外されている観測値は "out-of-bag" です。特定の学習器の学習に使用される場合、観測値は "in-bag" です。
学習器をバギングすると、サイズ n のブートストラップ標本 (つまり、無作為に復元抽出された標本) が各学習器について選択され、対応するブートストラップ標本を使用して学習器の学習が行われます。n 個の観測値から n 個を復元抽出すると、各学習器について平均で約 37% の観測値が除外されます。
out-of-bag アンサンブル誤差は、out-of-bag 観測値のみを使用して推定されるアンサンブル誤差であり、真のアンサンブル誤差の不偏推定量です。
分位点ランダム フォレスト
"分位点ランダム フォレスト" [2] は、与えられた予測子変数の値に対する応答変数の条件付き分布をモデル化するために回帰木のランダム フォレスト [1] を使用する分位点回帰法です。当てはめたモデルを使用して、応答の条件付き分布における分位数を推定できます。
分位推定以外にも、分位点回帰によって予測区間の推定や外れ値の検出ができます。以下に例を示します。
95% 分位の予測区間を推定するため、0.025 および 0.975 分位を推定する。
外れ値を検出するため、0.01 および 0.99 分位を推定する。0.01 の分位数より小さい観測値と 0.99 の分位数より大きい観測値は、すべて外れ値です。区間 [L,U] の外部にある観測値は、すべて外れ値であると考えることができます。
および
ここで
Q1 は 0.25 分位です。
Q3 は 0.75 分位です。
IQR = Q3 - Q1 ("四分位数間範囲") です。
応答の重み
"応答の重み" は、与えられた予測子空間の値に対する応答の条件付き分布を表すスカラーです。ブートストラップ標本の観測値と学習およびテストの観測値に共有される葉とにより、応答の重みが発生します。
観測値 x が与えられた場合、アンサンブル内の木 t を使用する学習標本内の観測値 j に対する応答の重みは次のようになります。
ここで
I{h} はインジケーター関数です。
St(x) は、x が含まれている木 t の葉です。
ntrain は学習観測値の個数です。
つまり、特定の木の応答の重みは、応答の条件付き相対度数分布を形成します。
アンサンブル全体の応答の重みは、木全体に対する平均です。
アルゴリズム
oobQuantilePredict
は、学習データ (Mdl.X
) 内のすべての観測値に quantilePredict
を適用することにより out-of-bag 分位数を推定します。各観測値について、その観測値が out-of-bag である木のみが使用されます。
アンサンブル内のすべての木に対して in-bag になっている観測値について、oobQuantilePredict
は応答データの標本分位数を割り当てます。つまり、oobQuantilePredict
は out-of-bag 観測値には分位点回帰を使用しません。代わりに、quantile(Mdl.Y,
を割り当てます。tau
)tau
は名前と値のペアの引数 Quantile
の値です。
参考文献
[1] Meinshausen, N. “Quantile Regression Forests.” Journal of Machine Learning Research, Vol. 7, 2006, pp. 983–999.
[2] Breiman, L. “Random Forests.” Machine Learning. Vol. 45, 2001, pp. 5–32.
バージョン履歴
R2016b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)