Main Content

RegressionTree

説明

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

作成

説明

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

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

数値予測子のビンのエッジ。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 には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p です。p はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

データ型: single | double

この プロパティ は読み取り専用です。

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

データ型: cell

この プロパティ は読み取り専用です。

tree 内の各ノードの子ノードの数。各ノードの子ノードの数を含む n 行 2 列の配列として返されます。ここで、n はノード数です。葉ノードは子ノード 0 をもちます。

データ型: double

この プロパティ は読み取り専用です。

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

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

データ型: cell

この プロパティ は読み取り専用です。

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

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

データ型: double

この プロパティ は読み取り専用です。

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

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

データ型: cell

この プロパティ は読み取り専用です。

tree 内の各ノードの分枝に使用される変数のインデックス。n 要素の配列として返されます。ここで、n はノード数です。詳細については、CutPredictor を参照してください。

データ型: double

この プロパティ は読み取り専用です。

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

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

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

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

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

データ型: cell

この プロパティ は読み取り専用です。

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

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

データ型: cell

この プロパティ は読み取り専用です。

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

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

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

この プロパティ は読み取り専用です。

枝ノードのインジケーター。n 要素の logical ベクトルとして返されます。それぞれについて、tree の枝ノードの場合は true、葉ノードの場合は false になります。

データ型: logical

この プロパティ は読み取り専用です。

tree の学習に使用されるパラメーター。TreeParams オブジェクトとして返されます。すべてのパラメーター値を表示するには、「tree.ModelParameters」と入力します。特定のパラメーターにアクセスするには、ドット表記を使用します。

この プロパティ は読み取り専用です。

tree 内の各ノードの平均二乗誤差。n 要素のベクトルとして返されます。ここで、n はツリー内のノード数です。

データ型: double

この プロパティ は読み取り専用です。

tree 内の各ノードの観測値の平均値。n 要素のベクトルとして返されます。ここで、n はツリー内のノード数です。NodeMean の配列のすべての要素は、ノードのすべての観測値に対する真の Y 値を平均です。

データ型: double

この プロパティ は読み取り専用です。

tree 内の各ノードの条件を満たす元データ内の観測値の割合。n 要素のベクトルとして返されます。ここで、n はツリー内のノード数です。

データ型: double

この プロパティ は読み取り専用です。

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

データ型: double

この プロパティ は読み取り専用です。

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

データ型: double

この プロパティ は読み取り専用です。

tree 内のノードの数。正の整数として返されます。

データ型: double

この プロパティ は読み取り専用です。

学習データ内の観測値の数。正の整数として返されます。入力データまたは応答データに欠損値がある場合、NumObservations は入力データの行数よりも少なくなることがあります。

データ型: double

この プロパティ は読み取り専用です。

tree 内の各ノードの親の数。n 要素の整数ベクトルとして返されます。ここで、n はツリー内のノード数です。ルート ノードの親は 0 です。

データ型: double

この プロパティ は読み取り専用です。

予測子名。文字ベクトルの cell 配列を指定します。PredictorNames のエントリの順序は学習データと同じになります。

データ型: cell

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

ɑ 値の意味については、決定木での枝刈り順序の作成方法を参照してください。

データ型: double

ツリー内の各ノードの枝刈りレベル。NumNodes 個の要素をもつ整数ベクトルとして返されます。枝刈りレベルの範囲は 0 (枝刈りなし) から M です。M は最下位の葉からルート ノードまでの距離です。

詳細については、枝刈りを参照してください。

データ型: double

この プロパティ は読み取り専用です。

応答変数の名前。文字ベクトルとして返されます。

データ型: char

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

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

tree.ResponseTransform = @function

データ型: char | function_handle

この プロパティ は読み取り専用です。

当てはめに使用される元の予測子データ X の行。n 要素の logical ベクトルとして返されます。ここで、nX の行数です。オブジェクトの作成に X のすべての行を使用する場合、RowsUsed は空の配列 ([]) になります。

データ型: logical

この プロパティ は読み取り専用です。

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

データ型: cell

この プロパティ は読み取り専用です。

tree 内の代理分岐に使用される数値切り取り点の割り当て。n 要素の cell 配列として返されます。ここで、ntree 内のノード数です。各ノード 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 には空の配列が含まれます。

データ型: cell

この プロパティ は読み取り専用です。

tree 内の代理分岐に使用される数値。n 要素の cell 配列として返されます。ここで、ntree 内のノード数です。各ノード 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 である場合、右の子が選択されます。各ノードの代理分岐変数の順序は、SurrogateCutPredictor によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPoint には空のセルが含まれます。

データ型: cell

この プロパティ は読み取り専用です。

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

データ型: cell

この プロパティ は読み取り専用です。

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

データ型: cell

この プロパティ は読み取り専用です。

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

データ型: cell

この プロパティ は読み取り専用です。

tree 内のスケーリングされた重み。数値ベクトルとして返されます。W の長さは n (学習データの行数) です。

データ型: double

この プロパティ は読み取り専用です。

予測子の値。実数行列または table として返されます。X の各列が 1 つの変数 (予測子) を表し、各行が 1 つの観測値を表します。

データ型: double | table

この プロパティ は読み取り専用です。

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

データ型: double

オブジェクト関数

compact回帰木モデルのサイズの縮小
crossval機械学習モデルの交差検証
cvloss回帰木モデルの交差検証による回帰誤差
gatherGPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集
limeLocal Interpretable Model-agnostic Explanations (LIME)
lossRegression error for regression tree model
nodeVariableRange決定木ノードの変数範囲の取得
partialDependence部分依存の計算
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predict回帰木モデルの使用による応答の予測
predictorImportance回帰木の予測子の重要度の推定
prune回帰木の枝刈りによる回帰部分木のシーケンスの生成
resubLoss回帰木モデルの再代入損失
resubPredict再代入による回帰木の応答の予測
shapleyシャープレイ値
surrogateAssociationMean predictive measure of association for surrogate splits in regression tree
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


気筒数が 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 で導入