主要内容

TreeBagger

类:TreeBagger

创建决策树的袋子

个人决策树overfit。Bootstrap-aggregated (袋装)决策树结合的结果,许多决策树,这样可以减少过度拟合的影响,提高了泛化。TreeBagger增长的决策树合奏使用引导数据的样本。同时,TreeBagger选择一个随机的子集预测在每个决策使用分裂的随机森林算法[1]

默认情况下,TreeBagger包分类树。袋回归树相反,指定“方法”,“回归”

对于回归问题,TreeBagger金宝app支持的意思,分位数回归(即分位数回归森林[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 (NumTrees,X,Y)创建一个乐团BNumTrees决策树预测反应Y作为预测的数值矩阵函数的训练数据,X。在每一行X代表了一种观察和每一列代表一个预测或特性。

B = TreeBagger (NumTrees, X, Y,名称,值)指定可选参数名称-值对:

“InBagFraction” 分数的输入数据样本从输入数据替换种植新树。默认值是1。
“成本”

方阵C,在那里C (i, j)是一个指向类分类的成本j如果它真正的类(即。,the rows correspond to the true class and the columns correspond to the predicted class). The order of the rows and columns of成本对应于类的顺序一会财产的训练TreeBagger模型B

另外,成本可以是一个结构年代有两个领域:

  • S.ClassNames作为一个类别变量包含组名,字符数组,字符串数组或单元阵列特征向量

  • S.ClassificationCosts包含成本矩阵C

默认值是C (i, j) = 1如果我~ = j,C (i, j) = 0如果我=我

如果成本高度倾斜,然后,在袋子样品,软件oversamples独特的观察从类,它有一个很大的处罚。对小样本大小,这可能会导致一个非常低的相对频率的out-of-bag观察类,有一个很大的处罚。因此,估计out-of-bag错误是高度可变的,可能难以解释。

“SampleWithReplacement” “上”与替换或样本“关闭”样品没有更换。如果你不回样品,你需要设置“InBagFraction”值小于1。默认是“上”
“OOBPrediction” “上”存储信息的观察是什么袋子的每棵树。可以使用此信息oobPrediction计算预测类每棵树的概率。默认是“关闭”
“OOBPredictorImportance” “上”存储out-of-bag功能重要性的估计。默认是“关闭”。指定“上”还设置了“OOBPrediction”价值“上”。如果你的目标分析预测的重要性,然后指定“PredictorSelection”、“弯曲”“PredictorSelection”、“interaction-curvature”。更多细节,请参阅fitctreefitrtree
“方法” 要么“分类”“回归”。回归需要一个数字Y
“NumPredictorsToSample” 随机变量选择的决定。默认的变量数量的平方根是分类和回归的变量数量的三分之一。有效的值“所有”或者一个正整数。但任何有效设置这个参数值“所有”调用Breiman随机森林算法[1]
“NumPrint” 培训的循环次数(种植树木)之后TreeBagger显示诊断消息显示培训进展。默认是没有诊断消息。
“MinLeafSize” 最小数量的观察/树叶。默认是1 5分类和回归。
“选项”

结构,指定选项控制计算当决策树的整体增长。一个选项要求计算决策树在多个引导复制使用多个处理器,如果并行计算工具箱™是可用的。两个选项指定要使用的随机数流在选择引导复制。您可以创建和调用这个论点statset。您可以检索和调用单个字段的值statget。适用的statset参数:

  • “UseParallel”——如果真正的和并行计算工具箱安装,那么软件使用现有的并行池并行树木,或者,根据平行偏好,软件打开和使用一个新游泳池如果没有当前打开的。否则,在串行计算的软件。默认是,这意味着串行计算。

    双核系统及以上,TreeBagger对培训使用英特尔®线程构建块(TBB)。因此,使用“UseParallel”选择一台计算机可能不会加速比串行计算,可能会消耗更多的内存。在英特尔TBB的详细信息,请参见https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html

  • “UseSubstreams”——如果真正的选择每个引导复制使用一个单独的Substream随机数生成器(又名流)。这个选项只有可用RandStream支持Substream金宝apps的类型:“mlfg6331_64”“mrg32k3a”。默认是,不要使用不同Substream计算每个引导复制。

  • ——一个RandStream这样的对象的对象或单元阵列。如果你不指定,TreeBagger使用默认的河流或溪流。如果你选择指定,除了在使用一个对象

    • UseParallel真正的

    • UseSubstreams

    在这种情况下,使用一个单元阵列大小相同的平行池。

“之前”

每个类的先验概率。指定的:

  • 一个特征向量或字符串标量:

    • “经验”确定类类频率的概率Y。如果你通过观察权重,它们被用来计算类概率。这是默认的。

    • “统一”集所有类概率相等。

  • 一个向量(一个标量值为每个类)。元素的顺序之前对应于类的顺序一会财产的训练TreeBagger模型B

  • 一个结构年代两个字段:

    • S.ClassNames包含类名作为分类变量、字符数组,字符串数组或单元阵列特征向量

    • S.ClassProbs包含一个向量对应的概率

如果你设置的值权重之前,重整权重加起来的价值各自的班上先验概率。

如果之前是高度倾斜,那么,在袋子样品,软件oversamples独特的观察从类,它有一个很大的先验概率。对于较小的样本大小,这可能会导致一个非常低的相对频率的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”选择使用哪个预测变量在训练。也就是说,TreeBagger使用预测变量PredictorNames只在训练和响应。

    • PredictorNames必须是一个子集的Tbl.Properties.VariableNames,不能包括响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名字。

    • 它良好的实践指定培训使用的预测因子之一“PredictorNames”公式只有。

“CategoricalPredictors”

分类预测列表,指定为逗号分隔组成的“CategoricalPredictors”和一个以下。

  • 一个数值向量和指数1p,在那里p预测的数量被用来训练模型。

  • 一个逻辑向量的长度p,一个真正的意味着相应的预测分类条目。

  • 一个字符串数组或单元阵列的特征向量,在数组中每个元素是一个预测变量的名字。名称必须匹配条目PredictorNames值。

  • 一个字符矩阵,矩阵的每一行是一个预测变量的名称。名称必须匹配条目PredictorNames值。垫的名字与额外的空格字符矩阵的每一行有相同的长度。

  • “所有”,这意味着所有的预测都直言。

ChunkSize的

块大小,指定为逗号分隔组成的ChunkSize的和一个正整数。块大小指定数量的观察每个块的数据。默认值是50000年

请注意

此选项仅适用于使用TreeBagger在高大的数组。看到扩展功能为更多的信息。

除了上面的可选参数,TreeBagger接受这些可选fitctreefitrtree参数。

例子

全部展开

加载费雪的虹膜数据集。

负载fisheriris

火车一袋装分类树的整个数据集。指定使用50弱的学习者。存储袋的每棵树的观测。

rng (1);%的再现性Mdl = TreeBagger(50、量、物种,“OOBPrediction”,“上”,“方法”,“分类”)
Mdl = TreeBagger合奏与50袋装决策树:训练X: [150 x4)培训Y: [150 x1)方法:分类NumPredictors: 4 NumPredictorsToSample: 2 MinLeafSize: 1 InBagFraction: 1 SampleWithReplacement: 1 ComputeOOBPrediction: 1 ComputeOOBPredictorImportance: 0距离:[]一会:“setosa”“杂色的”“virginica”属性,方法

Mdl是一个TreeBagger合奏。

Mdl.Trees商店50-by-1细胞向量训练分类树(CompactClassificationTree模型对象)组成。

画一个图的第一个训练有素的分类树。

视图(Mdl.Trees {1},“模式”,“图”)

图分类树查看器包含一个坐标轴对象和其他对象类型uimenu uicontrol。坐标轴对象包含21线类型的对象,文本。

默认情况下,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英里,“方法”,“回归”);

Mdl是一个TreeBagger合奏。

使用一个训练有素的袋回归树,您可以估计条件均值反应或执行分位数回归预测条件分位数。

十条平行引擎位移之间的最小和最大样本内位移,预测条件意味着反应和有条件的四分位数。

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标准车,predictor-splitting算法更喜欢将连续预测这两个变量。

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 =“没有”;

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

在这种情况下,Model_Year是最重要的因素,其次是吗重量

比较小鬼从随机森林预测重要性估计计算生长树使用标准的车。

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

图包含一个坐标轴对象。坐标轴对象标题标准车包含一个对象类型的酒吧。

在这种情况下,重量一个连续预测,是最重要的。接下来的两个最重要的因素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 ArrDelay距离DepDelay _____ _____ _____ _________ ________说21日3 642 296 308 12 10 26 1 1021 8 1 10 23 5 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 = mx₁高逻辑数组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 954年11::::::::::::

为观察创建一系列高权重的任意分配权重的在课堂上观察1两倍。

W = Y + 1;%的重量

删除行X,Y,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.5秒完成评估在1.8秒完成评估高表达式使用本地MATLAB会话:-通过1对1:在2.9秒完成评估在3.1秒完成评估高表达式使用本地MATLAB会话:-通过1对1:在7.3秒完成评估在7.4秒完成
tMdl = CompactTreeBagger合奏20袋装决策树:方法:分类NumPredictors: 6类名:' 0 ' ' 1 '的属性,方法

tMdl是一个CompactTreeBagger合奏与20袋装决策树。

每棵树的计算错误分类概率模型。中包含的属性权重向量W观察使用“重量”名称-值对的论点。

恐怖分子=错误(tMdl, X, Y,“重量”W)
评估高表达式使用当地的MATLAB会话:通过1 1:在8.7秒完成评估在8.9秒完成
恐怖分子=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.NumTreesCompactClassificationTreeCompactRegressionTree模型对象。文本或图形显示的树t在单元阵列中,输入

    视图(B.Trees {t})

  • 标准车往往选择分裂预测包含许多不同的值,例如,连续变量,在那些包含几个不同的值,例如,分类变量[4]。考虑指定曲率或交互测试如果真如下列:

    • 如果有预测比其他预测的不同值相对较少,例如,如果预测数据集是异构的。

    • 如果一个分析预测重要的是你的目标。TreeBagger商店预测估计的重要性OOBPermutedPredictorDeltaError的属性Mdl

    在指标选择的更多信息,见PredictorSelection分类树或PredictorSelection回归树。

算法

  • TreeBagger生成在袋子样品采样过密类大误分类代价采样类小误分类代价。因此,out-of-bag样本较少的观察从类大误分类代价和更多的观察类小误分类代价。如果你训练一个分类合奏使用一个小的数据集和一个高度倾斜成本矩阵,然后out-of-bag观察每个类的数量可能非常低。因此,估计out-of-bag错误可能有很大的差异,可能是难以解释。同样的现象也发生类先验概率大。

  • 有关选择分割预测和节点划分算法越来越多决策树时,看到的算法分类树和算法回归树。

选择功能

统计和机器学习工具箱™装袋和随机森林提供了三个对象:

对于细节的差异TreeBagger和袋装集合体(ClassificationBaggedEnsembleRegressionBaggedEnsemble),看比较TreeBagger和袋装的集合体

引用

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

[2]Breiman, L。,J. Friedman, R. Olshen, and C. Stone.分类和回归树。波卡拉顿,FL: CRC出版社,1984年。

[3]Loh, W.Y.“回归树与公正的变量选择和交互检测。”Statistica中央研究院12卷,2002年,页361 - 386。

施[4]Loh, W.Y.和屈服强度。“分裂选择分类树的方法。”Statistica中央研究院7卷,1997年,页815 - 840。

[5]Meinshausen认为:“分位数回归森林。”机器学习研究杂志》上7卷,2006年,页983 - 999。

扩展功能

介绍了R2009a