主要内容

TreeBagger类

决策树包

描述

TreeBagger将决策树集合用于分类或回归。Bagging代表引导聚合。集合中的每棵树都是在输入数据的独立绘制的引导副本上生长的。不包括在这个副本中的观察结果对于这个树来说是“out of bag”。

TreeBagger依赖于ClassificationTreeRegressionTree生长单独的树的功能。特别是,ClassificationTreeRegressionTree接受为每个决策分割随机选择的特性数量作为可选输入参数。也就是说,TreeBagger实现随机森林算法[1]

对于回归问题,TreeBagger万博1manbetx支持均值和分位数回归(即分位数回归森林)[2]).

建设

TreeBagger 创建决策树包

对象的功能

附加 添加新树到集合
紧凑的 决策树的紧凑集成
错误 误差(误分类概率或MSE)
fillprox 训练数据的接近矩阵
growTrees 训练额外的树,并添加到整体
保证金 分类保证金
mdsprox 接近矩阵的多维尺度
meanMargin 意思是分类保证金
oobError Out-of-bag错误
oobMargin Out-of-bag利润率
oobMeanMargin Out-of-bag意味着利润
oobPredict 包外观测的集合预测
oobQuantileError 回归树袋外分位数损失
oobQuantilePredict 从回归树的袋外观察的分位数预测
partialDependence 计算部分依赖
plotPartialDependence 创建部分依赖图(PDP)和个人条件期望图(ICE)
预测 使用袋装决策树预测响应
quantileError 使用回归树的袋的分位数损失
quantilePredict 预测响应分位数使用袋回归树

属性

一会

包含响应变量的类名的单元格数组Y.对于回归树,此属性为空。

ComputeOOBPrediction

一个逻辑标志,指定是否应该计算训练观察的包外预测。默认值是

如果这面旗是真正的,以下属性可用:

  • OOBIndices

  • OOBInstanceWeight

如果这面旗是真正的,可以调用以下方法:

  • oobError

  • oobMargin

  • oobMeanMargin

ComputeOOBPredictorImportance

一个逻辑标志,指定是否应该计算变量重要性的包外估计。默认值是.如果这面旗是真正的,然后ComputeOOBPrediction也是真的。

如果这面旗是真正的,以下属性可用:

  • OOBPermutedPredictorDeltaError

  • OOBPermutedPredictorDeltaMeanMargin

  • OOBPermutedPredictorCountRaiseMargin

成本

方阵,成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是(即,行对应真正的类,列对应预测的类)。的行和列的顺序成本中类的顺序一会.中的行数和列数成本是响应中唯一类的数量。

这个属性是:

  • 只读

  • 空([])用于回归树的集合

DefaultYfit

返回的默认值预测oobPredict.的DefaultYfit属性控制在无法进行预测时返回的预测值。例如,当oobPredict需要对所有树木的观测结果进行预测。

  • 对于分类,可以将此属性设置为''“MostPopular”.如果你选择“MostPopular”(默认值),属性值将成为训练数据中最可能的类的名称。如果你选择''时,袋内观测数据被排除在袋外误差和余量的计算之外。

  • 对于回归,可以将此属性设置为任何数值标量。默认值是训练数据响应的平均值。如果将此属性设置为时,袋内观测数据被排除在袋外误差和余量的计算之外。

DeltaCriterionDecisionSplit

大小为1 × -的数字数组据nvar将分割标准的变化通过每个变量的分割进行求和,并在整个已长成的树木集合中取平均值。

InBagFraction

随机选择的观察结果的一部分,并替换每个引导副本。每个副本的大小为脑袋×InBagFraction,在那里脑袋为训练集中的观测数。默认值为1。

MergeLeaves

对于不降低总风险的拆分,是否合并具有相同父类的决策树叶子的逻辑标志。默认值为

方法

树木使用的方法。可能的值是“分类”对于分类集合,和“回归”回归集合体。

MinLeafSize

每片树叶的最低观察次数。默认情况下,MinLeafSize是1表示分类,5表示回归。对于决策树的训练,MinParentValue设置为2 * MinLeafSize

NumTrees

集合中等于决策树数目的标量值。

NumPredictorSplit

大小为1 × -的数字数组据nvar,其中每个元素给出了这个预测器上所有树的分割数。

NumPredictorsToSample

为每个决策分裂随机选择的预测器或特征变量的数目。默认情况下,NumPredictorsToSample等于分类变量总数的平方根,回归变量总数的三分之一。

OOBIndices

