ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

CompactClassificationTree クラス

コンパクトな分類木

説明

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

構築

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

入力引数

tree

ClassificationTree.fit によって構築された決定木。

プロパティ

CategoricalPredictors

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

CatSplit

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

Children

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

ClassCount

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

ClassNames

重複が削除された Y の要素のリスト。ClassNames には、数値ベクトル、カテゴリカル変数 (ノミナルまたは順序) のベクトル、論理ベクトル、文字配列、または文字列のセル配列を指定できます。ClassNames のデータ型は、引数 Y のデータ型と同じです。

ClassProb

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

Cost

正方行列。Cost(i,j) は真のクラスが i である場合に 1 つのポイントをクラス j に分類するためのコスト。

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

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

CutType

tree の各ノードの切り取りのタイプを示す要素数 n のセル配列。ここで、n はノード数です。各ノード i に対して CutType{i} は次のいずれかです。

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

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

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

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

CutVar

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

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

IsBranch

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

NodeClass

tree の各ノードで最も確からしいクラスの名前と n 要素のセル配列。ここで n はツリーのノード数を示します。この配列の各要素は、ClassNames のクラス名の 1 つに等しい文字列です。

NodeErr

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

NodeProb

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

NodeRisk

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

NodeSize

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

NumNodes

tree のノード数。

Parent

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

PredictorNames

X に現れる順序で配列される、予測子変数の名前のセル配列

Prior

各クラスの事前確率。Prior は数値ベクトルで、各エントリは対応する ClassNames プロパティに関連付けられています。

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 です。組み込みの変換関数のリスト、およびカスタム変換関数の構文は、ClassificationTree.fit を参照してください。

ドット アドレス指定によって ScoreTransform 関数を追加または変更します。

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

SurrCutCategories

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

SurrCutFlip

tree のサロゲート分割に使用する数値切り取り点の n 要素のセル配列。ここで n は tree のノード数です。各ノード k に対して、SurrCutFlip{k} は数値ベクトルです。SurrCutFlip{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrCutFlip{k} の各要素はカテゴリカル代理予測子でゼロになるか、連続代理予測子で数値切り取り点の割り当てになります。数値切り取り点の割り当ては、-1 または +1 のいずれかになります。連続予測子変数 Z に基づいた数値切り取り C をもつすべてのサロゲート分割において、Z<C でこのサロゲート分割の切り取り点割り当てが +1 であるか、Z≥C でこのサロゲート分割の切り取り点割り当てが -1 であれば左の子が選ばれます。同様に、Z≥C でこのサロゲート分割の切り取り点割り当てが +1 であるか、Z<C でこのサロゲート分割の切り取り点が -1 であれば右の子が選ばれます。各ノードにおけるサロゲート分割変数の順序は、SurrCutVar によって返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrCutFlip には空の配列が含まれます。

SurrCutPoint

tree のサロゲート分割に使用される数値の n 要素のセル配列。ここで n は tree のノード数です。各ノード k に対して、SurrCutPoint{k} は数値ベクトルです。SurrCutPoint{k} の長さは、このノードに見つかった代理予測子の数に等しくなります。SurrCutPoint{k} の各要素は、カテゴリカル代理予測子で NaN になるか、連続代理予測子で数値切り取り点になります。連続予測子変数 Z に基づいた数値切り取り C をもつ各サロゲート分割において、Z<C でこのサロゲート分割の SurrCutFlip が -1 であれば左の子が選ばれます。同様に、Z≥C でこのサロゲート分割の SurrCutFlip が +1 であるか、またはこのサロゲート分割の Z<C と SurrCutFlip が -1 であれば右の子が選ばれます。各ノードのサロゲート分割変数の順序は、SurrCutVar で返される変数の順序に一致します。このノードの最適分割変数は現れません。枝ではない (葉) ノードの場合、SurrCutPoint には空のセルが含まれます。

SurrCutType

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

SurrCutVar

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

SurrVarAssoc

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

メソッド

edge分類エッジ
loss分類エラー
margin分類マージン
meanSurrVarAssoc決定木のサロゲート分割の関連付けの平均予測測定
predict分類の予測
predictorImportance予測子の重要度の推定
viewツリーの表示

定義

不純度とノード誤差

ClassificationTree は、"不純度" または "ノード誤差" に基づいてノードを分割します。不純度とは、SplitCriterion 名前と値のペアによって、次のいずれかの意味を表します。

  • ジニ多様性指数 (gdi) — ノードのジニ指数は、次の式で表されます。

    ここで、合計はノードのクラス i 全体が対象であり、p(i) は、ノードに到達したクラス i をもつ観測クラスの割合です。クラスを 1 つだけもつノード ("純粋" ノード) のジニ指数は 0 です。それ以外のノードでは、ジニ指数は正の値です。したがって、ジニ指数はノードの不純度の基準です。

  • 逸脱度 ('deviance') — ジニ指数として、p(i) が定義されており、ノードの逸脱度は次の式で表されます。

    純粋ノードの逸脱度は 0 です。それ以外のノードでは、逸脱度は正の値です。

  • Twoing 規則 ('twoing') — Twoing はノードの純粋度の基準ではありませんが、ノードの分割を判断するための別の基準の 1 つです。L(i) は、分割後の左側の子ノードのクラス i のメンバーの割合を示し、R(i) は分割後の右側の子ノードのクラス i のメンバーの割合を示すとします。最大化するための分割基準を選択します。

    ここで、P(L) および P(R) は、それぞれ左側と右側に分割された観測値の割合を表します。式が大きい場合は、分割によって各子ノードの純粋度は高くなります。同様に、式が小さい場合には、分割によって各子ノードは互いに類似するようになり、さらに親ノードとも類似するようになります。そのため、分割によってノードの純粋度は高くはなりませんでした。

  • ノード誤差 — ノード誤差はノードで誤判別されたクラスの割合です。j がノードで最大の学習標本数をもつクラスである場合は、ノード誤差は次のように表されます。

    1 – p(j).

コピーのセマンティクス

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

フィッシャーのアヤメのデータのコンパクトな分類木を構築し、構築されたツリーと元のツリーのサイズを比較します。

load fisheriris
tree = ClassificationTree.fit(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 =
        6818       13913

参考

| |

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