Main Content

CompactRegressionTree

パッケージ: classreg.learning.regr

コンパクトな回帰木

説明

コンパクトなバージョンの回帰木 (クラスは RegressionTree)。コンパクトなバージョンには、回帰木の学習のためのデータが含まれません。そのため、コンパクトな回帰木では、交差検証などの一部のタスクを実行できません。コンパクトな回帰木は、新しいデータの予測 (回帰) を行うために使用してください。

構築

ctree = compact(tree) は、完全な決定木からコンパクトな決定木を構築します。

入力引数

すべて展開する

完全な学習済み回帰木。fitrtree で構築した RegressionTree オブジェクトとして指定します。

プロパティ

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 において、CutPoint<v(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 と同じです。

IsBranchNode

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

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 を追加または変更します。

ctree.ResponseTransform = @function

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

SurrogateCutType

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

オブジェクト関数

gatherGPU からの Statistics and Machine Learning Toolbox オブジェクトのプロパティの収集
limeLocal Interpretable Model-agnostic Explanations (LIME)
loss回帰誤差
nodeVariableRangeRetrieve variable range of decision tree node
partialDependence部分従属の計算
plotPartialDependence部分依存プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成
predict回帰木の使用による応答の予測
predictorImportance回帰木の予測子の重要度の推定
shapleyシャープレイ値
surrogateAssociation回帰木における代理分岐に対する関連性の平均予測尺度
updateコード生成用にモデル パラメーターを更新
view回帰木の表示

コピーのセマンティクス

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

すべて折りたたむ

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

load carsmall

標本データの回帰木を構築します。

tree = fitrtree([Weight, Cylinders],MPG,...
    'MinParentSize',20,...
    'PredictorNames',{'W','C'});

木のコンパクトなバージョンを作成します。

ctree = compact(tree);

コンパクトな木のサイズと完全な木のサイズを比較します。

t = whos('tree'); % t.bytes = size of tree in bytes
c = whos('ctree'); % c.bytes = size of ctree in bytes
[c.bytes t.bytes]
ans = 1×2

        4311        7558

コンパクトな木は完全な木より小さくなっています。

拡張機能

バージョン履歴

R2011a で導入