ドキュメンテーション

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

CompactClassificationTree

パッケージ: classreg.learning.classif

コンパクトな分類木

説明

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

構築

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

入力引数

tree

fitctree を使用して構築された決定木。

プロパティ

CategoricalPredictors

カテゴリカル予測子のインデックス。正の整数のベクトルを指定します。CategoricalPredictors には、カテゴリカル予測子が含まれている予測子データの列に対応するインデックス値を格納します。どの予測子もカテゴリカルではない場合、このプロパティは空 ([]) になります。

CategoricalSplits

n 行 2 列の cell 配列。ここで n は、tree 内のカテゴリカル分割の数です。CategoricalSplits の各行は、カテゴリカル分割用の左と右の値になります。カテゴリカル予測子変数 z に基づくカテゴリカル分割をもつ各分岐ノード j において、zCategoricalSplits(j,1) にあれば左の子を選択し、zCategoricalSplits(j,2) にあれば右の子を選択します。分割はツリーのノードと同じ順序で行われます。CutType プロパティの 'categorical' 切り取りを上から下に選択することによって、これらの分割のノードを検出します。

Children

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

ClassCount

tree のノードのクラス カウントを表す n 行 k 列の配列。ここで、n はノード数、k はクラス数となります。任意のノード番号 i に対して、クラス カウント ClassCount(i,:) はノード i の条件を満たす各クラスからの (ツリーの近似に使用したデータからの) 観測カウント数です。

ClassNames

重複が削除された Y の要素のリスト。ClassNames には、数値ベクトル、カテゴリカル変数のベクトル、logical ベクトル、文字配列、文字ベクトルの cell 配列のいずれかを指定できます。ClassNames は、引数 Y のデータと同じデータ型です。(string 配列は文字ベクトルの cell 配列として扱われます)。

長さが k の次元が少なくとも 1 つのプロパティの値に含まれている場合、ClassNames ではその次元に沿って (CostPrior などの) 要素の順序を指定します。

ClassProbability

tree のノードのクラス確率を表す n 行 k 列の配列。ここで、n はノード数、k はクラス数となります。任意のノード番号 i に対して、クラス確率 ClassProbability(i,:) は、ノード i の条件を満たすポイントに対する各クラスの推定確率です。

Cost

正方行列。Cost(i,j) は真のクラスが i である場合に 1 つの点をクラス j に分類するためのコストです (行は真のクラス、列は予測したクラスに対応します)。Cost の行と列の順序は、ClassNames のクラスの順序に対応します。Cost の行および列の数は、応答に含まれている一意なクラスの数です。このプロパティは読み取り専用です。

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 です。

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

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 にはカテゴリ セットが含まれます。

ExpandedPredictorNames

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

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

IsBranchNode

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

NodeClass

tree の各ノードで最も確からしいクラスの名前と n 要素の cell 配列。ここで n はツリーのノード数を示します。この配列の各要素は、ClassNames に含まれているクラス名のいずれかに等しい文字ベクトルです。

NodeError

tree に含まれるノードの誤差の n 要素のベクトル。ここで、n はノード数です。NodeError(i) は、ノード i の誤分類の確率です。

NodeProbability

tree に含まれるノードの確率の n 要素のベクトル。ここで、 n はノード数です。ノードの確率は、ノードの条件を満たす元のデータから、観測の比率として計算されます。この比率は、各クラスに割り当てられている前の確率に対して調整されます。

NodeRisk

ツリーに含まれるノードのリスクを表す n 要素のベクトル。ここで、n はノード数です。各ノードのリスクは、ノード確率で重みが付けられたこのノードの不純度の測定基準 (ジニ指数または逸脱度) です。ツリーが twoing によって成長した場合、各ノードのリスクはゼロです。

NodeSize

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

NumNodes

tree のノード数。

Parent

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

PredictorNames

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

Prior

各クラスの事前確率の数値ベクトル。Prior の要素の順序は、ClassNames のクラスの順序に対応します。Prior の要素数は、応答に含まれている一意なクラスの数です。このプロパティは読み取り専用です。

PruneAlpha

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

PruneList

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

ResponseName

応答変数 Y を表す文字ベクトル。

ScoreTransform

スコア変換用の関数ハンドル、または組み込みの変換関数を表す文字ベクトル。'none' は変換なしを意味します。等価的には、'none'@(x)x です。組み込みの変換関数のリストとカスタム変換関数の構文は、fitctree を参照してください。

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

ctree.ScoreTransform = 'function'
or
ctree.ScoreTransform = @function

SurrogateCutCategories

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

SurrogateCutFlip

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

メソッド

edge分類エッジ
loss分類誤差
margin分類マージン
predict分類木の使用によるラベルの予測
predictorImportance予測子の重要度の推定
surrogateAssociation決定木における代理分岐に対する関連性の平均予測尺度
viewツリーの表示

コピーのセマンティクス

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

すべて折りたたむ

フィッシャーのアヤメのデータのコンパクトな分類木を構築します。

load fisheriris
tree = fitctree(meas,species);
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

        4572       11260

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

詳細

すべて展開する

拡張機能

R2011a で導入