ドキュメンテーション

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

RegressionTree クラス

スーパークラス: CompactRegressionTree

説明

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

構築

tree = fitrtree(x,y) は、入力変数 (予測子、特徴または属性とも呼ばれます) x と出力 (応答) y に基づいて、回帰木を返します。tree は二分木で、各分岐ノードは x の列の値に基づいて分割されます。

tree = fitrtree(x,y,Name,Value) は、追加のオプションを使用してツリーを近似します。このオプションは 1 つ以上の Name,Value のペアの引数で指定されたものです。

入力引数

すべて折りたたむ

x

予測値の行列。x の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

fitrtree は、xNaN 値を欠損値として認識します。fitrtree は、すべての欠損値のある観測を x の近似に使用しません。fitrtree は、これらの観測が有効な値をもつ場合に変数の分割を検出するために、一部の欠損値のある観測を x に使用します。

y

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

fitrtreeyNaN 値を欠損値として認識します。fitrtree は近似において y に欠損値のある観測を使用しません。

名前と値のペアの引数

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

'CategoricalPredictors' — カテゴリカル予測子のリスト数値ベクトルまたは論理ベクトル | 文字列のセル配列 | 文字行列 | 'all'

カテゴリカル予測子のリスト。'CategoricalPredictors' と以下のいずれかで構成される、コンマ区切りペアとして指定します。

  • 1 から p までのインデックスを使用する数値ベクトル。p は、x の列数を示します。

  • 長さ p の論理ベクトル。true のエントリは、対応する x の列がカテゴリカル変数であることを示します。

  • 文字列のセル配列。配列の各要素は、予測子変数の名前です。名前は PredictorNames プロパティのエントリと一致してなければなりません。

  • 文字行列。行列の各行は、予測子変数の名前です。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。

  • 'all'、すべての予測子がカテゴリカルであることを示します。

データ型: single | double | logical | char | cell

'CrossVal' — 交差検定フラグ'off' (既定値) | 'on'

交差検定フラグ。'CrossVal' と、'on' または 'off' で構成されるコンマ区切りのペアとして指定します。

'on' の場合は、fitrtree が10 分割交差検定決定木を作成します。'KFold''Holdout''Leaveout' または 'CVPartition' 名前と値のペアの引数のいずれかを使用してこの交差検定の設定をオーバーライドできます。交差検定ツリーの作成時には、4 つのオプション ('Leaveout''KFold''Holdout' または 'CVPartition') の 1 つだけを使用できます。

または、crossval メソッドを使用して、後で tree に交差検定を実施します。

例: 'CrossVal','on'

'CVPartition' — 交差検定木の分割cvpartition オブジェクト

交差検定決定木で使用する分割。'CVPartition' と、cvpartition を使用して作成されるオブジェクトで構成される、コンマ区切りのペアとして指定されます。

'CVPartition' を使用する場合は、'KFold''Holdout' または 'Leaveout' 名前と値のペアの引数のいずれも使用できません。

'Holdout' — ホールドアウト検定のデータの小数部0 (既定値) | [0,1] の範囲のスカラー値

ホールドアウト検定のデータの小数部。'Holdout' と、[0,1] の範囲内のスカラー値で構成されるコンマ区切りのペアとして指定します。ホールドアウト検定は、データの指定された小数部をテストし、データの残りの部分を学習に使用します。

'Holdout' を使用する場合は、'CVPartition''KFold' または 'Leaveout' 名前と値のペアの引数のいずれも使用できません。

例: 'Holdout',0.1

データ型: single | double

'KFold' — 分割の数10 (既定値) | 正の整数値

交差検定木で使用する分割の数。'KFold' と正の整数値で構成されるコンマ区切りのペアとして指定します。

'KFold' を使用する場合は、'CVPartition''Holdout' または 'Leaveout' 名前と値のペアの引数のいずれも使用できません。

例: 'KFold',8

データ型: single | double

'Leaveout' — Leave-one-out 法の交差検定のフラグ'off' (既定値) | 'on'

Leave-one-out 法の交差検定のフラグ。'Leaveout''on' または 'off で構成されるコンマ区切りのペアとして指定します。'on' に設定すると、Leave-one-out 法の交差検定を使用します。

'Leaveout' を使用する場合は、'CVPartition''Holdout' または 'KFold' 名前と値のペアの引数のいずれも使用できません。

例: 'Leaveout','on'

'MergeLeaves' — 葉マージ フラグ'on' (既定値) | 'off'

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

MergeLeaves'on' の場合は、RegressionTree は以下の手順に従います。

  • 同じ親ノードから派生して、親ノードに関連するリスク以上のリスク値の合計を得る葉をマージします

  • 最適な枝刈りされた部分木の最適なシーケンスを推定しますが、回帰木は枝刈りしません。

それ以外の場合、RegressionTree は葉をマージしません。

例: 'MergeLeaves','off'

'MinLeafSize' — 葉ノードの観測値の最小数1 (既定値) | 正の整数値

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

例: 'MinLeafSize',3

データ型: single | double

'MinParentSize' — 分岐ノードの観測値の最小数10 (既定値) | 正の整数値

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

例: 'MinParentSize',8

データ型: single | double

'NumVariablesToSample' — 分割に使用する予測子の数'all' (既定値) | 正の整数値

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

例: 'NumVariablesToSample',3

データ型: single | double

'PredictorNames' — 予測子変数名{'x1','x2',...} (既定値) | 文字列のセル配列

予測子変数名。'PredictorNames' と、予測子変数名を含む文字列のセル配列で構成される、コンマ区切りのペアとして指定されます。予測子変数名は x と同じ順序で配列されます。

