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 を返します。Mdl
は TreeBagger
モデル オブジェクトでなければなりません。
は、1 つ以上の err
= oobQuantileError(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
を引用符で囲みます。
Mode
— アンサンブル誤差のタイプ
'ensemble'
(既定値) | 'cumulative'
| 'individual'
アンサンブル誤差のタイプ。'Mode'
と次の表の値から構成されるコンマ区切りのペアとして指定します。tau
は Quantile
の値であるとします。
値 | 説明 |
---|---|
'cumulative' |
|
'ensemble' |
|
'individual' |
|
'cumulative'
または 'individual'
の場合、Trees
を使用して分位点推定に含める木の本数を減らすと、err
の行数および対応する行のインデックスが変化します。
例: 'Mode','cumulative'
Quantile
— 分位確率
0.5
(既定値) | [0,1] の値が含まれている数値ベクトル
分位確率。'Quantile'
と区間 [0,1] の値が含まれている数値ベクトルから構成されるコンマ区切りのペアとして指定します。oobQuantileError
は、Mdl.X
の各観測値 (行) について、Quantile
内のすべての確率に対応する分位数を推定します。
例: 'Quantile',[0 0.25 0.5 0.75 1]
データ型: single
| double
Trees
— 応答の推定に使用する木のインデックス
'all'
(既定値) | 正の整数の数値ベクトル
応答の推定に使用する木のインデックス。'Trees'
と 'all'
または正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。インデックスは Mdl.Trees
のセルに対応します。各セルにはアンサンブル内の木が格納されます。Trees
の最大値は、アンサンブル内の木の本数 (Mdl.NumTrees
) 以下でなければなりません。
'all'
の場合、oobQuantileError
はアンサンブル内のすべての木を使用します (つまり、インデックスは 1:Mdl.NumTrees
になります)。
既定以外の値を指定すると、err
の行数が変化する可能性があります。
例: 'Trees',[1 10 Mdl.NumTrees]
データ型: char
| string
| single
| double
TreeWeights
— 各木の応答の重み
ones(Mdl.NumTrees,1)
(既定値) | 非負値の数値ベクトル
各木の応答の重み。'TreeWeights'
と numel(
個の非負値による数値ベクトルから構成されるコンマ区切りのペアとして指定します。trees
)trees
は Trees
の値です。
'Mode','individual'
を指定した場合、oobQuantileError
は TreeWeights
を無視します。
データ型: single
| double
出力引数
err
— out-of-bag 分位点回帰誤差の 1/2
数値スカラー | 数値行列
out-of-bag 分位点回帰誤差の 1/2。数値スカラーまたは T
行 numel(
列の行列として返されます。tau
)tau
は Quantile
の値です。
T
は、Mode
、Trees
および Quantile
の値に依存します。'Quantile',
と tau
'Trees',
を指定したとします。trees
'Mode','cumulative'
の場合、err
はnumel(
行trees
)numel(
列の数値行列になります。tau
)err(
は、j
,k
)Mdl.Trees(
の学習器を使用したtrees
(1:j
))
の累積的な out-of-bag 分位点回帰誤差です。tau
(k
)'Mode','ensemble'
の場合、err
は1
行numel(
列の数値ベクトルになります。tau
)err(
は、k
)Mdl.Trees(
の学習器を使用したtrees
)
の累積的な out-of-bag 分位点回帰誤差です。tau
(k
)'Mode','individual'
の場合、err
はnumel(
行trees
)numel(
列の数値行列になります。tau
)err(
は、j
,k
)Mdl.Trees(
の学習器を使用したtrees
(j
))
の out-of-bag 分位点回帰誤差です。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');
Mdl
は TreeBagger
アンサンブルです。
分位点回帰を実行し、予測された条件付き中央値を使用してアンサンブル全体の MAD を out-of-bag 推定します。
oobErr = oobQuantileError(Mdl)
oobErr = 1.5349
oobErr
は、アンサンブル全体に対する分位点回帰誤差の不偏推定です。
out-of-bag 分位点回帰誤差の使用による適切なアンサンブル サイズの特定
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')
すべての分位数誤差曲線は、約 50 本の木に学習をさせた後で横ばい状態になっているように見えます。したがって、50 本の木に学習をさせれば、3 つの分位確率の分位数誤差を最小化するために十分であると考えられます。
詳細
out-of-bag
バギング アンサンブルにおいて、特定の学習器について学習標本から除外されている観測値は "out-of-bag" です。特定の学習器の学習に使用される場合、観測値は "in-bag" です。
学習器をバギングすると、サイズ n のブートストラップ標本 (つまり、無作為に復元抽出された標本) が各学習器について選択され、対応するブートストラップ標本を使用して学習器の学習が行われます。n 個の観測値から n 個を復元抽出すると、各学習器について平均で約 37% の観測値が除外されます。
out-of-bag アンサンブル誤差は、out-of-bag 観測値のみを使用して推定されるアンサンブル誤差であり、真のアンサンブル誤差の不偏推定量です。
分位点回帰誤差
実際の予測子データと応答が与えられた場合のモデルの "分位点回帰誤差" は、加重平均絶対偏差 (MAD) です。モデルが応答を過小に予測する場合、偏差の重みは分位確率 τ になります。モデルが応答を過大に予測する場合、偏差の重みは分位確率 1 - τ になります。
つまり、τ の分位点回帰誤差は次のようになります。
yj は真の応答 j、 はモデルが予測する τ の分位数、wj は観測値の重み j です。
ヒント
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 で導入
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)