Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

RegressionTree クラス

スーパークラス: CompactRegressionTree

説明

バイナリ分割により回帰を行う決定木。クラス RegressionTree のオブジェクトは、predict メソッドを使用して、新しいデータに対する応答を予測できます。オブジェクトには、学習に使用したデータが格納されているため、再代入予測を計算できます。

構築

RegressionTree オブジェクトの作成には fitrtree を使用します。

プロパティ

BinEdges

数値予測子のビンのエッジ。p 個の数値ベクトルが含まれている cell 配列を指定します。p は予測子の個数です。各ベクトルには、数値予測子のビンのエッジを含めます。カテゴリカル予測子はビン化されないので、カテゴリカル予測子の場合は、この cell 配列の要素を空にします。

数値予測子がビン化されるのは、木学習器を使用してモデルに学習をさせるときに名前と値の引数 'NumBins' として正の整数スカラーを指定した場合だけです。'NumBins' の値が空 (既定) である場合、BinEdges プロパティは空になります。

学習済みモデル mdlBinEdges プロパティを使用することにより、ビン化された予測子データ Xbinned を再現できます。

X = mdl.X; % Predictor data
Xbinned = zeros(size(X));
edges = mdl.BinEdges;
% Find indices of binned predictors.
idxNumeric = find(~cellfun(@isempty,edges));
if iscolumn(idxNumeric)
    idxNumeric = idxNumeric';
end
for j = idxNumeric 
    x = X(:,j);
    % Convert x to array if x is a table.
    if istable(x) 
        x = table2array(x);
    end
    % Group x into bins by using the discretize function.
    xbinned = discretize(x,[-inf; edges{j}; inf]); 
    Xbinned(:,j) = xbinned;
end
数値予測子の場合、1 からビンの個数までの範囲にあるビンのインデックスが Xbinned に格納されます。カテゴリカル予測子の場合、Xbinned の値は 0 になります。XNaN が含まれている場合、対応する Xbinned の値は NaN になります。

CategoricalPredictors

カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

CategoricalSplit

n 行 2 列の cell 配列。ここで n は、tree 内のカテゴリカル分割の数です。CategoricalSplit の各行は、カテゴリカル分割用の左と右の値になります。カテゴリカル予測子変数 z に基づくカテゴリカル分割をもつ各枝ノード j において、zCategoricalSplit(j,1) にあれば左の子を選択し、zCategoricalSplit(j,2) にあれば右の子を選択します。分割はツリーのノードと同じ順序で行われます。これらの分割用のノードは、cuttype を実行し 'categorical' カットを上から下に選択すれば見つかります。

Children

tree の各ノードの子ノードの数を含む n 行 2 列の配列。ここで、n はノードの数です。葉ノードは子ノード 0 をもちます。

CutCategories

tree の分岐で使用されたカテゴリを表す n 行 2 列の cell 配列。n はノード数です。カテゴリカル予測子変数 x に基づく各枝ノード i に対して、xCutCategories{i,1} 内のカテゴリである場合は左側の子が選択され、xCutCategories{i,2} 内のカテゴリである場合は右側の子が選択されます。連続予測子に基づく枝ノードと葉ノードに対する CutCategories の列は両方とも空です。

CutPoint には 'continuous' 切り取りの切り取り点が含まれ、CutCategories にはカテゴリ セットが含まれます。

CutPoint

tree の切り取り点として使用される値を表す要素数 n のベクトル。ここで、n はノード数です。連続予測子変数 x に基づく各枝ノード i において、x<CutPoint(i) の場合は左側の子が選択され、x>=CutPoint(i) の場合は右側の子が選択されます。カテゴリカル予測子に基づく枝ノードと葉ノードに対する CutPointNaN です。

CutType

tree の各ノードの切り取りのタイプを示す要素数 n の cell 配列。ここで、n はノード数です。各ノード i に対して CutType{i} は次のいずれかです。

  • 'continuous' — 変数 x と切り取り点 v に対して、切り取りが x < v 形式で定義されている場合。

  • 'categorical' — 変数 x がカテゴリ セット内の値を受け取るかどうかによって切り取りが定義されている場合。

  • ''i が葉ノードの場合。

CutPoint には 'continuous' 切り取りの切り取り点が含まれ、CutCategories にはカテゴリ セットが含まれます。

CutPredictor

tree の各ノードの分岐に使用された変数名を示す要素数 n の cell 配列。n はノード数です。これらの変数は、"切り取り変数" と呼ばれることもあります。葉ノードの場合、CutPredictor には空の文字ベクトルが格納されます。

CutPoint には 'continuous' 切り取りの切り取り点が含まれ、CutCategories にはカテゴリ セットが含まれます。

CutPredictorIndex

tree の各ノードで分岐に使用される変数を対象とした、数値インデックスの n 要素配列。n はノード数です。詳細は、CutPredictorを参照してください。

ExpandedPredictorNames

展開された予測子名。文字ベクトルの cell 配列として格納されます。

モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNamesPredictorNames と同じです。

HyperparameterOptimizationResults

