ドキュメンテーション

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

TreeBagger クラス

決定木の集団のバギング

説明

TreeBagger は、分類または回帰のいずれかについて決定木の集団をバギングします。"バギング" とは、"bootstrap aggregation" を意味します。集団内の各ツリーは、個々に抽出された入力データのブートストラップ複製上で成長します。この複製に含まれない観測値は、このツリーにとって "out of bag" となります。未観測データのツリーの集団の予測を計算するため、TreeBagger は個別のツリーの予測値の平均を取ります。バギングされた集団の予測誤差を推定するには、out-of-bag 観測値について各ツリーの予測値を計算し、各観測値について集団全体でのこれらの予測値を平均します。次に、予測した out-of-bag 応答とこの観測値での真の値とを比較します。

個別のツリーの成長に関して、TreeBaggerClassificationTreeRegressionTree の機能に依存します。特に、ClassificationTreeRegressionTree は各決定分割について無作為に選択された特徴量の個数をオプションの入力引数として受け入れます。

compact メソッドは、別のクラス CompactTreeBagger のオブジェクトを、新しいデータに対する予測を行うための十分な情報と共に返します。この情報には、(分類に対する) ツリーの集団、変数名、クラス名が含まれます。CompactTreeBagger が必要とするメモリは、TreeBagger より少量ですが、集団のためにより多くのツリーを生育させるメソッドをもっているのは TreeBagger だけです。TreeBagger を使用してツリーの集団を成長させ、学習データにアクセスする必要がなくなったら、それ以降はコンパクトなバージョンの学習済み集団を操作する方を選択することができます。

構築

TreeBaggerバギングされた決定木の集団を作成する

メソッド

append集団に新しいツリーを追加する
compact決定木のコンパクトな集団
error誤差 (誤判別の確率または MSE)
fillprox学習データの近接行列
growTrees追加のツリーの育成と集団への追加
margin分類マージン
mdsprox近接行列の多次元尺度構成法
meanMargin平均分類マージン
oobErrorout-of-bag 誤差
oobMarginout-of-bag マージン
oobMeanMarginout-of-bag 平均マージン
oobPredictout-of-bag 観測に対する集団予測
predict予測応答

プロパティ

ClassNames

応答変数 Y 用のクラス名を含むセル配列です。回帰木の場合、このプロパティは空です。

ComputeOOBPrediction

観測の学習用に out-of-bag 予測を計算するかどうかを指定する論理フラグです。既定の設定は false です。

このフラグが true の場合、次のプロパティを使用できます。

  • OOBIndices

  • OOBInstanceWeight

このフラグが true の場合、次のメソッドを呼び出すことができます。

  • oobError

  • oobMargin

  • oobMeanMargin

ComputeOOBPredictorImportance

変数の重要度の out-of-bag 推定を計算するかどうかを指定する論理フラグです。既定の設定は false です。このフラグが true の場合、ComputeOOBPrediction も true になります。

このフラグが true の場合、次のプロパティを使用できます。

  • OOBPermutedPredictorDeltaError

  • OOBPermutedPredictorDeltaMeanMargin

  • OOBPermutedPredictorCountRaiseMargin

Cost

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

このプロパティは次のようになります。

  • 読み取り専用

  • 回帰木の集団の場合は空 ([])

DefaultYfit

predictoobPredict が返す既定値。DefaultYfit プロパティで、予測が不可能な場合にどのような予測値を返すかを指定します。たとえば、oobPredict で集団のすべてのツリーで in-bag である観測の予測を行う必要があるとします。

  • 分類では、このプロパティを '' または 'MostPopular' に設定できます。'MostPopular' (既定の設定) を選択すると、プロパティ値は学習データの中で最も可能性の高いクラスの名前になります。'' を選択すると、in-bag の観測値が out-of-bag の誤差およびマージンの計算から除外されます。

  • 回帰では、このプロパティを任意のスカラー値に設定できます。既定値は学習データの応答値の平均です。このプロパティを NaN に設定すると、in-bag の観測が out-of-bag の誤差およびマージンの計算から除外されます。

DeltaCriterionDecisionSplit

各変数の分割全体で合計され、成長したツリーの集団全体で平均化された分割基準の変化を示す、サイズが 1 行 Nvars 列の数値配列です。

InBagFraction

