RegressionTree
説明
バイナリ分割により回帰を行う決定木。クラス RegressionTree
のオブジェクトは、predict
メソッドを使用して、新しいデータに対する応答を予測できます。オブジェクトには学習に使用したデータが格納されているため、resubPredict
を使用して再代入予測を計算できます。
作成
説明
RegressionTree
オブジェクトの作成には fitrtree
を使用します。
プロパティ
BinEdges
— 数値予測子のビンのエッジ
p 個の数値ベクトルの cell 配列
この プロパティ は読み取り専用です。
数値予測子のビンのエッジ。p 個の数値ベクトルが含まれている cell 配列を指定します。p は予測子の個数です。各ベクトルには、数値予測子のビンのエッジを含めます。カテゴリカル予測子はビン化されないので、カテゴリカル予測子の場合は、この cell 配列の要素を空にします。
数値予測子がビン化されるのは、木学習器を使用してモデルに学習をさせるときに名前と値の引数 'NumBins'
として正の整数スカラーを指定した場合だけです。'NumBins'
の値が空 (既定) である場合、BinEdges
プロパティは空になります。
学習済みモデル mdl
の BinEdges
プロパティを使用することにより、ビン化された予測子データ 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
Xbinned
に格納されます。カテゴリカル予測子の場合、Xbinned
の値は 0 になります。X
に NaN
が含まれている場合、対応する Xbinned
の値は NaN
になります。
CategoricalPredictors
— カテゴリカル予測子のインデックス
正の整数のベクトル | []
この プロパティ は読み取り専用です。
カテゴリカル予測子のインデックス。正の整数のベクトルとして指定します。CategoricalPredictors
には、対応する予測子がカテゴリカルであることを示すインデックス値が格納されます。インデックス値の範囲は 1 ~ p
です。p
はモデルの学習に使用した予測子の数です。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]
) になります。
データ型: single
| double
CategoricalSplit
— カテゴリカル分割
n
行 2 列の cell 配列
この プロパティ は読み取り専用です。
カテゴリカル分割。n
行 2 列の cell 配列として返されます。ここで、n
は tree
内のカテゴリカル分割の数です。CategoricalSplit
の各行は、カテゴリカル分割用の左と右の値になります。カテゴリカル予測子変数 z
に基づくカテゴリカル分割をもつ各枝ノード j
において、z
が CategoricalSplit(j,1)
にあれば左の子を選択し、z
が CategoricalSplit(j,2)
にあれば右の子を選択します。分割はツリーのノードと同じ順序で行われます。これらの分割用のノードは、cuttype
を実行し 'categorical'
カットを上から下に選択すれば見つかります。
データ型: cell
Children
— 各ノードの子ノードの数
n
行 2 列の配列
この プロパティ は読み取り専用です。
tree
内の各ノードの子ノードの数。各ノードの子ノードの数を含む n
行 2 列の配列として返されます。ここで、n
はノード数です。葉ノードは子ノード 0
をもちます。
データ型: double
CutCategories
— 枝で使用されるカテゴリ
n
行 2 列の cell 配列
この プロパティ は読み取り専用です。
tree
内の枝で使用されるカテゴリ。n
行 2 列の cell 配列として返されます。ここで、n
はノード数です。カテゴリカル予測子変数 X
に基づく各枝ノード i
に対して、X
が CutCategories{i,1}
内のカテゴリである場合は左側の子が選択され、X
が CutCategories{i,2}
内のカテゴリである場合は右側の子が選択されます。連続予測子に基づく枝ノードと葉ノードに対する CutCategories
の列は両方とも空です。
CutPoint
には 'continuous'
切り取りの切り取り点が含まれ、CutCategories
にはカテゴリ セットが含まれます。
データ型: cell
CutPoint
— 切り取り点として使用される値
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の切り取り点として使用される値。n
要素のベクトルとして返されます。ここで、n
はノード数です。連続予測子変数 X
に基づく各枝ノード i
において、X<CutPoint(i)
の場合は左側の子が選択され、X>=CutPoint(i)
の場合は右側の子が選択されます。カテゴリカル予測子に基づく枝ノードと葉ノードに対する CutPoint
は NaN
です。
CutPoint
には 'continuous'
切り取りの切り取り点が含まれ、CutCategories
にはカテゴリ セットが含まれます。
データ型: double
CutPredictor
— 各ノードの分枝に使用される変数の名前
cell 配列
この プロパティ は読み取り専用です。
tree
内の各ノードの分枝に使用される変数の名前。n
要素の cell 配列として返されます。ここで、n
はノード数です。これらの変数は、"切り取り変数" と呼ばれることもあります。葉ノードの場合、CutPredictor
には空の文字ベクトルが格納されます。
CutPoint
には 'continuous'
切り取りの切り取り点が含まれ、CutCategories
にはカテゴリ セットが含まれます。
データ型: cell
CutPredictorIndex
— 各ノードの分枝に使用される変数のインデックス
n
要素の配列
この プロパティ は読み取り専用です。
tree
内の各ノードの分枝に使用される変数のインデックス。n
要素の配列として返されます。ここで、n
はノード数です。詳細については、CutPredictor
を参照してください。
データ型: double
CutType
— 各ノードの切り取りのタイプ
n
要素の cell 配列
この プロパティ は読み取り専用です。
tree
内の各ノードの切り取りのタイプ。n
要素の cell 配列として返されます。ここで、n
はノード数です。各ノード i
に対して CutType{i}
は次のいずれかです。
'continuous'
— 変数X
と切り取り点v
に対して、切り取りがX < v
形式で定義されている場合。'categorical'
— 変数X
がカテゴリ セット内の値を受け取るかどうかによって切り取りが定義されている場合。''
—i
が葉ノードの場合。
CutPoint
には 'continuous'
切り取りの切り取り点が含まれ、CutCategories
にはカテゴリ セットが含まれます。
データ型: cell
ExpandedPredictorNames
— 展開された予測子名
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
展開された予測子名。文字ベクトルの cell 配列として返されます。
モデルがカテゴリカル変数用のエンコーディングを使用している場合、ExpandedPredictorNames
には展開された変数を表す名前が格納されます。それ以外の場合、ExpandedPredictorNames
は PredictorNames
と同じです。
データ型: cell
HyperparameterOptimizationResults
— ハイパーパラメーターの交差検証最適化の説明
BayesianOptimization
オブジェクト | ハイパーパラメーターおよび関連する値のテーブル
この プロパティ は読み取り専用です。
ハイパーパラメーターの交差検証最適化の説明。BayesianOptimization
オブジェクト、またはハイパーパラメーターと関連する値の table として返されます。作成時に名前と値のペア OptimizeHyperparameters
が空ではない場合、これは空ではありません。値は、作成時の名前と値のペア HyperparameterOptimizationOptions
の設定によって決まります。
'bayesopt'
(既定) —BayesianOptimization
クラスのオブジェクト'gridsearch'
または'randomsearch'
— 使用したハイパーパラメーター、観測された目的関数の値(交差検証損失)、および最低 (最良) から最高 (最悪) までの観測値の順位が格納されているテーブル
IsBranchNode
— 枝ノードのインジケーター
logical ベクトル
この プロパティ は読み取り専用です。
枝ノードのインジケーター。n
要素の logical ベクトルとして返されます。それぞれについて、tree
の枝ノードの場合は true
、葉ノードの場合は false
になります。
データ型: logical
ModelParameters
— tree
の学習に使用されるパラメーター
TreeParams
オブジェクト
この プロパティ は読み取り専用です。
tree
の学習に使用されるパラメーター。TreeParams
オブジェクトとして返されます。すべてのパラメーター値を表示するには、「tree.ModelParameters
」と入力します。特定のパラメーターにアクセスするには、ドット表記を使用します。
NodeError
— 各ノードの平均二乗誤差
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の各ノードの平均二乗誤差。n
要素のベクトルとして返されます。ここで、n
はツリー内のノード数です。
データ型: double
NodeMean
— 各ノードの観測値の平均値
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の各ノードの観測値の平均値。n
要素のベクトルとして返されます。ここで、n
はツリー内のノード数です。NodeMean
の配列のすべての要素は、ノードのすべての観測値に対する真の Y
値を平均です。
データ型: double
NodeProbability
— ノードの条件を満たす元データ内の観測値の割合
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の各ノードの条件を満たす元データ内の観測値の割合。n
要素のベクトルとして返されます。ここで、n
はツリー内のノード数です。
データ型: double
NodeRisk
— 各ノードのリスク
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の各ノードのリスク。n
要素のベクトルとして返されます。ここで、n
はツリー内のノード数です。各ノードのリスクは、ノード確率によって重み付けされたノード誤差です。
データ型: double
NodeSize
— ノードのサイズ
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内のノードのサイズ。n
要素のベクトルとして返されます。ここで、n
はツリー内のノード数です。ノードのサイズは、ノードの条件を満たすツリーを作成するために使用されるデータ内の観測値の数になります。
データ型: double
NumNodes
— ノードの数
正の整数
この プロパティ は読み取り専用です。
tree
内のノードの数。正の整数として返されます。
データ型: double
NumObservations
— 学習データに含まれている観測値の数
正の整数
この プロパティ は読み取り専用です。
学習データ内の観測値の数。正の整数として返されます。入力データまたは応答データに欠損値がある場合、NumObservations
は入力データの行数よりも少なくなることがあります。
データ型: double
Parent
— ノードの親の数
n
要素のベクトル
この プロパティ は読み取り専用です。
tree
内の各ノードの親の数。n
要素の整数ベクトルとして返されます。ここで、n
はツリー内のノード数です。ルート ノードの親は 0
です。
データ型: double
PredictorNames
— 予測子名
文字ベクトルの cell 配列
この プロパティ は読み取り専用です。
予測子名。文字ベクトルの cell 配列を指定します。PredictorNames
のエントリの順序は学習データと同じになります。
データ型: cell
PruneAlpha
— ツリーの枝刈りのアルファ値
実数ベクトル
ツリーの枝刈りのアルファ値。枝刈りレベルごとに 1 つの要素をもつ実数ベクトルとして返されます。枝刈りレベルの範囲が 0 ~ M の場合、PruneAlpha
には昇順に並べ替えられた M + 1 要素が含まれます。PruneAlpha(1)
は枝刈りレベル 0 (枝刈りなし) を表し、PruneAlpha(2)
は枝刈りレベル 1 を表すというように続いていきます。
ɑ 値の意味については、決定木での枝刈り順序の作成方法を参照してください。
データ型: double
PruneList
— ツリー内の各ノードの枝刈りレベル
整数ベクトル
ツリー内の各ノードの枝刈りレベル。NumNodes
個の要素をもつ整数ベクトルとして返されます。枝刈りレベルの範囲は 0 (枝刈りなし) から M です。M は最下位の葉からルート ノードまでの距離です。
詳細については、枝刈りを参照してください。
データ型: double
ResponseName
— 応答変数の名前
文字ベクトル
この プロパティ は読み取り専用です。
応答変数の名前。文字ベクトルとして返されます。
データ型: char
ResponseTransform
— 応答を変換するための関数
'none'
(既定値) | 関数ハンドル
生の応答値 (平均二乗誤差) を変換するための関数。関数ハンドルまたは 'none'
として指定します。既定の 'none'
は変換なしを意味します。つまり、'none'
は @(x)x
と同じ意味になります。関数ハンドルは、応答値の行列を受け入れて同じサイズの行列を返さなければなりません。
ドット表記を使用して関数 ResponseTransform
を追加または変更します。
tree.ResponseTransform = @function
データ型: char
| function_handle
RowsUsed
— 当てはめに使用される元の予測子データ X
の行
logical ベクトル
この プロパティ は読み取り専用です。
当てはめに使用される元の予測子データ X
の行。n
要素の logical ベクトルとして返されます。ここで、n
は X
の行数です。オブジェクトの作成に X
のすべての行を使用する場合、RowsUsed
は空の配列 ([]
) になります。
データ型: logical
SurrogateCutCategories
— 代理分岐に使用されるカテゴリ
n
要素の cell 配列
この プロパティ は読み取り専用です。
代理分岐に使用されるカテゴリ。n
要素の cell 配列として返されます。ここで、n
は tree
内のノード数です。各ノード k
に対して、SurrogateCutCategories{k}
は cell 配列です。SurrogateCutCategories{k}
の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogateCutCategories{k}
の各要素は、連続代理予測子の場合は空の文字ベクトル、カテゴリカル代理予測子の場合はカテゴリをもつ 2 要素 cell 配列になります。2 要素 cell 配列の最初の要素には、この代理分岐によって左の子に割り当てられたカテゴリがリストされ、この 2 要素 cell 配列の 2 番目の要素には、この代理分岐によって右の子に割り当てられたカテゴリがリストされます。各ノードの代理分岐変数の順序は、SurrogateCutVar
に存在する変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutCategories
には空のセルが含まれます。
データ型: cell
SurrogateCutFlip
— 代理分岐に使用される数値切り取り点の割り当て
n
要素の cell 配列
この プロパティ は読み取り専用です。
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
には空の配列が含まれます。
データ型: cell
SurrogateCutPoint
— 代理分岐に使用される数値
n
要素の cell 配列
この プロパティ は読み取り専用です。
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 である場合、右の子が選択されます。各ノードの代理分岐変数の順序は、SurrogateCutPredictor
によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPoint
には空のセルが含まれます。
データ型: cell
SurrogateCutPredictor
— 各ノードの代理分岐に使用される変数の名前
n
要素の cell 配列
この プロパティ は読み取り専用です。
tree
内の各ノードの代理分岐に使用される変数の名前。n
要素の cell 配列として返されます。ここで、n
は tree
内のノード数です。SurrogateCutPredictor
の各要素は、このノードの代理分岐変数の名前をもつ cell 配列です。変数は、最適予測子との結びつきの予測尺度によって降順に並べ替えられており、かつ正の予測尺度をもつ変数のみが含まれています。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPredictor
には空のセルが含まれます。
データ型: cell
SurrogateCutType
— 各ノードの代理分岐のタイプ
n
要素の cell 配列
この プロパティ は読み取り専用です。
tree
内の各ノードの代理分岐のタイプ。n
要素の cell 配列として返されます。ここで、n
は tree
内のノード数です。各ノードの k
で、SurrogateCutType{k}
はこのノードの代理分岐変数のタイプをもつ cell 配列です。変数は、最適予測子との結びつきの予測尺度によって降順に並べ替えられており、かつ正の予測尺度をもつ変数のみが含まれています。各ノードにおける代理分岐変数の順序は、SurrogateCutPredictor
によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutType
には空のセルが含まれます。代理分岐のタイプは、切り取りが変数 Z
に対して Z
<V
の形式で定義されている場合は 'continuous'
に、切り取りが Z
がカテゴリのセットの値を取るかどうかによって定義されている場合は切り取り点 V
または 'categorical'
のいずれかになります。
データ型: cell
SurrogatePredictorAssociation
— 代理分岐の関連性予測尺度
n
要素の cell 配列
この プロパティ は読み取り専用です。
tree
内の代理分岐の関連性予測尺度。n
要素の cell 配列として返されます。ここで、n
は tree
内のノード数です。各ノード k
に対して、SurrogatePredictorAssociation{k}
は数値ベクトルです。SurrogatePredictorAssociation{k}
の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrogatePredictorAssociation{k}
の各要素は、最適分割とこの代理分岐間の関連性予測尺度を与えます。各ノードの代理分岐変数の順序は、SurrogateCutPredictor
に存在する変数の順序になります。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogatePredictorAssociation
には空のセルが含まれます。
データ型: cell
W
— ツリー内のスケーリングされた重み
数値ベクトル
この プロパティ は読み取り専用です。
tree
内のスケーリングされた重み。数値ベクトルとして返されます。W
の長さは n
(学習データの行数) です。
データ型: double
X
— 予測子の値
実数行列 | テーブル
この プロパティ は読み取り専用です。
予測子の値。実数行列または table として返されます。X
の各列が 1 つの変数 (予測子) を表し、各行が 1 つの観測値を表します。
データ型: double
| table
Y
— 応答データ
数値列ベクトル
この プロパティ は読み取り専用です。
応答データ。X
と同じ行数の数値列ベクトルとして返されます。Y
の各エントリは X
の対応する行のデータに対する応答です。
データ型: double
オブジェクト関数
compact | 回帰木モデルのサイズの縮小 |
crossval | 機械学習モデルの交差検証 |
cvloss | 回帰木モデルの交差検証による回帰誤差 |
gather | GPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集 |
lime | Local Interpretable Model-agnostic Explanations (LIME) |
loss | Regression error for regression tree model |
nodeVariableRange | 決定木ノードの変数範囲の取得 |
partialDependence | 部分依存の計算 |
plotPartialDependence | 部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成 |
predict | 回帰木モデルの使用による応答の予測 |
predictorImportance | 回帰木の予測子の重要度の推定 |
prune | 回帰木の枝刈りによる回帰部分木のシーケンスの生成 |
resubLoss | 回帰木モデルの再代入損失 |
resubPredict | 再代入による回帰木の応答の予測 |
shapley | シャープレイ値 |
surrogateAssociation | Mean 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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
Simulink® に回帰木モデルの予測を統合するには、Statistics and Machine Learning Toolbox™ ライブラリにある RegressionTree Predict ブロックを使用するか、MATLAB® Function ブロックを関数
predict
と共に使用します。fitrtree
を使用して回帰木モデルに学習をさせる場合、以下の制限が適用されます。名前と値の引数
ResponseTransform
の値を無名関数にすることはできません。固定小数点コードの生成では、値は'none'
(既定の設定) でなければなりません。代理分岐は使用できません。つまり、名前と値の引数
Surrogate
の値は'off'
でなければなりません。固定小数点コードの生成およびコーダー コンフィギュアラーを使用するコード生成ではカテゴリカル予測子 (
logical
、categorical
、char
、string
、またはcell
) がサポートされません。名前と値の引数CategoricalPredictors
は使用できません。カテゴリカル予測子をモデルに含めるには、モデルを当てはめる前にdummyvar
を使用してカテゴリカル予測子を前処理します。
詳細は、コード生成の紹介を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
次のオブジェクト関数は GPU 配列を完全にサポートしています。
次のオブジェクト関数は GPU 配列のサポートに制限があります。
オブジェクト関数は次のいずれかに該当する場合に GPU で実行されます。
モデルが GPU 配列を使用して当てはめられている。
オブジェクト関数に渡す予測子データが GPU 配列である。
オブジェクト関数に渡す応答データが GPU 配列である。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入
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)