主要内容

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

TreeBagger

クラス:TreeBagger

决定木の树袋の作成

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

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

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

構文

ResponseVarName Mdl = TreeBagger (NumTrees(资源)
MDL = TreeBagger(NumTrees,TBL,式)
Mdl = TreeBagger (NumTrees台,Y)
B=树形起重机(数树,X,Y)
B=树形图(NumTrees,X,Y,Name,Value)

説明

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

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

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

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

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

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

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

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

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

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

  • 美国分类成本。コスト行列Cを含みます。

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

成本の歪みが大きい场合,在袋の标本について,ペナルティが大きいクラスの一意の観测値をオーバーサンプリングします。标本サイズが小さい场合,ペナルティが大きいクラスの乱袋の観测値の相対的频度が非常に低くなることがあります。そのため,推定された了球袋の误差の変动幅が非常に大きくなり,解釈が困难になる场合があります。

“样本替换” 復元抽出の場合は“开”,非復元抽出の場合は“关闭”。非復元抽出の場合、“InBagFraction”を1より小さい値に設定する必要があります。既定の設定は“开”です。
'OOBPrediction' 各ツリーに対して 现成的である観測値についての情報を格納する場合は“开”。この情報は,oobPredictionがアンサンブル内の各ツリーについて予測されたクラス確率を計算するために使用することができます。既定値は“关闭”です。
“OOBPredictorImportance” アンサンブル内の特徴量の重要度の 现成的推定値を格納する場合は“开”。既定値は“关闭”です。“开”を指定すると,'OOBPrediction'値も“开”に設定されます。予測子の重要度の分析が目標である場合は、“预测器选择”、“曲率”または“预测器选择”,“交互-曲率”も指定します。詳細については、菲茨特里またはfitrtreeを参照してください。
“方法” '分类'または“回归”。回帰では数値Yが必要です。
'NumPredictorsToSample' 各决定分岐で无作为に选択する変数の个数。既定の设定は,分类の场合は変数の个数の平方根,回帰の场合は変数の个数の1/3です。有效値は,“所有”または正の整数です。この引数を“所有”以外の任意の有効値に設定すると,Breimanのランダムフォレストアルゴリズム[1]が呼び出されます。
'NumPrint' 学习サイクルの数(成长したツリー)。この后に,学习の进行を示す诊断メッセージがTreeBaggerにより表示されます。既定の设定では,诊断メッセージなしです。
“MinLeafSize” ツリー リーフ 1.枚あたりの観測値の最小個数。既定値は分類の場合は 1.回帰の場合は 5.です。
“选项”

决定木のアンサンブルを成长させるときの计算を左右するオプションを指定する构造体.Parallel计算工具箱™を使用できる场合,オプション数を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真正的

    • 使用子流

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

“之前”

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

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

    • “经验”Yのクラスの频度からクラス确率を决定します。観测値の重みを渡す场合は,クラス确率の计算に使用されます。これは既定の设定です。

    • '制服'はすべてのクラス確率を均等に設定します。

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

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

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

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

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

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

“预测器名称”

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

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

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

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

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

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

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

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

“分类预测因素”

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

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

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

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

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

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

“块大小”

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

メモ

このオプションは、高的配列に対してTreeBaggerを使用する場合のみ適用されます。详细は,拡张机能を参照してください。

上记のオプション引数に加えて,TreeBagger菲茨特里fitrtreeについて次のオプション引数を受け入れます。

すべて展開する

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

负载鱼腥草

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

rng (1);%的再现性Mdl = TreeBagger(50、量、物种,'OOBPrediction',“开”,......“方法”,'分类')
Mdl=TreeBagger集合和50个袋装决策树:训练X:[150x4]训练Y:[150x1]方法:分类NumPredictors:4 NumPredictors样本:2 MinLeaveSize:1 InBagFraction:1 SampleWithReplacement:1 ComputeoobPredictors:1 ComputeoobPredictors重要性:0邻近性:[]类名:“setosa”“versicolor”“virginica”属性、方法

MdlTreeBaggerアンサンブルです。

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

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

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

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

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

Mdl。OOBIndicesには,乱袋インデックスが论理値の行列として格纳されます。

现成的誤差を、成長した分類木の数にプロットします。

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

图形包含一个轴。轴包含一个line类型的对象。

成長した分類木の数が増加すると、现成的誤差は減少します。

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

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

负载卡斯莫尔

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

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

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个线型对象。这些对象代表数据,平均响应,第一四分位数,中位数,第三四分位数。

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

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

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

numCylinders =元素个数(类别(气缸))
numCylinders = 3
numMfg=numel(类别(制造))
numMfg = 28
numModelYear = numel(类别(Model_Year))
numModelYear=3

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

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

Mdl = TreeBagger (200 X,“MPG”,“方法”,“回归”,“代孕”,“开”,......“PredictorSelection”,“曲率”,“OOBPredictorImportance”,“开”);

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

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

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

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

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

MdlCART=TreeBagger(200,X,“MPG”,“方法”,“回归”,“代孕”,“开”,......“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を使用してグローバルな実行環境を変更します。

地图还原程序(0)

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

DS =数据存储区('airlinesmall.csv');ds。selectedVariableNames = {“月”,“DayofMonth”,“DayOfWeek”,......“DepTime”,'ArrDelay',“距离”,“德布雷”};ds。TreatAsMissing =“NA”;tt =高(ds)%高桌
TT = MX7高大表月DAYOFMONTH DAYOFWEEK DepTime ArrDelay距离DepDelay _____ __________ _________ _______ ________ ________ ________ 10 21 3 642 8 308 12 10 26 1 1021 8 296 1 10 23 5 2055 21 480 20 10 23 5 1332 13 296 12 10 22 4629 4 373 -1 10 28 3 1446 59 308 63 10 8 4 928 3 447 10 -2 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高双矩阵102364283081028182961025205205521480102351332129610242629443731028314461593081084928344474471010685911954::::::

クラス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を使用して乱数発生器のシードを设定します.tall配列の场合,ワーカーの个数と実行环境によって结果が异なる可能性があります。详细については,コードの実行場所の制御を参照してください。

rng (“默认”) tallrng (“默认”tMdl = TreeBagger(20,X,Y,)“重量”W,“之前”,'制服')
评估使用本地MATLAB会话高表达: - 通的1 1:在1.2秒评价完成在1.5秒完成评估使用本地MATLAB会话高表达: - 的1遍1:在2.5秒评价完成在2.7秒完成评价高通的1 1  - ::使用本地MATLAB会话表达在6秒评价完成在6秒完成
TMDL = CompactTreeBagger合奏用20个袋装决策树:方法:分类NumPredictors:6类名: '0' '1' 的属性,方法

tMdlは,20本のバギングされた决定木による紧凑式架桥机アンサンブルです。

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

TERR =错误(TMDL,X,Y,“重量”W)
评估使用本地MATLAB会话高表达: - 通的1至1:9.5秒评价完成在9.6秒完成
恐怖分子=20×10.1420 0.1214 0.1115 0.1078 0.1037 0.1027 0.1005 0.0997 0.0981 0.0983⋮

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

avg_terr =平均值(TERR)
avg_terr = 0.1022

ヒント

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

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

    视图(B.Trees {t})

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

    • 相违する値の个数が他の予测子よりも比较的少ない予测子がある场合(予测子データセットが异种混合である场合など)。

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

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

アルゴリズム

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

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

代替机能

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

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

参照

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

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

[3] 具有无偏变量选择和交互作用检测的回归树〉,《中国统计》,2002年第12卷,第361-386页。

[4] 陆,W.Y.和石玉生。“分类树的分裂选择方法”,《中国统计》,第7卷,1997年,第815-840页。

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

拡张机能

R2009aで導入