各ブートストラップ複製について復元抽出により無作為に選択される観測値の割合。各複製のサイズは、Nobs × InBagFraction により指定されます。Nobs は、学習セット内の観測数です。既定値は 1 です。

MergeLeaves

同じ親をもつ決定木の葉を、総リスクを減少させない分割のためにマージするかどうかを指定する論理フラグ。既定値は false です。

Method

ツリーで使用されるメソッド。分類集団には 'classification'、回帰集団には 'regression' の値を使用できます。

MinLeafSize

ツリー リーフ 1 枚あたりの観測値の最小個数。MinLeafSize の既定の設定は、分類の場合は 1、回帰の場合は 5 です。決定木のトレーニングでは、MinParent 値を 2*MinLeafSize に設定する必要があります。

NumTrees

集団内の決定木の数と等しいスカラー値。

NumPredictorSplit

1 行Nvars 列のサイズの数値配列であり、各要素はそれぞれの予測子による分割数を、すべてのツリーで合計したものです。

NumPredictorsToSample

各決定分割で無作為に選択する予測子変数または特徴変数の個数。既定では、NumPredictorsToSample は分類の場合は変数の総数の平方根、回帰の場合は変数の総数の 3 分の 1 に設定されています。

OOBIndices

Nobs 行 NumTrees 列の論理配列。Nobs は学習データの観測数、NumTrees は集団内のツリーの数です。(i,j) 要素の値が true の場合、観測 i がツリー j について out-of-bag であることを示します。つまり、観測 i がツリー j を成長させるための学習データとして選択されなかったことを意味します。

OOBInstanceWeight

観測ごとの out-of-bag 応答を計算するために使用されたツリーの数を含む、Nobs 行 1 列の数値配列。Nobs は集団の作成に使用された学習データの観測数です。

OOBPermutedPredictorCountRaiseMargin

1 行 Nvars 列のサイズの数値配列であり、予測子変数 (特徴量) ごとの変数重要度の尺度を含みます。いずれの変数の場合も、その変数の値が out-of-bag 観測内で並べ替えられた場合に、上昇した分離マージンの数と低下した分離マージンの数との差が尺度になります。この尺度はツリーごとに計算され、集団全体で平均化されてから、集団全体の標準偏差で除算されます。回帰木の場合、このプロパティは空です。

OOBPermutedPredictorDeltaError

1 行 Nvars 列のサイズの数値配列であり、予測子変数 (特徴量) ごとの重要度の尺度を含みます。いずれの変数の場合も、その変数の値が out-of-bag 観測内で並べ替えられた場合、予測誤差の増加を尺度とします。この尺度はツリーごとに計算され、集団全体で平均化されてから、集団全体の標準偏差で除算されます。

OOBPermutedPredictorDeltaMeanMargin

1 行 Nvars 列のサイズの数値配列であり、予測子変数 (特徴量) ごとの重要度の尺度を含みます。いずれの変数の場合も、その変数の値が out-of-bag 観測内で並べ替えられた場合、分類マージンの減少を尺度とします。この尺度はツリーごとに計算され、集団全体で平均化されてから、集団全体の標準偏差で除算されます。回帰木の場合、このプロパティは空です。

OutlierMeasure

Nobs 行 1 列のサイズの数値配列です。Nobs は学習データ内の観測値数で、観測ごとの外れ値の尺度を含んでいます。

Prior

各クラスの事前確率の数値ベクトル。Prior の要素の順序は、ClassNames のクラスの順序に対応します。

このプロパティは次のようになります。

  • 読み取り専用

  • 回帰木の集団の場合は空 ([])

Proximity

Nobs 行 Nobs 列のサイズの数値行列です。Nobs は学習データ内の観測値数で、観測値間の近接度を含んでいます。任意の 2 つの観測値の近接度は、これらの観測値がツリーの同じリーフに着地する割合として定義されます。これは、1 の対角要素と 0 ~ 1 の範囲の非対角要素をもつ対称行列です。

Prune

Prune プロパティは、決定木が枝刈りされる場合に true となり、枝刈りされない場合に false となります。集団については、決定木を枝刈りすることは推奨しません。既定値は false です。

SampleWithReplacement

決定木ごとにデータが復元抽出されるかどうかを指定する論理フラグです。TreeBagger がデータを復元抽出する場合、このプロパティは true になります。そうでない場合は false になります。既定値は true です。

TreeArguments

fitctree または fitrtree 用の引数のセル配列これらの引数は集団用に新しいツリーを成長させるために TreeBagger によって使用されます。

