主要内容

TreeBagger

袋装决策树的集合

描述

一个TreeBagger对象是用于分类或回归的袋装决策树的集合。单个决策树容易过拟合。装袋,代表bootstrap聚合,是一种减少过拟合影响并提高泛化的集成方法。

创建

TreeBagger函数生长在每棵树中TreeBagger使用输入数据的自举样本的集成模型。未包含在样本中的观察结果被认为是该树的“外袋”。该函数为使用随机森林算法分割的每个决策选择预测器的随机子集[1]

描述

提示

默认情况下,TreeBagger函数生长分类决策树。要生长回归决策树,请指定名称-值参数方法作为“回归”

例子

Mdl= TreeBagger (NumTrees资源描述ResponseVarName返回一个集成对象(Mdl)NumTrees袋装分类树,由表中的预测器训练资源描述以及变量中的类标签资源描述。ResponseVarName

Mdl= TreeBagger (NumTrees资源描述公式返回Mdl由表中的预测器训练资源描述.输入公式是否有响应的解释模型和预测变量的子集资源描述曾经适合Mdl.指定公式使用威尔金森符号

Mdl= TreeBagger (NumTrees资源描述Y返回Mdl由表中的预测器数据进行训练资源描述和数组中的类标签Y

例子

Mdl= TreeBagger (NumTreesXY返回Mdl由矩阵中的预测器数据训练X和数组中的类标签Y

例子

Mdl= TreeBagger (___名称=值返回Mdl使用一个或多个名称-值参数指定的其他选项,使用任何先前的输入参数组合。例如,可以使用名称-值参数指定用于在分类预测器上找到最佳分割的算法PredictorSelection

输入参数

全部展开

袋装集合中决策树的数目,指定为正整数。

数据类型:|

用于训练模型的示例数据,指定为表。每行资源描述对应一个观测值,每一列对应一个预测变量。可选地,资源描述可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。

  • 如果资源描述包含响应变量,您希望在中使用所有剩余变量资源描述作为预测器,然后通过使用指定响应变量ResponseVarName

  • 如果资源描述包含响应变量,并且您希望仅在中使用其余变量的子集资源描述作为预测器,然后通过使用指定一个公式公式

  • 如果资源描述不包含响应变量,然后通过使用Y.响应变量的长度和其中的行数资源描述必须是相等的。

响应变量名,指定为中的变量名资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果响应变量Y存储为资源描述。Y,然后指定为“Y”.否则,软件处理的所有列资源描述,包括Y,作为训练模型时的预测因子。

响应变量必须是类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。如果Y是字符数组,则响应变量的每个元素必须对应于数组中的一行。

类指定类的顺序是一个很好的实践一会名称-值参数。

数据类型:字符|字符串

响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”.在这种形式下,Y表示响应变量,和x1x2,x3表示预测变量。

中指定变量的子集资源描述使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述没有出现在公式

公式中的变量名必须同时为资源描述Tbl.Properties.VariableNames)和有效的MATLAB®标识符。中的变量名可以验证资源描述通过使用isvarname函数。变量名无效,则可以使用matlab.lang.makeValidName函数。

数据类型:字符|字符串

训练袋装决策树集合的类标签或响应变量,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。

  • 如果你指定方法作为“分类”,类别标签适用于以下内容Y

    • 的每个元素Y属性对应行的类成员关系X

    • 如果Y是字符数组,则每行必须对应一个类标号。

    • TreeBagger函数将类标签转换为字符向量的单元格数组。

  • 如果你指定方法作为“回归”,响应变量Y是一个n-by-1数值向量,其中n是观测的数量。每一项Y对应的行是否为响应X

的长度Y的行数X必须是相等的。

数据类型:分类|字符|字符串|逻辑|||细胞

预测器数据,指定为数值矩阵。

每行X对应于一个观察结果(也称为实例或示例),每一列对应于一个变量(也称为特征)。

的长度Y的行数X必须是相等的。

数据类型:

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:TreeBagger(100年,X, Y,方法=“回归”,代理=“on”OOBPredictorImportance =“上”)创建包含100个回归树的袋装集合,并指定使用代理分割并存储袋装外信息以进行预测器重要性估计。

每个数据块中的观察数,指定为正整数。此选项仅在使用TreeBagger在高数组上。有关更多信息,请参见扩展功能

例子:ChunkSize = 10000

数据类型:|

错误分类代价,以方阵或结构表示。

  • 如果你指定了方阵成本观察的真正类别是,然后成本(i, j)将一个点分类的成本是多少j.也就是说,行对应于真实的类,列对应于预测的类。的相应行和列的类顺序成本,使用一会名称-值参数。

  • 如果你指定了结构年代,那么它必须有两个字段:

    • S.ClassNames,其中包含类名作为与Y

    • S.ClassificationCosts,其中包含成本矩阵,其行和列的顺序为S.ClassNames

默认值为成本(i, j) = 1如果我~ = j,成本(i, j) = 0如果我=我

以获取更多关于高度倾斜效应的信息成本,请参阅算法

例子:成本= (0,1,2,0)

数据类型:||结构体

类别预测符列表,指定为此表中的值之一。

价值 描述
正整数向量

向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间p,在那里p用于训练模型的预测器的数量。

如果TreeBagger使用输入变量的子集作为预测器,然后函数仅使用该子集对预测器进行索引。的CategoricalPredictors值不计算响应变量、观察权重变量或函数不使用的任何其他变量。

逻辑向量

一个真正的Entry表示对应的预测器是分类的。向量的长度是p

字符矩阵 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames.用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。
字符向量的字符串数组或单元格数组 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames
“所有” 所有预测因素都是绝对的。

默认情况下,如果预测器数据在表(资源描述),TreeBagger如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X),TreeBagger假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用CategoricalPredictors名称-值参数。

对于已识别的分类预测因子,TreeBagger使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,TreeBagger为分类变量的每一层创建一个虚拟变量。对于有序分类变量,TreeBagger创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量

例子:CategoricalPredictors = "所有"

数据类型:||逻辑|字符|字符串|细胞

决策树类型,指定为“分类”“回归”.对于回归树,Y必须是数字。

例子:方法= "回归"

最小叶节点观测数,指定为正整数。每片叶子至少有MinLeafSize每块树叶的观察结果。默认情况下,MinLeafSize1对于分类树和5对于回归树。

例子:MinLeafSize = 4

数据类型:|

每个决策分割的预测变量的数量(随机选择),指定为正整数或“所有”.默认情况下,NumPredictorsToSample是分类树变量数的平方根,回归树变量数的三分之一。如果默认数字不是整数,软件将该数字四舍五入到正无穷方向上最接近的整数。如果你设置NumPredictorsToSample到任何值“所有”,该软件采用布雷曼随机森林算法[1]

例子:NumPredictorsToSample = 5

数据类型:||字符|字符串

生长的树数(训练周期),之后软件将在命令窗口中显示有关训练进度的消息,指定为非负整数。默认情况下,软件不显示诊断消息。

例子:NumPrint = 10

数据类型:|

要采样的输入数据的百分比,并从输入数据中替换以生长每棵新树,指定为范围(0,1]中的正标量。

例子:InBagFraction = 0.5

数据类型:|

在集合中存储袋外信息的指示器,指定为“上”“关闭”.指定OOBPrediction作为“上”用于存储关于每棵树的哪些观测数据已出库的信息。TreeBagger可以使用此信息来计算集成中每个树的预测类概率。

例子:OOBPrediction =“关闭”

用于存储集合中特征重要性的袋装估计的指示器,指定为“上”“关闭”.如果你指定OOBPredictorImportance作为“上”,TreeBagger函数集OOBPrediction“上”.如果您想分析预测器的重要性,请指定PredictorSelection作为“弯曲”“interaction-curvature”

例子:OOBPredictorImportance = " "

并行运行计算和设置随机流的选项,指定为结构。创建选项结构使用statset.该表列出了选项字段及其值。

字段名 价值 默认的
UseParallel 将此值设置为真正的并行运算并行地进行计算
UseSubstreams

将此值设置为真正的以可重复的方式并行地进行计算。

若要可重复计算,请设置到允许子流的类型:“mlfg6331_64”“mrg32k3a”

将此值指定为aRandStream对象或由一个这样的对象组成的单元格数组。 如果您没有指定,然后TreeBagger使用默认流。

请注意

您需要并行计算工具箱™来并行地运行计算。

例子:选项= statset (UseParallel = true)

数据类型:结构体

预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能PredictorNames这取决于你如何提供训练数据。

  • 如果你提供X而且Y,那么你就可以使用了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公式,但不是两者都有。

例子:PredictorNames =[“SepalLength”、“SepalWidth”,“PetalLength”、“PetalWidth”)

数据类型:字符串|细胞

带更换取样的指示器,指定为“上”“关闭”.指定SampleWithReplacement作为“上”用替换取样,或作为“关闭”取样而不更换。如果你设置SampleWithReplacement“关闭”,则必须设置name-value参数InBagFraction到一个小于1的值。

例子:SampleWithReplacement = " "

对于两类学习,每个类的先验概率,指定为本表中的值。

价值 描述
“经验” 类先验概率是类的相对频率Y
“统一” 所有类先验概率都等于1/K,在那里K是类的数量。
数值向量 向量中的每个元素都是一个类先验概率。对元素进行排序Mdl。ClassNames,或使用一会名称-值参数。软件对要求和的元素进行规范化1
结构

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

  • S.ClassNames作为相同类型的变量包含类名Y

  • S.ClassProbs包含相应先验概率的向量。该软件规范化向量的元素求和1

如果指定成本矩阵,则之前的属性TreeBagger模型存储了根据错误分类代价调整的先验概率。详情请参见算法

这个论点只适用于两节课的学习。

例子:Prior=struct(ClassNames=["setosa" "versicolor" "virginica"],ClassProbs=1:3)

数据类型:字符|字符串|||结构体

请注意

的名称-值参数之外TreeBagger函数接受的名值参数fitctree而且fitrtree中列出的TreeBagger函数的附加名称-值参数

输出参数

全部展开

集合袋装决策树,返回作为一个TreeBagger对象。

属性

全部展开

装袋属性

此属性是只读的。

用于计算训练观察的袋装预测的指示器,指定为数值或逻辑1 (真正的)或0 ().如果此属性为真正的

  • TreeBagger对象的属性OOBIndices而且OOBInstanceWeight

  • 你可以使用对象函数oobErroroobMargin,oobMeanMargin

此属性是只读的。

用于计算袋外变量重要性的指示器,指定为数字或逻辑1 (真正的)或0 ().如果此属性为真正的

  • TreeBagger对象的属性OOBPermutedPredictorDeltaErrorOOBPermutedPredictorDeltaMeanMargin,OOBPermutedPredictorCountRaiseMargin

  • 房地产ComputeOOBPrediction真正的

此属性是只读的。

为每个引导副本随机选择替换(袋中观测值)的观测值的百分比,指定为数值标量。每个复制品的大小是脑袋×InBagFraction,在那里脑袋是训练数据中的观察数。

数据类型:|

此属性是只读的。

袋外索引,指定为逻辑数组。这个属性是脑袋——- - - - - -NumTrees数组,脑袋训练数据中的观察次数,和NumTrees是集合中树的数量。如果OOBIndicesj元素是真正的,观察是袋子外的树吗j(即TreeBagger功能没有选择观察用于生长树的训练数据j).

此属性是只读的。

每个观察的袋外树数,指定为数值向量。这个属性是脑袋-by-1向量,其中脑袋是训练数据中的观察数。的OOBInstanceWeight元素包含用于计算用于观察的袋外响应的树的数量

数据类型:|

此属性是只读的。

提高边际的预测变量(特征)重要性,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是训练数据中变量的数量。对于每个变量,度量是提高边际数和降低边际数之间的差值,如果该变量的值在袋外观测中排列的话。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。

此属性为空([])用于回归树。

数据类型:|

此属性是只读的。

预测误差的预测变量(特征)重要性,用数值向量表示。这个性质是1 ×据nvar向量,据nvar是训练数据中变量(列)的数量。对于每个变量,度量是预测误差的增加,如果该变量的值在袋外观测中被打乱。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。

数据类型:|

此属性是只读的。

预测变量(特征)对分类边界的重要性,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是训练数据中变量(列)的数量。对于每个变量,度量是分类边际的减少,如果该变量的值在袋外观测中被打乱。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。

此属性为空([])用于回归树。

数据类型:|

树的属性

此属性是只读的。

为每个预测器划分标准,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是分割准则中的更改数。该软件将拆分标准在每个变量上的变化相加,然后在整个已生长的树集合上平均总和。

数据类型:|

此属性是只读的。

用于合并叶的指示器,指定为数字或逻辑1 (真正的)或0 ().这个性质是真正的如果软件将决策树叶子与相同的父节点合并,则不会降低总风险。否则,这个属性为

此属性是只读的。

最小叶节点观测数,指定为正整数。每片叶子至少有MinLeafSize观察。默认情况下,MinLeafSize1表示分类树,5表示回归树。对于决策树训练,fitctree而且fitrtree设置名称-值参数MinParentSize2 * MinLeafSize

数据类型:|

此属性是只读的。

袋装集合中决策树的数目,指定为正整数。

数据类型:|

此属性是只读的。

用于估计修剪后的子树的最佳序列的指示器,指定为数值或逻辑1 (真正的)或0 ().的修剪属性是真正的如果修剪决策树,和如果不是的话。对于集合,不建议使用修剪决策树。

此属性是只读的。

用替换对每个决策树进行抽样的指示器,替换指定为数值或逻辑1 (真正的)或0 ().这个性质是真正的如果TreeBagger函数用替换对每个决策树进行抽样,和否则。

此属性是只读的。

变量关联的预测度量,指定为数值矩阵。这个属性是据nvar——- - - - - -据nvar矩阵,据nvar是预测变量的数量。该属性包含变量关联的预测度量,在整个生长的树木集合中平均。

  • 如果你用代理名称-值参数设置为“上”,对于每棵树,这个矩阵充满了在代理分割上平均的关联预测度量。

  • 如果你用代理名称-值参数设置为“关闭”,SurrogateAssociation性质是单位矩阵。默认情况下,代理设置为“关闭”

数据类型:|

此属性是只读的。

属性指定的名称-值参数TreeBagger函数,指定为单元格数组。的TreeBagger函数在为打包集合生长新树时使用这些名称-值参数。

此属性是只读的。

袋装集合中的决策树,指定为NumTrees-by-1单元格数组。每棵树都是CompactClassificationTreeCompactRegressionTree对象。

预测性能

此属性是只读的。

每个预测器的决策分割数,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是预测变量的数量。的每个元素NumPredictorSplit表示预测器上对所有树求和的分割数。

数据类型:|

此属性是只读的。

为每个决策分割随机选择的预测变量的数量,指定为正整数。默认情况下,这个属性是分类树变量总数的平方根,回归树变量总数的三分之一。

数据类型:|

此属性是只读的。

每个观测值的离群值,以数值向量表示。这个属性是脑袋-by-1向量,其中脑袋是训练数据中的观察数。

数据类型:|

此属性是只读的。

预测器名称,指定为字符向量的单元格数组。元素的顺序PredictorNames对应于预测器名称在训练数据中出现的顺序X

此属性是只读的。

用于训练袋装集合的预测器,指定为数值数组。这个属性是脑袋——- - - - - -据nvar数组,脑袋观察数(行)和据nvar是训练数据中变量(列)的数量。

数据类型:|

响应特性

返回的默认预测值预测oobPredict,指定为""“MostPopular”,或数值标量。属性返回的预测值预测oobPredict当无法预测时(例如,当oobPredict预测对集合中所有树的观察的响应)。

  • 对于分类树,可以设置DefaultYfit要么""“MostPopular”.如果你指定“MostPopular”(默认为分类),属性值是训练数据中最可能的类的名称。如果你指定""时,袋外误差和裕度的计算不考虑袋内观测值。

  • 对于回归树,您可以设置DefaultYfit任意数值标量。回归的默认值是训练数据响应的平均值。如果你设置DefaultYfit时,袋外误差和裕度的计算不考虑袋内观测值。

例子:Mdl。DefaultYfit = " MostPopular "

数据类型:||字符|字符串

此属性是只读的。

类标签或响应数据,指定为字符向量或数字向量的单元格数组。

  • 如果你设置方法参数的名称-值“分类”,此属性表示类标签。每行Y的对应行所观察的分类X

  • 如果你设置方法参数的名称-值“回归”,此属性表示响应数据,是一个数值向量。

数据类型:||细胞

训练属性

此属性是只读的。

集成类型,指定为“分类”用于分类集合或“回归”对于回归集合。

此属性是只读的。

训练数据观察值之间的接近度,指定为数值数组。这个属性是脑袋——- - - - - -脑袋数组,脑袋是训练数据中的观察数。该阵列包含观测值之间的接近度测量。对于任意两个观测值,它们的接近度被定义为这些观测值落在同一片树叶上的树木比例。该数组是对称的,对角线上的元素和非对角线元素的范围从0到1。

数据类型:|

此属性是只读的。

观察权重,指定为非负值的向量。此属性的行数与Y.每一项W中相应观测值的相对重要性Y.的TreeBagger函数使用观测权值来生长集合中的每棵决策树。

数据类型:|

分类属性

此属性是只读的。

训练模型中使用的唯一类名,指定为字符向量的单元格数组。

此属性为空([])用于回归树。

此属性是只读的。

错误分类代价,用数字方阵表示。的元素成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是.行对应真实的类,列对应预测的类。的行和列的顺序成本中类的顺序对应一会

此属性为空([])用于回归树。

数据类型:|

此属性是只读的。

先验概率,用数字向量表示。元素的顺序之前对应于元素的顺序Mdl。ClassNames

方法指定成本矩阵成本的名称-值参数TreeBagger函数,之前的属性TreeBagger模型对象存储先验概率(由之前名称-值参数)调整了错误分类代价。详情请参见算法

此属性为空([])用于回归树。

数据类型:|

对象的功能

全部展开

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

例子

全部折叠

为Fisher的虹膜数据集创建一个袋装分类树集合。然后,查看第一棵生长的树,绘制袋外分类错误,并预测袋外观察的标签。

加载fisheriris数据集。创建X作为一个数字矩阵,包含四个花瓣测量150鸢尾花。创建Y作为包含相应虹膜种类的特征向量的单元数组。

负载fisheririsX = meas;Y =物种;

将随机数发生器设置为默认的再现性。

rng (“默认”

使用整个数据集训练袋装分类树的集合。指定50弱的学习者。存储每个树的包外观察结果。默认情况下,TreeBagger长在树的深处。

Mdl = TreeBagger(50,X,Y,...方法=“分类”...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},Mode=“图”

{

画出袋外分类误差除以生长的分类树的数量。

情节(oobError (Mdl)包含(“已生长树木数目”) ylabel (“袋外分类错误”

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

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

预测袋外观察的标签。显示10个观察的随机集合的结果。

oobLabels = oobPredict(Mdl);ind = randsample(length(oobLabels),10);表(Y(印第安纳州),oobLabels(印第安纳州),...VariableNames = [“TrueLabel”“PredictedLabel”])
ans =10×2表TrueLabel PredictedLabel  ______________ ______________ {' setosa’}{‘setosa}{‘virginica}{‘virginica}{‘setosa}{‘setosa}{‘virginica}{‘virginica}{‘setosa}{‘setosa}{‘virginica}{‘virginica}{‘setosa}{‘setosa}{“癣”}{“癣”}{“癣”}{‘virginica}{‘virginica} {' virginica '}

类的袋装回归树的集合carsmall数据集。然后,预测条件平均响应和条件四分位数。

加载carsmall数据集。创建X作为包含汽车发动机位移值的数值向量。创建Y作为一个数字向量,包含每加仑相应的英里数。

负载carsmallX =位移;Y = mpg;

将随机数发生器设置为默认的再现性。

rng (“默认”

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

Mdl = TreeBagger(100,X,Y,...方法=“回归”
Mdl = TreeBagger集成100个袋装决策树:训练X: [94x1]训练Y: [94x1]方法:回归NumPredictors: 1 NumPredictorsToSample: 1 MinLeafSize: 5 InBagFraction: 1 SampleWithReplacement: 1 ComputeOOBPrediction: 0 ComputeOOBPredictorImportance: 0 Proximity:[]属性,方法

Mdl是一个TreeBagger用于回归树的集成。

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

predX = linspace(min(X),max(X),10)';YMean = predict(Mdl,predX);YQuartiles = quantilePredict(Mdl,predX,...分位数= [0.25,0.5,0.75]);

绘制观察值、估计的平均响应和估计的四分位数。

持有情节(X, Y,“o”);plot(predX,YMean) plot(predX,YQuartiles) hold住ylabel (“燃料经济”)包含(“发动机排量”)传说(“数据”“平均响应”...“第一四分位数”“中值”...“第三四分位数”

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

创建两个袋装回归树集合,一个使用标准CART算法拆分预测器,另一个使用曲率测试拆分预测器。然后,比较两个集合的预测器重要性估计值。

加载carsmall数据集和变量转换气缸制造行业,Model_Year分类变量。然后,显示类别变量中表示的类别数量。

负载carsmall圆柱=分类(圆柱);Mfg = categorical(cellstr(Mfg));Model_Year = categorical(Model_Year);元素个数(类别(气缸))
Ans = 3
元素个数(类别(有限公司))
Ans = 28
元素个数(类别(Model_Year))
Ans = 3

创建一个包含8个汽车指标的表。

Tbl = table(加速度,气缸,位移,...马力,生产厂,Model_Year、重量、MPG);

将随机数发生器设置为默认的再现性。

rng (“默认”

使用整个数据集训练200个袋装回归树的集合。因为数据有缺失值,所以指定使用代理分割。存储袋外信息,用于预测器重要性估计。

默认情况下,TreeBagger使用标准CART,一种分割预测器的算法。因为变量气缸而且Model_Year每个只包含三个类别,标准CART倾向于在这两个变量上分割一个连续的预测器。

MdlCART = TreeBagger(200,Tbl;“英里”...方法=“回归”代理=“上”...OOBPredictorImportance =“上”);

TreeBagger在属性中存储预测器重要性估计值OOBPermutedPredictorDeltaError

impCART = MdlCART.OOBPermutedPredictorDeltaError;

使用整个数据集训练200棵回归树的随机森林。要生长无偏树,请指定使用曲率测试来分割预测器。

MdlUnbiased = TreeBagger(200,Tbl,“英里”...方法=“回归”代理=“上”...PredictorSelection =“弯曲”...OOBPredictorImportance =“上”);impUnbiased = MdlUnbiased.OOBPermutedPredictorDeltaError;

创建条形图来比较预测器的重要性估计impCART而且impUnbiased对于两个合奏。

tiledlayout(1、2、填充=“紧凑”);nexttile栏(impCART)“标准车”) ylabel (“预测器重要性估计”)包含(“预测”) h = gca;h.XTickLabel = MdlCART.PredictorNames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”;nexttile酒吧(impUnbiased);标题(“弯曲测试”) ylabel (“预测器重要性估计”)包含(“预测”) h = gca;h.XTickLabel = MdlUnbiased.PredictorNames;h.XTickLabelRotation = 45;h.TickLabelInterpreter =“没有”

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

对于CART模型,连续预测器重量是第二重要的预测因素。对于无偏模型,的预测器重要性重量在价值和排名上较小。

训练高阵列观测的袋装分类树集合,求加权观测模型中每棵树的误分类概率。本例使用数据集airlinesmall.csv,这是一个包含航空公司航班数据表格文件的大型数据集。

在高数组上执行计算时,MATLAB®使用并行池(如果有并行计算工具箱™,则默认为并行池)或本地MATLAB会话。若要在具有并行计算工具箱时使用本地MATLAB会话运行示例,请使用mapreduce函数。

mapreduce (0)

创建一个引用包含数据集的文件夹位置的数据存储。选择要处理的变量子集,并进行处理“NA”值作为缺失数据,以便数据存储函数将它们替换为值。制作高桌子tt在数据存储中包含数据。

数据存储(“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.该变量的预览包括前几行。

Y = tt。10 . DepDelay >
Y = Mx1高逻辑阵列1 0 1 1 0 1 0 0::

创建一个高数组X对于预测器数据。

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

创建一个高数组W通过任意地为第一类观测值分配双重权重来获得观测值的权重。

W = y +1;

删除中的行XY,W其中包含丢失的数据。

R = rmmissing([X Y W]);X = R(:,1:end-2);Y = R(:,end-1);W = R(:,end);

使用整个数据集训练20个袋装分类树的集合。指定一个权重向量和统一的先验概率。为了重现性,使用设置随机数生成器的种子rng而且tallrng.根据工作人员的数量和tall数组的执行环境,结果可能有所不同。详细信息请参见控制代码运行的位置

rng (“默认”) tallrng (“默认”tMdl = TreeBagger(20,X,Y,...重量= W =“统一”
使用本地MATLAB会话计算tall表达式:-通过1 / 1:在0.91秒内完成,在1.1秒内完成,使用本地MATLAB会话计算tall表达式:-通过1 / 1:在1.4秒内完成,在1.5秒内完成,使用本地MATLAB会话计算tall表达式:-通过1 / 1:在5.5秒内完成,在5.5秒内完成
tMdl = CompactTreeBagger集成20个袋装决策树:方法:分类NumPredictors: 6类名:'0' '1'属性,方法

tMdl是一个CompactTreeBagger集成了20个袋装决策树。对于大数据,使用TreeBagger函数返回CompactTreeBagger对象。

计算模型中每棵树的误分类概率。属性向量中包含的权重W对每一个观察使用权重名称-值参数。

terr = error(tMdl,X,Y,Weights=W)
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在5.3秒内完成评估在5.4秒内完成
恐怖分子=20×10.1420 0.1214 0.1115 0.1078 0.1037 0.1027 0.1005 0.0997 0.0981 0.0983

求决策树集合的平均错误分类概率。

Avg_terr = mean(terr)
Avg_terr = 0.1022

更多关于

全部展开

提示

  • 对于一个TreeBagger模型Mdl,属性包含的单元格向量Mdl。NumTreesCompactClassificationTreeCompactRegressionTree对象。命令的图形显示t长成的树进入:

    视图(Mdl.Trees {t})

  • 对于回归问题,TreeBagger金宝app支持均值和分位数回归(即分位数回归森林)[5]).

  • 标准CART倾向于选择包含许多不同值(如连续变量)的分割预测器,而不是包含很少不同值(如分类变量)的分割预测器[4].考虑指定曲率或交互测试,如果以下任何一个是真的:

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

    • 您的目标是分析预测器的重要性。TreeBagger中存储预测器重要性估计OOBPermutedPredictorDeltaError财产。

    有关预测器选择的更多信息,请参阅name-value参数PredictorSelection用于分类树或名称-值参数PredictorSelection对于回归树。

算法

  • 如果您指定成本之前,权重参数时,输出模型对象将指定的值存储在成本之前,W属性,分别。的成本属性存储用户指定的成本矩阵(C),无需修改。的之前而且W属性分别存储归一化后的先验概率和观测权重。对于模型训练,软件更新先验概率和观察权重,以纳入成本矩阵中描述的惩罚。详细信息请参见错误分类成本矩阵,先验概率和观察权重

  • TreeBagger函数通过错分类代价大的过采样类和错分类代价小的过采样类生成袋内样本。因此,袋外样本对错误分类代价大的类的观测值较少,而对错误分类代价小的类的观测值较多。如果使用小数据集和高度倾斜的成本矩阵训练分类集合,那么每个类的袋外观察数可能非常低。因此,估计的袋外误差可能有很大的方差,难以解释。同样的现象也会发生在具有较大先验概率的类上。

  • 有关如何TreeBagger函数选择分裂预测器,有关函数生长决策树时的节点分裂算法的信息,请参见算法对于分类树和算法对于回归树。

选择功能

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

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

参考文献

[1] Breiman, Leo。“随机森林。”机器学习45(2001): 5-32。https://doi.org/10.1023/A:1010933404324

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

[3]陆伟音。“无偏变量选择和交互检测的回归树。”Statistica中央研究院12,没有。2(2002): 361-386。https://www.jstor.org/stable/24306967

[4]罗伟寅、施玉山。分类树的分割选择。Statistica中央研究院7,不。4(1997): 815-840。https://www.jstor.org/stable/24306157

[5] Meinshausen, Nicolai。“分位数回归森林。”机器学习研究杂志7,不。35(2006): 983-999。https://jmlr.org/papers/v7/meinshausen06a.html

[6] Genuer, Robin, Jean-Michel Poggi, Christine tuloau - malot和Nathalie Villa-Vialanei。“大数据随机森林”。大数据研究9(2017): 28-46。https://doi.org/10.1016/j.bdr.2017.07.003

扩展功能

版本历史

在R2009a中引入

全部展开