主要内容

TreeBagger类

决策树的袋子

描述

TreeBagger打包用于分类或回归的决策树集合。Bagging代表自举聚合。集成中的每棵树都是在输入数据的独立自举副本上生长的。没有包含在这个副本中的观察结果是“out of bag”。

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

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

建设

TreeBagger 创建决策树包

对象的功能

附加 添加新树到集合
紧凑的 决策树的紧凑集合
错误 错误(错误分类概率或MSE)
fillprox 训练数据的接近矩阵
growTrees 训练额外的树,并添加到集合
保证金 分类保证金
mdsprox 接近矩阵的多维尺度
meanMargin 平均分类裕度
oobError Out-of-bag错误
oobMargin Out-of-bag利润率
oobMeanMargin 袋外平均边际
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元素表示观测结果out-of-bag for treej.换句话说,就是观察是否选择了用于训练的数据树来生长j

OOBInstanceWeight

大小的数值数组脑袋-by-1,包含用于计算每个观测结果的out-of-bag响应的树的数量。脑袋是用于创建集合的训练数据中的观测数。

OOBPermutedPredictorCountRaiseMargin

大小为1 × -的数值数组据nvar包含每个预测变量(特征)的变量重要性的度量。对于任何变量,如果该变量的值在袋外观测值中排列,则度量值是提高边际数与降低边际数之间的差值。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。对于回归树,此属性为空。

OOBPermutedPredictorDeltaError

大小为1 × -的数值数组据nvar包含每个预测变量(特征)的重要性度量。对于任何变量,度量的是预测误差的增加,如果该变量的值在袋外观测中被打乱。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。

OOBPermutedPredictorDeltaMeanMargin

大小为1 × -的数值数组据nvar包含每个预测变量(特征)的重要性度量。对于任何变量,如果该变量的值在袋外观测值中被打乱,则度量方法是分类边际的减少。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。对于回归树,此属性为空。

OutlierMeasure

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

之前

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

这个属性是:

  • 只读

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

接近

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

修剪

修剪如果决策树被修剪,属性为真,如果没有修剪,属性为假。对于集合,不建议使用修剪决策树。默认值为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,meas,种,“OOBPrediction”“上”...“方法”“分类”
Mdl = TreeBagger集成50个袋装决策树:训练X: [150x4]训练Y: [150x1]方法:分类NumPredictors: 4 NumPredictorsToSample: 2 MinLeafSize: 1 InBagFraction: 1 SampleWithReplacement: 1 ComputeOOBPrediction: 1 ComputeOOBPredictorImportance: 0邻近性:[]ClassNames: 'setosa' 'versicolor' 'virginica'属性,方法

Mdl是一个TreeBagger合奏。

Mdl。树存储已训练分类树的50 × 1单元向量(CompactClassificationTree模型对象)组成集成。

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

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

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

默认情况下,TreeBagger长在树的深处。

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

在生长的分类树的数量上绘制出袋外误差。

图;oobErrorBaggedEnsemble = oobError(Mdl);情节(oobErrorBaggedEnsemble)包含“已生长树木的数目”;ylabel“包外分类错误”

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

袋外误差随树木生长数量的增加而减小。

要标记袋外观察,通过MdloobPredict

加载carsmall数据集。考虑一个模型,在给定发动机排量的情况下预测汽车的燃油经济性。

负载carsmall

使用整个数据集训练袋装回归树的集合。指定100个弱学习器。

rng (1);%用于再现性Mdl = TreeBagger(100,排量,MPG,“方法”“回归”);

Mdl是一个TreeBagger合奏。

使用经过训练的回归树包,您可以估计条件平均响应或执行分位数回归来预测条件分位数。

对于样本内最小位移和最大位移之间的10个等间距发动机位移,预测条件平均响应和条件四分位数。

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

在同一图中绘制观察图,以及估计的平均响应和四分位数。

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

图中包含一个轴对象。axis对象包含5个line类型的对象。这些对象表示数据、平均响应、第一四分位数、中位数、第三四分位数。

加载carsmall数据集。考虑一个模型,该模型根据汽车的加速度、气缸数、发动机排量、马力、制造商、车型年份和重量来预测汽车的平均燃油经济性。考虑气缸制造行业,Model_Year作为分类变量。

负载carsmall圆柱=分类(圆柱);Mfg = categorical(cellstr(Mfg));Model_Year = categorical(Model_Year);X =表(加速度,气缸,排量,马力,制造,...Model_Year、重量、MPG);rng (“默认”);%用于再现性

显示类别变量中表示的类别数量。

numCylinders = number (categories(Cylinders))
numCylinders = 3
numMfg = nummel(类别(Mfg))
numMfg = 28
numModelYear = nummel(类别(Model_Year))
numModelYear = 3

因为只有三个类别气缸而且Model_Year,标准CART,预测器拆分算法更倾向于在这两个变量上拆分一个连续预测器。

使用整个数据集训练200棵回归树的随机森林。要生长无偏树,请指定用于分割预测器的曲率测试。因为数据中有缺失的值,所以指定代理分割的使用。存储袋外信息,用于预测器重要性估计。

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

TreeBagger在属性中存储预测器重要性估计值OOBPermutedPredictorDeltaError.用柱状图比较估算值。

imp = mld . oobpermutedpredictordeltaerror;图;酒吧(imp);标题(“弯曲测试”);ylabel (“预测器重要性估计”);包含(“预测”);H = gca;h.XTickLabel = mld . predictornames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”

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

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

比较小鬼到使用标准CART从随机森林中计算出的预测重要性估计值。

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

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

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

复制语义

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

提示

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

视图(B.Trees {t})

选择功能

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

之间的详细区别TreeBagger以及袋装套装(ClassificationBaggedEnsemble而且RegressionBaggedEnsemble),看树木装袋和装袋套装的比较

参考文献

[1]布莱曼,L。“随机森林。”机器学习45,页5-32,2001。

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

版本历史

全部展开

R2022a的行为发生了变化