データ型: cell

'Prune' — 枝刈りされた部分木の最適シーケンスを推定するフラグ'on' (既定値) | 'off'

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

Prune'on' の場合、RegressionTree は回帰木を作成し、枝刈りされた部分木の最適シーケンスを推定しますが、回帰木を枝刈りしません。それ以外の場合、RegressionTree は回帰木を作成しますが、枝刈りされた部分木の最適なシーケンスを推定しません。

学習させた回帰木を枝刈りするには、回帰木を prune に渡します。

例: 'Prune','off'

'PruneCriterion' — 枝刈り条件'error' (既定値)

枝刈り条件。'PruneCriterion''error' で構成されるコンマ区切りのペアとして指定します。

例: 'PruneCriterion','error'

'QuadraticErrorTolerance' — 二次誤差の許容誤差1e-6 (既定値) | 正のスカラー値

ノードあたりの二次誤差の許容誤差。'QuadraticErrorTolerance' と正のスカラー値で構成されるコンマ区切りのペアとして指定します。ノードあたりの二次誤差が QuadraticErrorTolerance*QED より小さくなるとノード分割を停止します。ここで QED は決定木が成長する前に計算された全データの二次誤差です。

例: 'QuadraticErrorTolerance',1e-4

'ResponseName' — 応答変数名'Y' (既定値) | 文字列

応答変数名。'ResponseName' と、y の応答変数の名前が格納された文字列で構成される、コンマ区切りのペアとして指定します。

例: 'ResponseName','Response'

データ型: char

'ResponseTransform' — 応答変換関数'none' (既定値) | 関数ハンドル

生の応答値を変換するための応答変換関数。'ResponseTransform' と、関数ハンドルまたは 'none' で構成されるコンマ区切りのペアとして指定します。関数ハンドルは、応答値の行列を受け入れ、同じサイズの行列を返さなければなりません。既定の文字列 'none' は、@(x)x または変換なしを表します。

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

tree.ResponseTransform = @function

データ型: function_handle

'SplitCriterion' — 分割条件'MSE' (既定値)

分割条件。'SplitCriterion''MSE' (二乗平均誤差) で構成されるコンマ区切りのペアとして指定します。

例: 'SplitCriterion','MSE'

'Surrogate' — サロゲート決定分割フラグ'off' | 'on' | 'all' | 正の整数値

サロゲート決定分割フラグ。'Surrogate' と、'on''off''all' または正の整数値で構成される、コンマ区切りのペアとして指定します。

  • 'on' のときは、fitrtree は各分岐ノードで最大 10 のサロゲート分割を検出します。

  • 正の整数値に設定すると、fitrtree は各分岐ノードで最大指定された数のサロゲート分割を検出します。

  • 'all' に設定すると、fitrtree は各分岐ノードですべてのサロゲート分割を検出します。'all' に設定すると、処理時間およびメモリ使用量が増加する可能性があります。

サロゲート分割を使用すると、欠損値をもつデータの予測精度が改善されます。また、予測子同士の関連付けの予測測定も計算できます。

例: 'Surrogate','on'

データ型: single | double

'Weights' — 観測値の重みones(size(X,1),1) (既定値) | スカラー値のベクトル

観測値の重み。'Weights' とスカラー値のベクトルで構成されるコンマ区切りのペアとして指定します。Weights の長さは、x の行数です。

データ型: single | double

プロパティ

CategoricalPredictors

カテゴリカル予測子のリスト。1 から p までのインデックスを使用する数値ベクトル。ここで、p は、X の列数を示します。

CategoricalSplits

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

Children

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

CutCategories

tree の分岐で使用されたカテゴリを表す n 行 2 列のセル配列。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 のセル配列。ここで、n はノード数です。各ノード i に対して CutType{i} は次のいずれかです。

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

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

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

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

CutPredictor

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

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

IsBranchNode

n 要素の論理ベクトル 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

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

SurrogateCutCategories

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

SurrogateCutFlip

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

SurrogateCutPredictor

tree の各ノードでサロゲート分割に使用する変数の名前の n 要素のセル配列。ここで n は tree のノード数です。SurrogateCutPredictor の各要素は、このノードのサロゲート分割変数の名前をもつセル配列です。変数は最適予測子に関連した予測測定を降順に並べ替えたもので、正の予測測定をもつ変数のみが含まれます。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrogateCutPredictor には空のセルが含まれます。

SurrogatePredictorAssociation

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

W

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

X

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

Y

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

メソッド

compactコンパクトな回帰木
crossval交差検定を使用した決定木
cvloss交差検定による回帰誤差
prune枝刈りによるサブツリーのシーケンスの作成
resubLoss再置換による回帰エラー
resubPredictツリーの再置換応答の予測

継承メソッド

loss回帰エラー
predict回帰木の応答予測
predictorImportance予測子の重要度の推定
surrogateAssociation決定木のサロゲート分割の関連付けの平均予測測定
viewツリーの表示

コピーのセマンティクス

値。コピー操作に対する値クラスの影響については、MATLAB® のドキュメンテーションの「オブジェクトのコピー」を参照してください。

すべて折りたたむ

回帰木の構築

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

load carsmall;

標本データを使用して回帰木を構築します。

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

  RegressionTree
           PredictorNames: {'W'  'C'}
             ResponseName: 'Y'
        ResponseTransform: 'none'
    CategoricalPredictors: 2
          NumObservations: 94


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

mileage4K = predict(tree,[4000 4; 4000 6; 4000 8])
mileage4K =

   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.

この情報は役に立ちましたか?