ハイパーパラメーターの交差検証最適化の説明。BayesianOptimization オブジェクト、またはハイパーパラメーターおよび関連する値が含まれているテーブルとして格納されます。作成時に名前と値のペア OptimizeHyperparameters が空ではない場合、これは空ではありません。値は、作成時の名前と値のペア HyperparameterOptimizationOptions の設定によって決まります。

  • 'bayesopt' (既定) — BayesianOptimization クラスのオブジェクト

  • 'gridsearch' または 'randomsearch' — 使用したハイパーパラメーター、観測された目的関数の値(交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル

IsBranchNode

n 要素の logical ベクトル ib であり、tree の各枝ノードの場合は true、各葉ノードの場合は false になります。

ModelParameters

tree のパラメーターを保持しているオブジェクト。

NumObservations

学習データの観測値の数を表す数値スカラー。入力データ X または応答 Y に欠損値がある場合、NumObservationsX の行数より少なくなる場合があります。

NodeError

tree に含まれるノードの誤差の n 要素のベクトル e。ここで、n はノード数です。e(i) は、ノード i の平均二乗誤差です。

NodeMean

tree の各ノードの平均値をもつ n 要素の数値配列。ここで n はツリーのノード数を示します。NodeMean の配列のすべての要素は、ノードのすべての観測値に対する真の Y 値を平均です。

NodeProbability

tree に含まれるノードの確率の n 要素のベクトル p。ここで、n はノード数です。ノードの確率は、ノードの条件を満たす元のデータから、観測の比率として計算されます。

NodeRisk

ツリーに含まれるノードのリスクを表す n 要素のベクトル。ここで、n はノード数です。各ノードのリスクは、ノード確率によって重み付けされたノード誤差です。

NodeSize

tree に含まれるノードのサイズの n 要素のベクトル sizes。ここで、n はノード数です。ノードのサイズは、ノードの条件を満たすツリーを作成するために使用されるデータから、観測数として定義されます。

NumNodes

tree のノード数 n

Parent

tree に含まれる各ノードの親ノードの数を含む n 要素のベクトル p。ここで、n は、ノード数です。ルート ノードの親は 0 です。

PredictorNames

予測子変数の名前の cell 配列。並びは X に現れる順です。

PruneAlpha

枝刈りレベルごとに 1 つの要素をもつ数値ベクトル。枝刈りレベルの範囲が 0 ~ M の場合、PruneAlpha には昇順に並べ替えられた M + 1 要素が含まれます。PruneAlpha(1) は枝刈りレベル 0 (枝刈りなし) を表し、PruneAlpha(2) は枝刈りレベル 1 を表すというように続いていきます。

PruneList

tree の各ノードの枝刈りレベルをもつ n 要素の数値ベクトル。ここで n はノード数を示します。枝刈りレベルの範囲は 0 (枝刈りなし) から M です。M は最下位の葉からルート ノードまでの距離です。

ResponseName

応答変数 (Y) の名前を指定する文字ベクトル。

ResponseTransform

生の応答値 (平均二乗誤差) を変換するための関数ハンドル。この関数ハンドルでは、応答値の行列を受け入れて同じサイズの行列を返さなければなりません。既定の 'none'@(x)x、つまり変換なしを表します。

ドット表記を使用して関数 ResponseTransform を追加または変更します。

tree.ResponseTransform = @function

RowsUsed

当てはめに使用した元の予測子データ (X) の行を示す n 要素の logical ベクトル。X のすべての行を使用した場合、RowsUsed は空の配列 ([]) になります。

SurrogateCutCategories

tree の代理分岐に使用するカテゴリの n 要素の cell 配列。ここで n は tree のノード数です。各ノード k に対して、SurrogateCutCategories{k} は cell 配列です。SurrogateCutCategories{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogateCutCategories{k} の各要素は、連続代理予測子の場合は空の文字ベクトル、カテゴリカル代理予測子の場合はカテゴリをもつ 2 要素 cell 配列になります。2 要素 cell 配列の最初の要素には、この代理分岐によって左の子に割り当てられたカテゴリがリストされ、この 2 要素 cell 配列の 2 番目の要素には、この代理分岐によって右の子に割り当てられたカテゴリがリストされます。各ノードにおける代理分岐変数の順序は、SurrogateCutPredictor によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutCategories には空のセルが含まれます。

SurrogateCutFlip

tree の代理分岐に使用する数値切り取り点の n 要素の cell 配列。ここで n は tree のノード数です。各ノード k に対して、SurrogateCutFlip{k} は数値ベクトルです。SurrogateCutFlip{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogateCutFlip{k} の各要素はカテゴリカル代理予測子でゼロになるか、連続代理予測子で数値切り取り点の割り当てになります。数値切り取り点の割り当ては、-1 または +1 のいずれかになります。連続予測子変数 Z に基づく数値切り取り C が含まれるすべての代理分岐では、Z < C であり、その代理分岐の切り取りの割り当てが +1 である場合、または Z ≥ C であり、その代理分岐の切り取りの割り当てが -1 である場合、左の子が選択されます。同様に、Z ≥ C であり、その代理分岐の切り取り点割り当てが +1 である場合、または Z < C であり、その代理分岐の切り取り点が -1 である場合、右の子が選択されます。各ノードにおける代理分岐変数の順序は、SurrogateCutPredictor によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutFlip には空の配列が含まれます。

SurrogateCutPoint

tree の代理分岐に使用される数値の n 要素の cell 配列。ここで n は tree のノード数です。各ノード k に対して、SurrogateCutPoint{k} は数値ベクトルです。SurrogateCutPoint{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogateCutPoint{k} の各要素は、カテゴリカル代理予測子で NaN になるか、連続代理予測子で数値切り取り点になります。連続予測子変数 Z に基づく数値切り取り C が含まれるすべての代理分岐では、Z<C であり、その代理分岐の SurrogateCutFlip が +1 である場合、または Z≥C であり、その代理分岐の SurrogateCutFlip が -1 である場合、左の子が選択されます。同様に、Z ≥ C であり、その代理分岐の SurrogateCutFlip が +1 である場合、または Z < C であり、その代理分岐の SurrogateCutFlip が -1 である場合、右の子が選択されます。各ノードの代理分岐変数の順序は、SurrCutPredictor によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPoint には空のセルが含まれます。

SurrogateCutType

tree の各ノードの代理分岐のタイプを示す n 要素の cell 配列。ここで n は tree のノード数です。各ノードの k で、SurrogateCutType{k} はこのノードの代理分岐変数のタイプをもつ cell 配列です。変数は、最適予測子との結びつきの予測尺度によって降順に並べ替えられており、かつ正の予測尺度をもつ変数のみが含まれています。各ノードにおける代理分岐変数の順序は、SurrogateCutPredictor によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutType には空のセルが含まれます。代理分岐のタイプは、変数 Z と切り取り点 V について Z < V という形式で切り取りが定義される場合は 'continuous'、一連のカテゴリの値を Z に使用するかどうかによって切り取りが定義される場合は 'categorical' にすることができます。

SurrogateCutPredictor

tree の各ノードで代理分岐に使用する変数の名前の n 要素の cell 配列。ここで n は tree のノード数です。SurrogateCutPredictor の各要素は、このノードの代理分岐変数の名前をもつ cell 配列です。変数は、最適予測子との結びつきの予測尺度によって降順に並べ替えられており、かつ正の予測尺度をもつ変数のみが含まれています。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPredictor には空のセルが含まれます。

SurrogatePredictorAssociation

tree の代理分岐に使用する関連性予測尺度の n 要素の cell 配列。ここで n は tree のノード数です。各ノード k に対して、SurrogatePredictorAssociation{k} は数値ベクトルです。SurrogatePredictorAssociation{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogatePredictorAssociation{k} の各要素は、最適分割とこの代理分岐間の関連性予測尺度を与えます。各ノードの代理分岐変数の順序は、SurrogateCutPredictor に存在する変数の順序になります。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogatePredictorAssociation には空のセルが含まれます。

W

スケールされた weights、長さ n のベクトル、X の行の数。

X

予測子の値の行列または table。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

Y

X と同じ行数の数値列ベクトル。Y の各エントリは X の対応する行のデータに対する応答です。

オブジェクト関数

compactコンパクトな回帰木
crossval交差検証を使用した決定木
cvloss交差検証による回帰誤差
gatherGPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集
limeLocal Interpretable Model-agnostic Explanations (LIME)
loss回帰誤差
nodeVariableRange決定木ノードの変数範囲の取得
partialDependence部分従属の計算
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predict回帰木の使用による応答の予測
predictorImportance回帰木の予測子の重要度の推定
prune枝刈りによる回帰サブツリーのシーケンスの作成
resubLoss再代入による回帰誤差
resubPredictツリーの再代入応答の予測
shapleyシャープレイ値
surrogateAssociation回帰木における代理分岐に対する関連性の平均予測尺度
view回帰木の表示

コピーのセマンティクス

値。値のクラスがコピー操作に与える影響については、オブジェクトのコピーを参照してください。

すべて折りたたむ

標本データを読み込みます。

load carsmall

標本データを使用して回帰木を構築します。応答変数は、ガロンあたりの走行マイル数 (MPG) です。

tree = fitrtree([Weight, Cylinders],MPG,...
                'CategoricalPredictors',2,'MinParentSize',20,...
                'PredictorNames',{'W','C'})
tree = 
  RegressionTree
           PredictorNames: {'W'  'C'}
             ResponseName: 'Y'
    CategoricalPredictors: 2
        ResponseTransform: 'none'
          NumObservations: 94


  Properties, Methods

気筒数が 4、6 および 8 で、重さが約 1.8t (4,000 ポンド) の車の燃費を予測します。

MPG4Kpred = predict(tree,[4000 4; 4000 6; 4000 8])
MPG4Kpred = 3×1

   19.2778
   19.2778
   14.3889

参考文献

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

拡張機能

バージョン履歴

R2011a で導入