MATLAB ヘルプ センター
回帰木モデルの交差検証による回帰誤差
E = cvloss(tree)
E = cvloss(tree,Name=Value)
[E,SE,Nleaf,BestLevel] = cvloss(___)
E = cvloss(tree) は、学習済み回帰木モデル tree の交差検証による回帰誤差 (損失) E を返します。
E
tree
例
E = cvloss(tree,Name=Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、枝刈りレベル、木のサイズ、交差検証標本の数を指定できます。
Name=Value
[E,SE,Nleaf,BestLevel] = cvloss(___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、E の標準誤差、tree の葉ノードの数、および tree の最適な枝刈りレベルも返します。
SE
Nleaf
BestLevel
すべて折りたたむ
既定の回帰木について交差検証誤差を計算します。
carsmall データ セットを読み込みます。Displacement、Horsepower および Weight が応答 MPG の予測子であると考えます。
carsmall
Displacement
Horsepower
Weight
MPG
load carsmall X = [Displacement Horsepower Weight];
データ セット全体を使用して回帰木を成長させます。
Mdl = fitrtree(X,MPG);
交差検証誤差を計算します。
rng(1); % For reproducibility E = cvloss(Mdl)
E = 27.6976
E は、(分割内のテスト観測値の個数で重みを付けた) 10 分割の加重平均 MSE です。
k 分割の交差検証を適用して、すべての部分木について最適な回帰木の枝刈りレベルを探索します。
データ セット全体を使用して回帰木を成長させます。生成された木を表示します。
Mdl = fitrtree(X,MPG); view(Mdl,Mode="graph")
最下位から 2 つおよび最上位の枝刈りレベルを除き、部分木ごとに 5 分割の交差検証誤差を計算します。すべての部分木で最適な枝刈りレベルを返すように指定します。
rng(1); % For reproducibility m = max(Mdl.PruneList) - 1
m = 15
[~,~,~,bestLevel] = cvloss(Mdl,SubTrees=2:m,KFold=5)
bestLevel = 14
15 個の枝刈りレベルの中で、最適な枝刈りレベルは 14 です。
15
14
最適なレベルまで木を枝刈りします。生成された木を表示します。
MdlPrune = prune(Mdl,Level=bestLevel); view(MdlPrune,Mode="graph")
RegressionTree
回帰木モデル。fitrtree で学習させた RegressionTree モデル オブジェクトとして指定します。
fitrtree
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
Name1=Value1,...,NameN=ValueN
Name
Value
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。
例: [E,SE,Nleaf,BestLevel] = cvloss(tree,KFold=5) は、5 個の交差検証標本を使用するように指定します。
[E,SE,Nleaf,BestLevel] = cvloss(tree,KFold=5)
Subtrees
0
"all"
枝刈りレベル。昇順の非負の整数のベクトルまたは "all" として指定します。
ベクトルを指定する場合、すべての要素が 0 から max(tree.PruneList) の範囲になければなりません。0 は枝刈りしない完全な木を、max(tree.PruneList) は完全に枝刈りした木 (つまり、ルート ノードのみ) を表します。
max(tree.PruneList)
"all" を指定した場合、cvloss はすべての部分木、つまり枝刈り順序全体に作用します。これは、0:max(tree.PruneList) を指定することと同じです。
cvloss
0:max(tree.PruneList)
cvloss では、Subtrees で指定された各レベルまで tree の枝刈りを行ってから、対応する出力引数を推定します。Subtrees のサイズにより、一部の出力引数のサイズが決まります。
関数で Subtrees を呼び出すために、tree の PruneList プロパティと PruneAlpha プロパティは空以外でなければなりません。言い換えると、fitrtree を使用するときに Prune="on" を設定して tree を成長させるか、prune を使用して tree を枝刈りすることで成長させます。
PruneList
PruneAlpha
Prune="on"
prune
例: Subtrees="all"
Subtrees="all"
データ型: single | double | char | string
single
double
char
string
TreeSize
"se"
"min"
木のサイズ。次の値のいずれかとして指定します。
"se" — cvloss は、損失が最小値 (L+se、ここで L と se は Subtrees における最小値) の 1 標準偏差以内である最も高い枝刈りレベルを最適な枝刈りレベル (BestLevel) として返します。
L
se
"min" — cvloss は、損失が最も小さい Subtrees の要素を最適な枝刈りレベルとして返します。通常、この要素は Subtrees の最小要素です。
例: TreeSize="min"
TreeSize="min"
データ型: char | string
KFold
交差検証標本の数。1 より大きい正の整数値として指定します。
例: KFold=8
KFold=8
データ型: single | double
交差検証の平均二乗誤差 (損失)。Subtrees と同じ長さの数値ベクトルとして返されます。
E の標準誤差。Subtrees と同じ長さの数値ベクトルとして返されます。
枝刈りされた部分木における葉ノードの数。Subtrees と同じ長さの数値ベクトルとして返されます。葉ノードは終端ノードであり、分割ではなく応答を与えます。
最適な枝刈りレベル。数値スカラーとして返されます。値は TreeSize に応じて次のようになります。
TreeSize が "se" の場合、関数 loss は、損失が最小値 (L+se、ここで L と se は Subtrees における最小値) の 1 標準偏差以内である最も高い枝刈りレベルを返します。
loss
TreeSize が "min" の場合、関数 loss は、損失が最も小さい Subtrees の要素を返します。通常、これは Subtrees の最小要素です。
crossval を使用して交差検証木のモデルを作成し、cvloss の代わりに kfoldLoss を呼び出すことができます。交差検証を行った木を複数回調べる場合、この代替方法では時間が節約できる可能性があります。
crossval
kfoldLoss
ただし、cvloss と異なり、kfoldLoss は SE、Nleaf、または BestLevel を返しません。
すべて展開する
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
R2011a で導入
crossval | kfoldLoss | fitrtree | loss | RegressionTree
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
ヨーロッパ
アジア太平洋地域
最寄りの営業オフィスへのお問い合わせ