逻辑阵列大小脑袋——- - - - - -NumTrees,在那里脑袋训练数据中的观察数和NumTrees为集合中树的数量。一个真正的值(j元素表示该观察结果袋子里装的是树吗j.换句话说,就是观察是否选择了用于培训的数据来种植树木j

OOBInstanceWeight

大小数字数组脑袋-by-1包含用于计算每次观测的袋外响应的树的数量。脑袋为用于创建集合的训练数据中的观测数。

OOBPermutedPredictorCountRaiseMargin

大小为1 × -的数字数组据nvar包含对每个预测变量(特征)的变量重要性的度量。对于任何一个变量,如果该变量的值在包外观察值中排列,则度量值是提高保证金的数量和降低保证金的数量之间的差异。对每棵树计算这个度量,然后在整个集合上取平均值,再除以整个集合上的标准差。对于回归树,此属性为空。

OOBPermutedPredictorDeltaError

大小为1 × -的数字数组据nvar包含每个预测变量(特征)的重要性度量。对于任何一个变量,如果该变量的值是在袋子外的观察值中排列的,则度量是预测误差的增加。对每棵树计算这个度量,然后在整个集合上取平均值,再除以整个集合上的标准差。

OOBPermutedPredictorDeltaMeanMargin

大小为1 × -的数字数组据nvar包含每个预测变量(特征)的重要性度量。对于任何变量,如果该变量的值在包外观察值中排列,则度量是分类边际的减少。对每棵树计算这个度量,然后在整个集合上取平均值,再除以整个集合上的标准差。对于回归树,此属性为空。

OutlierMeasure

有大小的数字数组脑袋1,脑袋为训练数据中的观测数,包含每个观测值的离群值。

之前

每个类的先验概率的数字向量。元素的顺序之前中类的顺序一会

这个属性是:

  • 只读

  • 空([])用于回归树的集合

接近

有大小的数字矩阵脑袋——- - - - - -脑袋,在那里脑袋为训练数据中的观测数,包含观测值之间的接近度度量值。对于任意两个观测值,它们的接近度定义为这些观测值落在同一片叶子上的树木的比例。这是一个对称矩阵,对角线和非对角线上的元素从0到1都有1s。

修剪

修剪属性在决策树被修剪时为真,在未修剪时为假。对于集合,不推荐修剪决策树。默认值为false。

SampleWithReplacement

一个逻辑标志,指定是否对每个具有替换的决策树进行数据采样。此属性真正的如果TreeBagger样本数据替换和否则。默认值是真正的

TreeArguments

的单元格数组参数fitctreefitrtree.这些参数被TreeBagger为整个团队种植新树。

大小相同的单元格数组NumTrees-by-1包含集合中的树。

SurrogateAssociation

大小矩阵据nvar——- - - - - -据nvar通过变量关联的预测措施,对整个成年树木进行平均。如果你增加了布景“代孕”“上”,每个树的这个矩阵都填充了代理分割上平均的关联预测度量。如果你增加了布景“代孕”“关闭”(默认),SurrogateAssociation是斜的。

PredictorNames

包含预测变量(特性)名称的单元格数组。TreeBagger从可选参数中取这些名称“名字”参数。默认名称为x1的“x2”等。

W

长度权值的数值向量脑袋,在那里脑袋为训练数据中的观察数(行)。TreeBagger使用这些权重在集成中生长每棵决策树。默认的W(脑袋,1)

X

有大小的表格或数字矩阵脑袋——- - - - - -据nvar,在那里脑袋观察数(行数)和据nvar为训练数据中变量(列)的个数。如果你用一个预测值表来训练集合,那么X是一张桌子。如果你用一个由预测值组成的矩阵来训练集合,那么X是一个矩阵。此属性包含预测器(或特性)值。

Y

一个大小脑袋响应数据数组。的元素Y对应于的行X.的分类,Y是真正类标签的集合。标签可以是任意的分组变量,即数字或逻辑向量、字符矩阵、字符串数组、字符向量单元格数组或分类向量。TreeBagger将标签转换为字符向量的单元格数组以进行分类。对于回归,Y是一个数字向量。

例子

全部折叠

载入费雪的虹膜数据集。

负载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'属性,方法

Mdl是一个TreeBagger合奏。

Mdl。树存储经过训练的分类树的50 × 1细胞向量(CompactClassificationTree模型对象)组成集成。

绘制第一个训练的分类树的图。

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

默认情况下,TreeBagger深树生长。

Mdl。OOBIndices将包外索引存储为逻辑值矩阵。

用已生长的分类树的数量绘制出包外误差。

图;oobErrorBaggedEnsemble = oobError (Mdl);情节(oobErrorBaggedEnsemble)包含“已长成的树的数量”;ylabel“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 (的燃油经济性);包含(发动机排量的);传奇(“数据”“平均响应”第一四分位数的“中值”“第三四分位数”);

加载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

因为只有3个类别气缸Model_Year在标准CART中,预测器分割算法更喜欢分割连续预测器而不是这两个变量。

使用整个数据集训练一个包含200棵回归树的随机森林。要种植无偏的树,指定使用曲率测试的分裂预测器。由于数据中缺少值,请指定代理拆分的用法。存储包外信息用于预测因子的重要性估计。

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

TreeBagger商店可以预测物业的重要性OOBPermutedPredictorDeltaError.用条形图比较估计值。

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

在这种情况下,Model_Year最重要的预测因素是什么重量

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

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

在这种情况下,重量这是最重要的。接下来两个最重要的预测因素是Model_Year紧随其后的是马力,这是一个连续的预测器。

复制语义

价值。要了解这如何影响您对类的使用,请参见比较句柄类和值类在MATLAB®面向对象编程的文档。

提示

对于一个TreeBagger模型对象B,属性存储的单元格向量B.NumTreesCompactClassificationTreeCompactRegressionTree模型对象。用于树的文本或图形显示t在细胞载体中,输入

视图(B。树木{t})

选择功能

Statistics and Machine Learning Toolbox™提供了三种对象用于套袋和随机森林:

详细了解两者的区别TreeBagger以及袋装套装(ClassificationBaggedEnsembleRegressionBaggedEnsemble),看套袋式和套袋式的比较

参考文献

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

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