ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

templateTree

決定木テンプレートの作成

構文

t = templateTree
t = templateTree(Name,Value)

説明

t = templateTree はアンサンブルまたは ECOC (誤り訂正出力符号) マルチクラス モデルの学習に適した決定木学習器テンプレートを返します。以下を使用する学習器として t を指定します。

既定の決定木テンプレートを指定する場合、学習中にすべての入力引数の既定値が使用されます。決定木の型を指定することをお勧めします。たとえば分類木テンプレートには'Type','classification' を指定します。決定木の型を指定し、コマンド ウィンドウに t を表示する場合、Type を除くすべてのオプションは空 ([]) で表示されます。

t = templateTree(Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションによりテンプレートを作成します。

たとえば、カテゴリカル予測子での最適な分割を検出するためのアルゴリズム、分割基準、分割ごとに選択する予測子の数などを指定できます。

コマンド ウィンドウに t を表示する場合、すべてのオプションは、名前と値のペア引数を使用して指定する場合を除き、空 ([]) で表示されます。学習中、空のオプションに既定値が使用されます。

すべて折りたたむ

代理分岐により決定木テンプレートを作成し、このテンプレートを使用して標本データによるアンサンブル学習を実行します。

フィッシャーのアヤメのデータセットを読み込みます。

load fisheriris

代理分岐を使用する木の切り株の決定木テンプレートを作成します。

t = templateTree('Surrogate','on','MaxNumSplits',1)
t = 
Fit template for Tree.
       Surrogate: 'on'
    MaxNumSplits: 1

テンプレート オブジェクトのオプションは、SurrogateMaxNumSplits 以外は空です。t を学習関数に渡す場合、空のオプションはそれぞれの既定値で入力されます。

t をアンサンブル分類の弱学習器として指定します。

Mdl = fitcensemble(meas,species,'Method','AdaBoostM2','Learners',t)
Mdl = 
  classreg.learning.classif.ClassificationEnsemble
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
          NumObservations: 150
               NumTrained: 100
                   Method: 'AdaBoostM2'
             LearnerNames: {'Tree'}
     ReasonForTermination: 'Terminated normally after completing the requested number of training cycles.'
                  FitInfo: [100x1 double]
       FitInfoDescription: {2x1 cell}


  Properties, Methods

標本内 (再代入) 誤分類誤差を表示します。

L = resubLoss(Mdl)
L = 0.0333

与えられた気筒数、気筒ごとの排気量、馬力および重量に対して自動車の燃費を予測するアンサンブル回帰を作成します。次に、予測子の数を減らして、別のアンサンブルに学習をさせます。これらのアンサンブルの標本内予測精度を比較します。

carsmall データセットを読み込みます。学習に使用する変数をテーブルに格納します。

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

アンサンブル回帰に学習をさせます。

Mdl1 = fitrensemble(Tbl,'MPG');

Mdl1RegressionEnsemble モデルです。Mdl1 には、次のような顕著な特徴があります。

  • アンサンブル集約アルゴリズムは 'LSBoost' です。

  • アンサンブル集約アルゴリズムがブースティング アルゴリズムなので、最大 10 分割を許容する回帰木がアンサンブルを構成します。

  • 100 本の木がアンサンブルを構成します。

MPG は MATLAB® ワークスペースの変数なので、次のように入力すると同じ結果を得ることができます。

Mdl1 = fitrensemble(Tbl,MPG);

学習させたアンサンブル回帰を使用して、排気量が 200 立方インチ、150 馬力、重量 3,000 lbs の 4 気筒搭載車の燃費を予測します。

pMPG = predict(Mdl1,[4 200 150 3000])
pMPG = 25.6467

Displacement を除く Tbl 内の予測子をすべて使用して、新しいアンサンブルに学習をさせます。

formula = 'MPG ~ Cylinders + Horsepower + Weight';
Mdl2 = fitrensemble(Tbl,formula);

Mdl1Mdl2 の再代入 MSE を比較します。

mse1 = resubLoss(Mdl1)
mse1 = 0.3096
mse2 = resubLoss(Mdl2)
mse2 = 0.5861

すべての予測子に対して学習を行ったアンサンブルの方が、標本内 MSE が小さくなります。

決定木のアンサンブルにおける木の深さを制御できます。また、名前と値のペアの引数 MaxNumSplitsMinLeafSize または MinParentSize を使用すると、決定木バイナリ学習器が含まれている ECOC モデルにおける木の深さも制御できます。

  • 決定木をバギングする場合、既定の設定では fitrensemble は深い決定木を成長させます。モデルの複雑さや計算時間の削減のために、より浅い木を成長させることもできます。

  • 決定木をブースティングする場合、既定の設定では fitrensemble は浅い木を成長させます。木を深くすると、精度を向上させることができます。

carsmall データセットを読み込みます。変数 AccelerationDisplacementHorsepower および Weight を予測子として、MPG を応答として指定します。

load carsmall
X = [Acceleration Displacement Horsepower Weight];
Y = MPG;

回帰木をブースティングする場合、木の深さの制御に関する既定値は次のとおりです。

  • MaxNumSplits1。このオプションは切り株を成長させます。

  • 5 (次の場合) MinLeafSize

  • 10 (次の場合) MinParentSize

最適な分割数は次により求めます。

  1. 一連のアンサンブルを学習させます。以後のアンサンブルの最大分割数を、切り株から最大 n - 1 個の分割まで指数的に増やします。n は学習標本のサイズです。また、アンサンブルごとの学習率を 1 から 0.1 に減らします。

  2. アンサンブルの交差検証を実行します。

  3. アンサンブルごとに交差検証の平均二乗誤差 (MSE) を推定します。

  4. 交差検証の MSE を比較します。MSE が最も小さいアンサンブルは性能が最適であり、そのデータセットに最適な最大分割数、木の数、および学習率も表示されます。

深い回帰木と切り株を成長させ交差検証を実行します。欠損値がデータに含まれているので、代理分岐を使用するように指定します。これらはベンチマークとして機能します。

MdlDeep = fitrtree(X,Y,'CrossVal','on','MergeLeaves','off',...
    'MinParentSize',1,'Surrogate','on');
MdlStump = fitrtree(X,Y,'MaxNumSplits',1,'CrossVal','on','Surrogate','on');

150 個の回帰木を使用してブースティング アンサンブルを学習させます。アンサンブルに対して 5 分割の交差検証を実行します。 という数列の値を使用して分割の最大数を変化させます。m は、n - 1 を超えない値です。n は学習標本のサイズです。{0.1, 0.25, 0.5, 1}; という集合の各値に対して、それぞれの学習率を調整します。

n = size(X,1);
m = floor(log2(n - 1));
lr = [0.1 0.25 0.5 1];
maxNumSplits = 2.^(0:m);
numTrees = 150;
Mdl = cell(numel(maxNumSplits),numel(lr));
rng(1); % For reproducibility
for k = 1:numel(lr);
    for j = 1:numel(maxNumSplits);
        t = templateTree('MaxNumSplits',maxNumSplits(j),'Surrogate','on');
        Mdl{j,k} = fitrensemble(X,Y,'Method','LSBoost',...
            'NumLearningCycles',numTrees,'Learners',t,...
            'KFold',5,'LearnRate',lr(k));
    end;
end;

各アンサンブルについて相互検定の MSE を計算します。

kflAll = @(x)kfoldLoss(x,'Mode','cumulative');
errorCell = cellfun(kflAll,Mdl,'Uniform',false);
error = reshape(cell2mat(errorCell),[numTrees numel(maxNumSplits) numel(lr)]);
errorDeep = kfoldLoss(MdlDeep);
errorStump = kfoldLoss(MdlStump);

少数のアンサンブル、深い木、切り株について、アンサンブルの木の数が増加すると交差検証の MSE がどのように変化するかをプロットします。同じプロットで、学習率に関する曲線をプロットします。木の複雑さの変化を別のプロットにプロットします。木の複雑さのレベルのサブセットを選択します。

mnsPlot = [1 round(numel(maxNumSplits)/2) numel(maxNumSplits)];
figure;
for k = 1:3;
    subplot(2,2,k);
    plot(squeeze(error(:,mnsPlot(k),:)),'LineWidth',2);
    axis tight;
    hold on;
    h = gca;
    plot(h.XLim,[errorDeep errorDeep],'-.b','LineWidth',2);
    plot(h.XLim,[errorStump errorStump],'-.r','LineWidth',2);
    plot(h.XLim,min(min(error(:,mnsPlot(k),:))).*[1 1],'--k');
    h.YLim = [10 50];    
    xlabel 'Number of trees';
    ylabel 'Cross-validated MSE';
    title(sprintf('MaxNumSplits = %0.3g', maxNumSplits(mnsPlot(k))));
    hold off;
end;
hL = legend([cellstr(num2str(lr','Learning Rate = %0.2f'));...
        'Deep Tree';'Stump';'Min. MSE']);
hL.Position(1) = 0.6;

各曲線では、アンサンブル内の木の本数が最適な位置で交差検証の MSE が最小になります。

全体的に MSE が最小になる最大分割数、木の数および学習率を特定します。

[minErr,minErrIdxLin] = min(error(:));
[idxNumTrees,idxMNS,idxLR] = ind2sub(size(error),minErrIdxLin);

fprintf('\nMin. MSE = %0.5f',minErr)
Min. MSE = 18.42979
fprintf('\nOptimal Parameter Values:\nNum. Trees = %d',idxNumTrees);
Optimal Parameter Values:
Num. Trees = 1
fprintf('\nMaxNumSplits = %d\nLearning Rate = %0.2f\n',...
    maxNumSplits(idxMNS),lr(idxLR))
MaxNumSplits = 4
Learning Rate = 1.00

このアンサンブルを最適化する別の方法については、ブースティングされたアンサンブル回帰の最適化を参照してください。

この例では、Parallel Computing Toolbox™ のライセンスが必要です。

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

load carsmall
Cylinders = categorical(Cylinders);
Mfg = categorical(cellstr(Mfg));
Model_Year = categorical(Model_Year);
X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg,...
    Model_Year,Weight,MPG);
rng('default'); % For reproducibility

カテゴリカル変数で表現されるカテゴリの個数を表示します。

numCylinders = numel(categories(Cylinders))
numMfg = numel(categories(Mfg))
numModelYear = numel(categories(Model_Year))
numCylinders =

     3


numMfg =

    28


numModelYear =

     3

CylindersModel_Year には 3 つしかカテゴリがないので、予測子分割アルゴリズムの標準 CART ではこの 2 つの変数よりも連続予測子が分割されます。

データセット全体を使用して、500 本の回帰木のランダム フォレストに学習をさせます。偏りの無い木を成長させるため、予測子の分割に曲率検定を使用するよう指定します。データには欠損値が含まれているので、代理分岐を使用するよう指定します。

t = templateTree('PredictorSelection','curvature','Surrogate','on');
Mdl = fitrensemble(X,'MPG','Method','bag','NumLearningCycles',500,...
    'Learners',t);

out-of-bag 観測値を並べ替えることにより、予測子の重要度の尺度を推定します。並列計算を実行します。棒グラフを使用して推定を比較します。

options = statset('UseParallel',true);
imp = oobPermutedPredictorImportance(Mdl,'Options',options);

figure;
bar(imp);
title('Out-of-Bag Permuted Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';
Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.

このケースでは、最も重要な予測子は Model_Year であり、次に重要なのは Cylinders です。これらの結果を予測子の重要度の推定の結果と比較します。

入力引数

すべて折りたたむ

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'Surrogate','on','NumVariablesToSample','all' は代理分岐によるテンプレートを指定し、各分割で使用可能なすべての予測子を使用します。

分類木と回帰木

すべて折りたたむ

木ごとの決定分岐 (分岐ノード) の最大数。'MaxNumSplits' と正の整数をコンマ区切りのペアとして指定します。templateTree では、分岐ノードの数が MaxNumSplits 以下になるように分割します。分割の動作についての詳細は、アルゴリズムを参照してください。

ECOC モデルの決定木バイナリ学習器とバギングされた決定木の場合、既定値は n – 1 です。n は学習標本内の観測値の個数です。ブースティングされた決定木の場合、既定値は 1 です。

例: 'MaxNumSplits',5

データ型: single | double

葉マージ フラグ。'MergeLeaves''on' または 'off' のいずれかで構成されるコンマ区切りのペアとして指定します。

値が 'on' の場合、決定木は同じ親ノードから派生した葉をマージし、その親ノードに関連するリスク以上のリスク値の総和を与えます。'off' の場合、決定木は葉をマージしません。

アンサンブル モデルの場合、既定値は 'off' です。ECOC モデルの決定木バイナリ学習器の場合、既定値は 'on' です。

例: 'MergeLeaves','on'

葉ごとの観測値の最小数。'MinLeafSize' と正の整数値で構成されるコンマ区切りのペアとして指定します。各葉には少なくともツリー葉あたり MinLeafSize の観測値があります。MinParentSizeMinLeafSize の両方を指定した場合、決定木では葉の数が多くなる方の設定を使用します。つまり、MinParentSize = max(MinParentSize,2*MinLeafSize) です。

ブースティングされた決定木とバギングされた決定木を使用する場合、分類の既定値は 1、回帰の既定値は 5 です。ECOC モデルの決定木バイナリ学習器の場合、既定値は 1 です。

例: 'MinLeafSize',2

分岐ノードごとの観測値の最小数。'MinParentSize' と正の整数値で構成されるコンマ区切りのペアとして指定します。ツリーの各分岐ノードには少なくとも MinParentSize の観測値があります。MinParentSizeMinLeafSize の両方を指定した場合、決定木では葉の数が多くなる方の設定を使用します。つまり、MinParentSize = max(MinParentSize,2*MinLeafSize) です。

ブースティングされた決定木とバギングされた決定木を使用する場合、分類の既定値は 2、回帰の既定値は 10 です。ECOC モデルの決定木バイナリ学習器の場合、既定値は 10 です。

例: 'MinParentSize',4

分割ごとにランダムに選択する予測子の数。'NumVariablesToSample' と正の整数値で構成されるコンマ区切りのペアとして指定します。また、'all' を指定すると、使用可能なすべての予測子が使用されます。

ECOC モデルの決定木バイナリ学習器とブースティングされた決定木の場合、既定値は 'all' です。バギングされた決定木の場合の既定値は、分類については予測子数の平方根、回帰については予測子数の 3 分の 1 です。

例: 'NumVariablesToSample',3

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

各ノードで最適な分割予測子の選択に使用するアルゴリズム。'PredictorSelection' と次の表の値から構成されるコンマ区切りのペアとして指定します。

説明
'allsplits'

標準 CART — すべての予測子に対して可能なすべての分割について分割基準ゲインを最大化する分割予測子を選択します[1]

'curvature'曲率検定 — 各予測子と応答の間の独立性に対するカイ二乗検定の p 値を最小化する分割予測子を選択します[3][4]。学習速度は標準 CART と同等です。
'interaction-curvature'交互作用検定 — 各予測子と応答の間の独立性に対するカイ二乗検定の p 値、および予測子の各ペアと応答の間の独立性に対するカイ二乗検定の p 値を最小化する分割予測子を選択します[3]。学習速度は標準 CART より遅くなる可能性があります。

'curvature''interaction-curvature' では、すべての検定で p 値が 0.05 を超える場合、MATLAB® はノードの分割を停止します。

ヒント

  • 決定木をブースティングする場合、曲率検定と交互作用検定は推奨されません。精度が高いブースティングされた木のアンサンブルに学習をさせるには、代わりに標準 CART を使用してください。

  • 標準 CART アルゴリズムには、相違する値が少ない分割予測子 (カテゴリカル変数など) よりも、相違する値が多い分割予測子 (連続変数など) を選択する傾向があります[4]。予測子データセットが異種混合である場合や、一部の予測子が相違する値を他の変数よりも相対的に少なく含んでいる場合は、曲率検定または交互作用検定の指定を検討してください。

    • 相違する値の個数が他の予測子よりも比較的少ない予測子がある場合 (予測子データセットが異種混合である場合など)。

    • 予測子の重要度の分析が目標である場合。予測子の重要度の推定に関する詳細については、分類問題の場合は oobPermutedPredictorImportance を、回帰問題の場合は oobPermutedPredictorImportance を参照してください。

  • 標準 CART を使用して成長させた木は、予測子変数の交互作用の影響を受けません。また、多くの無関係な予測子が存在する状況では、このような木によって重要な変数が特定される可能性は、交互作用検定を適用した場合より低くなります。このため、予測子の交互作用を考慮し、重要度変数の特定を多くの無関係な変数が存在する状況で行うには、交互作用検定を指定します[3]

  • 'PredictorSelection' の値は、予測速度に影響を与えません。

例: 'PredictorSelection','curvature'

枝刈りされた部分木の最適なシーケンスを推定するフラグ。'Prune''on' または 'off' で構成されるコンマ区切りのペアとして指定します。

Prune'on' の場合、分類木学習器の学習で枝刈りは行われませんが、ECOC モデルの決定木バイナリ アンサンブルまたはアンサンブルの学習器のそれぞれに対して、枝刈りした部分木の最適シーケンスが推定されます。それ以外の場合、分類木学習器の学習では、枝刈りした部分木の最適シーケンスが推定されません。

アンサンブルの場合、既定値は 'off' です。

ECOC モデルで決定木バイナリ学習器を使用する場合、既定値は 'on' です。

例: 'Prune','on'

枝刈り条件。'PruneCriterion' と木のタイプに対して有効な枝刈り条件から構成されるコンマ区切りのペアとして指定します。

  • 分類木の場合、'error' (既定の設定) または 'impurity' を指定できます。

  • 回帰の場合、'mse' (既定値) のみ指定できます。

例: 'PruneCriterion','impurity'

分割条件。'SplitCriterion' と木のタイプに対して有効な分割条件から構成されるコンマ区切りのペアとして指定します。

  • 分類木の場合、次のようになります。

    • ジニ多様性指数の場合は 'gdi' (既定の設定)

    • twoing 規則の場合は 'twoing'

    • 最大逸脱度減少量 (クロス エントロピー) の場合は 'deviance'

  • 回帰木の場合、次のようになります。

    • 平均二乗誤差の場合は 'mse' (既定の設定)

例: 'SplitCriterion','deviance'

代理決定分岐フラグ。'Surrogate' と、'off''on''all' または正の整数で構成される、コンマ区切りのペアとして指定します。

  • 'off' に設定すると、決定木は分岐ノードで代理分岐を検出しません。

  • 'on' に設定すると、決定木は各分岐ノードで最大 10 個の代理分岐を検出します。

  • 'all' に設定すると、決定木は各分岐ノードですべての代理分岐を検出します。'all' に設定すると、処理時間およびメモリ消費量が非常に増加する可能性があります。

  • 正の整数値に設定すると、決定木は各分岐ノードで最大で指定された数の代理分岐を探します。

代理分岐を使用すると、欠損値をもつデータの予測精度が改善されます。また、予測子同士の関連性予測尺度も計算できます。

例: 'Surrogate','on'

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

分類木の場合のみ、次のようになります。

すべて折りたたむ

データの C 個のカテゴリと K (3 以上) 個のクラスをもつデータのカテゴリカル予測子での最適な分割を検索するアルゴリズム。'AlgorithmForCategorical' と次のいずれかで構成されるコンマ区切りのペアとして指定されます。

'Exact'2C–1 – 1 のすべての組み合わせを検討します。
'PullLeft'右枝にあるすべての C カテゴリから開始します。残りのカテゴリにおいて K クラスの最小不純度を実現するように、各カテゴリを左枝に移動することを検討してください。このシーケンスから、最小の不純度をもつ分割を選択します。
'PCA'(中心となるクラス確率行列の) 重み付け共分散行列の最初の主成分とそのカテゴリに対するクラス確率のベクトル間の内積を使用して、各カテゴリのスコアを計算します。スコアを昇順に並べ替え、C - 1 とおりの分割すべてを検討します。
'OVAbyClass'右枝にあるすべての C カテゴリから開始します。クラスごとに、そのクラスの確率に基づいてカテゴリの順序を設定します。最初のクラスでは、各カテゴリを左枝に順番に移動し、各移動の不純度基準を記録します。残りのクラスに対して同じ作業を繰り返します。このシーケンスから、最小の不純度をもつ分割を選択します。

ClassificationTree では、既知のクラスの数とカテゴリカル予測子のレベルを使用して分割ごとに最適なアルゴリズムのサブセットを選択します。2 つのクラスの場合、ClassificationTree では常に完全一致検索が実行されます。'AlgorithmForCategorical' 名前と値のペアの引数を使用して、特定のアルゴリズムを指定します。

例: 'AlgorithmForCategorical','PCA'

分割ノードのカテゴリ レベルの最大数。'MaxNumCategories' と非負のスカラー値で構成されるコンマ区切りのペアとして指定します。予測子が分割ノードで最大 MaxNumCategories 個のレベルをもつ場合、ClassificationTree は、完全一致検索アルゴリズムを使用してカテゴリカル予測子を分割します。それ以外の場合、ClassificationTree はあいまいアルゴリズムのいずれかを使用して最適なカテゴリカル分割を見つけます。渡す値が小さい場合、計算時間とメモリの負荷が増加することがあります。

例: 'MaxNumCategories',8

回帰木の場合のみ、次のようになります。

すべて折りたたむ

ノードごとの二次誤差の許容範囲。'QuadraticErrorTolerance' と非負のスカラー値をコンマで区切って指定します。ノードごとの二次誤差が QuadraticErrorTolerance*QED 未満になると、RegressionTree はノードの分割を停止します。QED は、決定木を成長させる前に計算したデータ全体の二次誤差です。入力配列 Y の推定平均値を YBAR で表した場合、QED = NORM(Y - YBAR) です。

例: 'QuadraticErrorTolerance',1e-4

出力引数

すべて折りたたむ

アンサンブルまたは ECOC (誤り訂正出力符号) マルチクラス モデルの学習に適した分類または回帰の決定木テンプレート。テンプレート オブジェクトとして返します。tfitcensemblefitrensemble または fitcecoc に渡して、アンサンブル分類、アンサンブル回帰または ECOC モデル用の決定木をそれぞれ作成する方法を指定します。

コマンド ウィンドウで t を表示する場合、すべての未指定のオプションは空 ([]) で表示されます。しかし、空のオプションは学習中に対応する既定値に置き換えられます。

アルゴリズム

  • MaxNumSplits に対応するため、現在の "レイヤー" に含まれているすべてのノードを分割してから分岐ノードの数をカウントします。レイヤーとは、ルート ノードから同じ距離にあるノードの集合です。分岐ノードの数が MaxNumSplits を超えた場合、以下の処理が行われます。

    1. 現在のレイヤーに含まれている分岐ノード数が、最大でも MaxNumSplits になるように、分割を解除する数を判断する。

    2. 不純度順に分岐ノードを並べ替える。

    3. 適切ではない分岐の分割を解除する。

    4. それまでに成長させた決定木を返す。

    この手順は、バランスが最大の木を生成することを目指しています。

  • 次の条件のいずれかが満たされるまで、分岐ノードをレイヤー単位で分割します。

    • MaxNumSplits + 1 個の分岐ノードが存在している。

    • 推奨されている分割を行うと、少なくとも 1 つの分岐ノードで観測値の数が MinParentSize より少なくなる。

    • 推奨される分割を行うと、少なくとも 1 つの葉ノードで観測値の数が MinLeafSize より少なくなる。

    • レイヤー内で適切な分割を検出できない。つまり、現在の枝刈り基準 (PruneCriterion 参照) では、レイヤー内で推奨されている分割を行っても状況が改善されない。このイベントの特殊なケースは、すべてのノードが純粋 (ノード内のすべての観測値が同じクラス) になる場合です。

    • PredictorSelection の値が 'curvature' または 'interaction-curvature' の場合に、すべての検定で p 値が 0.05 を超える。

    MaxNumSplitsMinLeafSize は、既定値で行われる分割に影響を与えません。'MaxNumSplits' を設定した場合、MaxNumSplits 回の分割が発生する前に、MinParentSize の値が原因となって分割が停止することもあります。

  • 決定木を成長させるときの分割予測子の選択とノード分割アルゴリズムの詳細については、分類木の場合はアルゴリズムを、回帰木の場合はアルゴリズムを参照してください。

参照

[1] Breiman, L., J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Boca Raton, FL: CRC Press, 1984.

[2] Coppersmith, D., S. J. Hong, and J. R. M. Hosking. “Partitioning Nominal Attributes in Decision Trees.” Data Mining and Knowledge Discovery, Vol. 3, 1999, pp. 197–217.

[3] Loh, W.Y. “Regression Trees with Unbiased Variable Selection and Interaction Detection.” Statistica Sinica, Vol. 12, 2002, pp. 361–386.

[4] Loh, W.Y. and Y.S. Shih. “Split Selection Methods for Classification Trees.” Statistica Sinica, Vol. 7, 1997, pp. 815–840.

R2014a で導入