主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

TreeBagger

クラス:TreeBagger

決定木の袋树の作成

個々の決定木には,過適合になる傾向があります。ブートストラップ集約された(“バギングされた”)決定木は多数の決定木の結果を結合するので,過適合の影響が少なくなり,汎化が改善されます。TreeBaggerは,データのブートストラップ標本を使用して,アンサンブル内の決定木を成長させます。また,ランダムフォレストアルゴリズム[1]の場合と同じように,TreeBaggerは各決定分岐で使用する予測子のサブセットを無作為に選択します。

既定の設定では,TreeBaggerは分類木をバギングします。代わりに回帰木をバギングするには,“方法”,“回归”を指定します。

回帰問題の場合,TreeBaggerは平均および分位点回帰(つまり,分位点回帰フォレスト[5])をサポートします。

構文

ResponseVarName Mdl = TreeBagger (NumTrees(资源)
Mdl = TreeBagger (NumTrees、资源描述、公式)
Mdl = TreeBagger (NumTrees台,Y)
B = TreeBagger (NumTrees, X, Y)
B = TreeBagger (NumTrees, X, Y,名称,值)

説明

Mdl= TreeBagger (NumTrees资源描述ResponseVarNameは、表资源描述内の標本データを使用して学習をさせた,NumTrees本のバギング分類木のアンサンブルを返します。ResponseVarNameは,资源描述内の応答変数の名前です。

Mdl= TreeBagger (NumTrees资源描述公式は,テーブル资源描述内の標本データを使用して学習させた,バギング分類木のアンサンブルを返します。公式は,Mdlのあてはめに使用する応答および资源描述内の予測子変数サブセットの説明モデルです。公式の指定にはウィルキンソンの表記法を使用します。詳細は,ウィルキンソンの表記法を参照してください。

Mdl= TreeBagger (NumTrees资源描述Yは,テーブル资源描述内の予測子変数とベクトルY内のクラスラベルを使用して,分類木のアンサンブルを返します。

Yは,応答データの配列です。Yの要素は资源描述の行に対応します。分類の場合,Yは真のクラスラベルのセットです。ラベルは任意のグループ化変数,つまり数値ベクトル,逻辑ベクトル,文字行列,字符串配列,文字ベクトルの细胞配列,または直言ベクトルにすることができます。TreeBaggerはラベルを文字ベクトルの细胞配列に変換します。回帰の場合,Yは数値ベクトルです。回帰木を成長させるには、名前と値のペア“方法”,“回归”を指定しなければなりません。

B= TreeBagger (NumTreesXYは,学習データの数値行列Xに格納されている予測子の関数として応答Yを予測するための,NumTrees本の決定木のアンサンブルBを作成します。Xの各行は観測値を,各列は予測子または特徴を表します。

B = TreeBagger (NumTrees, X, Y,名称,值)では,次のオプションパラメーターの名前と値のペアを指定します。

“InBagFraction” それぞれの新しいツリーを成長させるために入力データから復元抽出する,入力データの比率。既定値は1です。
“成本”

正方行列CC (i, j)は,真のクラスがである場合に1つの点をクラスjに分類するためのコストです(行は真のクラス,列は予測したクラスに対応します)。成本の行と列の順序は,学習済みのTreeBaggerモデルB一会プロパティにおけるクラスの順序に対応します。

または,成本は次の2つのフィールドをもつ構造体年代の場合もあります。

  • カテゴリカル変数,文字配列,字符串配列,または文字ベクトルの细胞配列としてグループ名を格納するS.ClassNames

  • S.ClassificationCosts。コスト行列Cを含みます。

既定値は,我~ = jである場合はC (i, j) = 1我=我である場合はC (i, j) = 0です。

成本の歪みが大きい場合,在袋子の標本について,ペナルティが大きいクラスの一意の観測値をオーバーサンプリングします。標本サイズが小さい場合,ペナルティが大きいクラスのout-of-bagの観測値の相対的頻度が非常に低くなることがあります。そのため,推定されたout-of-bagの誤差の変動幅が非常に大きくなり,解釈が困難になる場合があります。

“SampleWithReplacement” 復元抽出の場合は“上”,非復元抽出の場合は“关闭”。非復元抽出の場合,“InBagFraction”を1より小さい値に設定する必要があります。既定の設定は“上”です。
“OOBPrediction” 各ツリーに対して的袋子である観測値についての情報を格納する場合は“上”。この情報は,oobPredictionがアンサンブル内の各ツリーについて予測されたクラス確率を計算するために使用することができます。既定値は“关闭”です。
“OOBPredictorImportance” アンサンブル内の特徴量の重要度のout-of-bag推定値を格納する場合は“上”。既定値は“关闭”です。“上”を指定すると,“OOBPrediction”値も“上”に設定されます。予測子の重要度の分析が目標である場合は,“PredictorSelection”、“弯曲”または“PredictorSelection”、“interaction-curvature”も指定します。詳細については,fitctreeまたはfitrtreeを参照してください。
“方法” “分类”または“回归”。回帰では数値Yが必要です。
“NumPredictorsToSample” 各決定分岐で無作為に選択する変数の個数。既定の設定は、分類の場合は変数の個数の平方根、回帰の場合は変数の個数の 1/3 です。有効値は、“所有”または正の整数です。この引数を“所有”以外の任意の有効値に設定すると,Breimanのランダムフォレストアルゴリズム[1]が呼び出されます。
“NumPrint” 学習サイクルの数(成長したツリー)。この後に,学習の進行を示す診断メッセージがTreeBaggerにより表示されます。既定の設定では,診断メッセージなしです。
“MinLeafSize” ツリーリーフ1枚あたりの観測値の最小個数。既定値は分類の場合は 1、回帰の場合は 5 です。
“选项”

決定木のアンサンブルを成長させるときの計算を左右するオプションを指定する構造体。并行计算工具箱™を使用できる場合,オプション数を1にすると,複数のブートストラップ複製における決定木の計算で,複数のプロセッサを使用するように要求されます。オプション数が2の場合は,ブートストラップ複製を選択する際に乱数ストリームを使用するよう指定されます。この引数は,statsetの呼び出しで作成できます。個別のフィールドの値は,statgetの呼び出しで取得することができます。該当するstatsetパラメーターは次のとおりです。

  • “UseParallel”- - - - - -真正的かつ并行计算工具箱がインストールされている場合,並列木に既存の並列プールが使用されるか,または並列設定に応じて,プールが現在開いていない場合は,新しいプールが開いて使用されます。それ以外の場合,逐次的に計算されます。既定の設定は(逐次計算)です。

    デュアルコア以上のシステムの場合,TreeBaggerでは英特尔®スレッディングビルディングブロック(TBB)を使用して学習を並列化します。したがって,単一のコンピューターで“UseParallel”オプションを使用しても,計算がそれほど高速化しない場合や,逐次的よりも多くのメモリを消費する場合があります。英特尔TBBについての詳細は,https://software.intel.com/en-us/intel-tbbを参照してください。

  • “UseSubstreams”-真正的の場合,乱数発生器(ストリームともいう)の独立したサブストリームを使用して各ブートストラップ複製を選択します。このオプションは,サブストリームをサポートするRandStreamタイプでのみ使用することができます。“mlfg6331_64”または“mrg32k3a”に設定します。既定値はです。別のサブストリームを使用して各ブートストラップ複製を計算しないでください。

  • - - - - - -RandStreamオブジェクトまたはそのようなオブジェクトの细胞配列。を指定しないと,TreeBaggerには既定のストリームが使用されます。を指定するように選択した場合,次の場合を除いて単一オブジェクトを使用してください。

    • UseParallel真正的

    • UseSubstreams

    この場合は,並列プールと同じサイズの细胞配列を使用します。

“之前”

各クラスの事前確率。次のいずれかを指定します。

  • 文字ベクトルまたは字符串スカラー

    • “经验”Yのクラスの頻度からクラス確率を決定します。観測値の重みを渡す場合は,クラス確率の計算に使用されます。これは既定の設定です。

    • “统一”はすべてのクラス確率を均等に設定します。

  • ベクトル(クラスごとに1つのスカラー値)。之前の要素の順序は,学習済みのTreeBaggerモデルB一会プロパティにおけるクラスの順序に対応します。

  • 構造体年代には2つのフィールドがあります。

    • カテゴリカル変数,文字配列,字符串配列,または文字ベクトルの细胞配列としてクラス名を格納するS.ClassNames

    • 対応する確率のベクトルを含むS.ClassProbs

权重之前の両方に値を設定した場合は,重みは合計が対応するクラスの事前確率の値になるように再正規化されます。

之前の歪みが大きい場合,在袋子の標本について,事前確率が大きいクラスの一意の観測値をオーバーサンプリングします。標本サイズが小さい場合,事前確率が大きいクラスのout-of-bagの観測値の相対的頻度が非常に低くなることがあります。そのため,推定されたout-of-bagの誤差の変動幅が非常に大きくなり,解釈が困難になる場合があります。

“PredictorNames”

予測子変数名。“PredictorNames”と字符串配列,または一意な文字ベクトルの细胞配列から構成されるコンマ区切りのペアとして指定します。“PredictorNames”の機能は,学習データの提供方法によって決まります。

  • XYを指定した場合,“PredictorNames”を使用してXの名前で予測子変数を指定できます。

    • PredictorNames内の名前の順序は,Xの列の順序に一致しなければなりません。つまり,PredictorNames {1}X (: 1)の名前,PredictorNames {2}X (:, 2)の名前であり,他も同様です。また,大小(X, 2)元素个数(PredictorNames)は等しくなければなりません。

    • 既定ではPredictorNames{x1, x2,…}です。

  • 资源描述が与えられた場合,“PredictorNames”を使用して学習に使用する予測子変数を選択できます。つまり,TreeBaggerPredictorNames内の予測子変数と応答のみを学習で使用します。

    • PredictorNamesTbl.Properties.VariableNamesのサブセットでなければならず,応答変数の名前を含めることはできません。

    • 既定では,すべての予測子変数の名前がPredictorNamesに格納されます。

    • “PredictorNames”公式のいずれか一方のみを使用して学習用の予測子を指定することをお勧めします。

“CategoricalPredictors”

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

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

  • 長さpの逻辑ベクトル。真正的のエントリは,対応するXの列がカテゴリカル変数であることを示します。

  • 字符串配列,または文字ベクトルの细胞配列。配列の各要素は予測子変数の名前です。名前はPredictorNamesプロパティの値と一致してなければなりません。

  • 文字行列。行列の各行は,予測子変数の名前です。名前はPredictorNamesプロパティの値と一致してなければなりません。文字行列の各行が同じ長さになるように,名前を余分な空白で埋めてください。

  • “所有”,すべての予測子がカテゴリカルであることを示します。

ChunkSize的

チャンクのサイズ。ChunkSize的と正の整数から構成されるコンマ区切りのペアとして指定します。チャンクのサイズは,データの各チャンクに含まれる観測値の個数を指定します。既定値は50000です。

メモ

このオプションは,高配列に対してTreeBaggerを使用する場合のみ適用されます。詳細は,拡張機能を参照してください。

上記のオプション引数に加えて,TreeBaggerfitctreefitrtreeについて次のオプション引数を受け入れます。

すべて展開する

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

负载fisheriris

データセット全体を使用して,バギング分類木のアンサンブルに学習をさせます。50個の弱学習器を指定します。木ごとにバギングしない観測値の情報を格納します。

rng (1);%的再现性Mdl = TreeBagger(50、量、物种,“OOBPrediction”“上”...“方法”“分类”
Mdl = 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'属性,方法

MdlTreeBaggerアンサンブルです。

Mdl。树には,アンサンブルを構成する学習済み分類木(CompactClassificationTreeモデルオブジェクト)の50行1列の细胞ベクトルが格納されます。

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

视图(Mdl。{1},“模式”“图”

图分类树查看器包含一个轴和其他类型的uimenu, uicontrol对象。轴包含21个类型为line, text的对象。

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

Mdl。OOBIndicesには,out-of-bagインデックスが論理値の行列として格納されます。

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

图;oobErrorBaggedEnsemble = oobError (Mdl);情节(oobErrorBaggedEnsemble)包含“已长成的树的数量”;ylabel“Out-of-bag分类错误”

图中包含一个坐标轴。轴包含一个线型对象。

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

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

carsmallデータセットを読み込みます。与えられたエンジン排気量に対して自動車の燃費を予測するモデルを考えます。

负载carsmall

データセット全体を使用して,バギング回帰木のアンサンブルに学習をさせます。100年個の弱学習器を指定します。

rng (1);%的再现性Mdl = TreeBagger(位移,100英里,“方法”“回归”);

MdlTreeBaggerアンサンブルです。

学習済みの回帰の袋树を使用すると,条件付き平均応答の推定や,分位点回帰の実行による条件付き分位の予測が可能です。

標本内の最小値と最大値の間で10等分したエンジン排気量について,条件付き平均応答と条件付き四分位数を予測します。

predX = linspace (min(位移),max(位移),10)';predX mpgMean =预测(Mdl);mpgQuartiles = quantilePredict (Mdl predX,分位数的, 0.25, 0.5, 0.75);

観測値,推定された平均応答および四分位数を同じ图にプロットします。

图;情节(位移,英里/加仑,“o”);持有情节(predX mpgMean);情节(predX mpgQuartiles);ylabel (的燃油经济性);包含(发动机排量的);传奇(“数据”“平均响应”第一四分位数的“中值”“第三四分位数”);

图中包含一个坐标轴。轴线包含5个线型对象。这些对象代表数据,平均响应,第一四分位数,中位数,第三四分位数。

carsmallデータセットを読み込みます。与えられた加速、気筒数、エンジン排気量、馬力、製造業者、モデル年および重量に対して自動車の燃費の平均を予測するモデルを考えます。气缸制造行业およびModel_Yearはカテゴリカル変数であるとします。

负载carsmall气缸=分类(缸);及时通知=分类(cellstr (Mfg));Model_Year =分类(Model_Year);X =表(加速、气缸、排量、马力、制造行业,...Model_Year、重量、MPG);rng (“默认”);%的再现性

カテゴリカル変数で表現されるカテゴリの個数を表示します。

numCylinders =元素个数(类别(气缸))
numCylinders = 3
numMfg =元素个数(类别(有限公司))
numMfg = 28
numModelYear =元素个数(类别(Model_Year))
numModelYear = 3

气缸Model_Yearには3つしかカテゴリがないので,予測子分割アルゴリズムの標準购物车ではこの2つの変数よりも連続予測子が分割されます。

データセット全体を使用して,200本の回帰木のランダムフォレストに学習をさせます。偏りの無い木を成長させるため,予測子の分割に曲率検定を使用するよう指定します。データには欠損値が含まれているので,代理分岐を使用するよう指定します。予測子の重要度の推定に関するout-of-bag情報を格納します。

Mdl = TreeBagger (200 X,“英里”“方法”“回归”“代孕”“上”...“PredictorSelection”“弯曲”“OOBPredictorImportance”“上”);

TreeBaggerは,予測子の重要度の推定をOOBPermutedPredictorDeltaErrorプロパティに格納します。棒グラフを使用して推定を比較します。

小鬼= Mdl.OOBPermutedPredictorDeltaError;图;酒吧(imp);标题(“弯曲测试”);ylabel (的预测估计的重要性);包含(“预测”);甘氨胆酸h =;h.XTickLabel = Mdl.PredictorNames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”

图中包含一个坐标轴。标题为曲率测试的轴包含一个类型为bar的对象。

このケースでは,最も重要な予測子はModel_Yearであり,次に重要なのは重量です。

標準购物车を使用して木を成長させるランダムフォレストから計算された予測子の重要度の推定と小鬼とを比較します。

MdlCART = TreeBagger (200 X,“英里”“方法”“回归”“代孕”“上”...“OOBPredictorImportance”“上”);impCART = MdlCART.OOBPermutedPredictorDeltaError;图;酒吧(impCART);标题(“标准车”);ylabel (的预测估计的重要性);包含(“预测”);甘氨胆酸h =;h.XTickLabel = Mdl.PredictorNames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”

图中包含一个坐标轴。标题为Standard CART的轴包含bar类型的对象。

このケースでは,最も重要な予測子は連続予測子重量です。2次に重要なつの予測子はModel_Yearと,ほぼ同程度の連続予測子马力です。

高配列内の観測値に対するバギング分類木のアンサンブルに学習をさせ,観測値に重みを付けてモデル内の各木の誤分類確率を求めます。標本データセットairlinesmall.csvは,飛行機のフライトデータについての表形式ファイルが含まれている大規模なデータセットです。

高配列に対する計算を実行する場合,MATLAB®は並列プール(并行计算工具箱™がある場合は既定)またはローカルのMATLABセッションを使用します。并行计算工具箱がある場合にローカルのMATLABセッションを使用して例を実行するには,関数mapreduceを使用してグローバルな実行環境を変更します。

mapreduce (0)

データセットが含まれているフォルダーの場所を参照するデータストアを作成します。処理する変数のサブセットを選択します。数据存储値に置き換えるため,“NA”値を欠損データとして扱います。データストア内のデータを含む高表を作成します。

ds =数据存储(“airlinesmall.csv”);ds。年代electedVariableNames = {“月”“DayofMonth”“DayOfWeek”...“DepTime”“ArrDelay”“距离”“DepDelay”};ds。TreatAsMissing =“NA”;tt =高(ds)%高表
tt = Mx7高表月DayofMonth DayOfWeek DepTime DepDelay ArrDelay距离  _____ __________ _________ _______ ________ ________ ________ 10 21 642 8 308年12 26 10 23 5 1 1021 8 296 2055 21 480 1332 10 23 5 13 296 12 10 22 4 629 373 1 10 28 3 1446 59 308 63 10 8 4 928 447 2 10 10 6 859 11 954 1  : : : : : : : : : : : : : :

フライトが遅れた場合に真になる論理変数を定義することにより,10分以上遅れたフライトを判別します。この変数にクラスラベルを含めます。この変数のプレビューには,はじめの数行が含まれています。

Y = tt。DepDelay > 10%的类标签
Y = Mx1 tall logical array 1 0 1 1 0 1 0 0::

予測子データの高配列を作成します。

X = tt {: 1: end-1}%的预测数据
X = Mx6双矩阵10 21 3 642 8 308年10 26 1 1021 8 296 1332年10 23 5 2055 21 480 23日5 13 296 10 22 4 629 4 373 10 28 3 1446 59 308 859 8 4 928 447 10 10 6 11 954  : : : : : : : : : : : :

クラス1の観測値に2倍の重みを任意に割り当てることにより,観測値の重みに対する高配列を作成します。

W = Y + 1;%的重量

欠損データが含まれているXYおよびWの行を削除します。

R = rmmissing([X Y W]);%删除缺失条目的数据X = R (:, 1: end-2);Y = R (:, end-1);W = R(:,结束);

データセット全体を使用して,20本のバギングされた決定木のアンサンブルに学習をさせます。重みベクトルと一様な事前確率を指定します。再現性を得るため,rngtallrngを使用して乱数発生器のシードを設定します。高配列の場合,ワーカーの個数と実行環境によって結果が異なる可能性があります。詳細については、コードの実行場所の制御を参照してください。

rng (“默认”) tallrng (“默认”tMdl = TreeBagger(20,X,Y,)“重量”W,“之前”“统一”
评估高表达式使用当地的MATLAB会话:通过1 1:在1.2秒完成评估在1.5秒完成评估高表达式使用本地MATLAB会话:-通过1对1:在2.5秒完成评估在2.7秒完成评估高表达式使用本地MATLAB会话:-通过1的1:6秒完成评估6秒完成
tMdl = CompactTreeBagger集合与20袋决策树:方法:分类NumPredictors: 6 ClassNames: '0' ' '1'属性,方法

tMdlは20本のバギングされた決定木によるCompactTreeBaggerアンサンブルです。

モデル内の各木の誤分類確率を計算します。名前と値のペアの引数“重量”を使用して,ベクトルWに格納されている重みを各観測値に適用します。

恐怖分子=错误(tMdl, X, Y,“重量”W)
using the Local MATLAB Session: - Pass 1 of 1: Completed in 9.5 sec
恐怖分子=20×10.1420 0.1214 0.1115 0.1078 0.1037 0.1027 0.1005 0.0997 0.0981 0.0983⋮

決定木のアンサンブルについて,平均の誤分類確率を求めます。

avg_terr =意味着(恐怖分子)
avg_terr = 0.1022

ヒント

  • より平衡な誤分類コスト行列または歪みが少ない事前確率ベクトルを設定して,out-of-bagの推定誤差の変動幅が大きくならないようにします。

  • Bプロパティには,B.NumTrees個のCompactClassificationTreeまたはCompactRegressionTreeモデルオブジェクトから構成される细胞配列が格納されます。细胞配列内の木tをテキストまたはグラフィックで表示するには,以下を入力します。

    视图(B.Trees {t})

  • 標準购物车アルゴリズムには,相違する値が少ない分割予測子(カテゴリカル変数など)よりも,相違する値が多い分割予測子(連続変数など)を選択する傾向があります[4]。以下のいずれかに該当する場合は,曲率検定または交互作用検定の指定を検討してください。

    • 相違する値の個数が他の予測子よりも比較的少ない予測子がある場合(予測子データセットが異種混合である場合など)。

    • 予測子の重要度の分析が目標である場合。TreeBaggerは,予測子の重要度の推定をMdlOOBPermutedPredictorDeltaErrorプロパティに格納します。

    予測子の選択に関する詳細については,分類木の場合はPredictorSelectionを,回帰木の場合はPredictorSelectionを参照してください。

アルゴリズム

  • TreeBaggerは誤分類コストが大きいクラスをオーバーサンプリングし,誤分類コストが小さいクラスをアンダーサンプリングして,袋中の標本を生成します。その結果,out-of-bagの標本では,誤分類コストが大きいクラスの観測値は少なくなり,誤分類コストが小さいクラスの観測値は多くなります。小さなデータセットと歪みが大きいコスト行列を使用してアンサンブル分類を学習させる場合,クラスあたりのout-of-bagの観測値の数は非常に少なくなることがあります。そのため,推定されたout-of-bagの誤差の変動幅が非常に大きくなり,解釈が困難になる場合があります。事前確率が大きいクラスでも同じ現象が発生する場合があります。

  • 決定木を成長させるときの分割予測子の選択とノード分割アルゴリズムの詳細については,分類木の場合はアルゴリズムを,回帰木の場合はアルゴリズムを参照してください。

代替機能

统计和机器学习工具箱™には,バギングおよびランダムフォレスト用に3つのオブジェクトが用意されています。

TreeBaggerとバギングアンサンブル(ClassificationBaggedEnsembleおよびRegressionBaggedEnsemble)の違いについては,TreeBaggerとバギングアンサンブルの比較を参照してください。

参照

[1] Breiman, L。“随机森林。”机器学习45,pp. 5-32, 2001。

[2] Breiman, L., J. Friedman, R. Olshen, C. Stone。分类和回归树。佛罗里达州博卡拉顿:CRC出版社,1984。

[3] Loh, W.Y., <具有无偏变量选择和交互检测的回归树>《统计》,2002年第12卷,第361-386页。

Loh w.y y and Y.S. Shih分类树的分裂选择方法中国统计,1997年第7卷,第815-840页。

[5] Meinshausen, N.“分位数回归森林”《机器学习研究》,2006年第7卷,第983-999页。

拡張機能

R2009aで導入