Trees

集団内のツリーを格納するサイズ NumTrees 行 1 列のセル配列です。

SurrogateAssociation

Nvars 行 Nvars 列のサイズをもち、変数の関連性予測尺度を成長したツリーの集団全体で平均化した行列。集団の設定を 'surrogate' から 'on' にすると、各ツリーのこの行列には、サロゲート分割で平均化された関連性予測尺度が入力されます。集団設定を 'surrogate' から 'off' (既定値) にした場合、SurrogateAssociation は対角行列になります。

PredictorNames

予測子変数 (特徴量) の名前が含まれているセル配列。これらの名前を TreeBagger に渡すには、オプションの 'names' パラメーターを使用します。既定の名前は 'x1''x2' などです。

W

長さ Nobs の重みの数値ベクトル。ここで Nobs は学習データの観測 (行) 数です。TreeBagger は集団ですべての決定木を成長させるために、これらの重みを使用します。既定の設定の Wones(Nobs,1) です。

X

サイズが Nobs 行 Nvars 列のテーブルまたは数値行列。Nobs は学習データの観測値 (行) の数、Nvars は変数 (列) の数です。予測子値のテーブルを使用して集団に学習をさせた場合、X はテーブルになります。予測子値の行列を使用して集団に学習をさせた場合、X は行列になります。このプロパティには、予測子 (または特徴) の値が格納されます。

Y

サイズが Nobs の応答データの配列。Y の要素は X の行に対応します。分類の場合、Y は真のクラス ラベルのセットです。ラベルは任意のグループ化変数、つまり数値ベクトル、論理ベクトル、文字行列、文字列のセル ベクトル、またはカテゴリカル ベクトルにすることができます。TreeBagger は、ラベルを分類用の文字列のセル配列に変換します。回帰の場合、Y は数値ベクトルです。

すべて展開する

フィッシャーのアヤメのデータセットを読み込みます。

load fisheriris

データを使用し、50 個の弱学習器を指定して、分類木のバギングされた集団の学習を実行します。木ごとにバギングしない観測値の情報を格納します。

rng(1); % For reproducibility
BaggedEnsemble = TreeBagger(50,meas,species,'OOBPrediction','On',...
    'Method','classification')
BaggedEnsemble = 

  TreeBagger
Ensemble with 50 bagged decision trees:
                    Training X:              [150x4]
                    Training Y:              [150x1]
                        Method:       classification
                 NumPredictors:                    4
         NumPredictorsToSample:                    2
                   MinLeafSize:                    1
                 InBagFraction:                    1
         SampleWithReplacement:                    1
          ComputeOOBPrediction:                    1
 ComputeOOBPredictorImportance:                    0
                     Proximity:                   []
                    ClassNames:        'setosa'    'versicolor'     'virginica'

BaggedEnsembleTreeBagger 集団です。

BaggedEnsemble.Trees は、集団を構成する学習済み分類木 (CompactClassificationTree モデル オブジェクト) の 50 行 1 列のセル ベクトルが格納されているプロパティです。

1 番目の学習済み分類木のグラフをプロットします。

view(BaggedEnsemble.Trees{1},'Mode','graph')

既定の設定では、TreeBagger は木を深く成長させます。

BaggedEnsemble.OOBIndices は、out-of-bag インデックスが論理値の行列として格納されているプロパティです。

out-of-bag 誤差を、成長した分類木の数にプロットします。

oobErrorBaggedEnsemble = oobError(BaggedEnsemble);
plot(oobErrorBaggedEnsemble)
xlabel 'Number of grown trees';
ylabel 'Out-of-bag classification error';

成長した分類木の数が増加すると、out-of-bag 誤差は減少します。

out-of-bag の観測値にラベル付けするには、BaggedEnsembleoobPredict に渡します。

ヒント

TreeBagger モデル オブジェクト BTrees プロパティには、B.NumTrees 個の CompactClassificationTree または CompactRegressionTree モデル オブジェクトが含まれているセル ベクトルが格納されます。セル ベクトルの木 t をテキストまたはグラフィックで表示するには、次のように入力します。

view(B.Trees{t})

コピーのセマンティクス

値。これがクラスの使用に与える影響については、『MATLAB® オブジェクト指向プログラミング』ドキュメンテーションの「ハンドル クラスと値クラスの比較」を参照してください。

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