TreeBagger
袋装决策树的集合
描述
一个TreeBagger
对象是用于分类或回归的袋装决策树的集合。单个决策树容易过拟合。装袋,代表bootstrap聚合,是一种减少过拟合影响并提高泛化的集成方法。
创建
的TreeBagger
函数生长在每棵树中TreeBagger
使用输入数据的自举样本的集成模型。未包含在样本中的观察结果被认为是该树的“外袋”。该函数为使用随机森林算法分割的每个决策选择预测器的随机子集[1].
语法
描述
提示
默认情况下,TreeBagger
函数生长分类决策树。要生长回归决策树,请指定名称-值参数方法
作为“回归”
.
返回一个集成对象(Mdl
= TreeBagger (NumTrees
,资源描述
,ResponseVarName
)Mdl
)NumTrees
袋装分类树,由表中的预测器训练资源描述
以及变量中的类标签资源描述。ResponseVarName
.
输入参数
NumTrees
- - - - - -决策树数量
正整数
袋装集合中决策树的数目,指定为正整数。
数据类型:单
|双
资源描述
- - - - - -样本数据
表格
用于训练模型的示例数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。
如果
资源描述
包含响应变量,您希望在中使用所有剩余变量资源描述
作为预测器,然后通过使用指定响应变量ResponseVarName
.如果
资源描述
包含响应变量,并且您希望仅在中使用其余变量的子集资源描述
作为预测器,然后通过使用指定一个公式公式
.如果
资源描述
不包含响应变量,然后通过使用Y
.响应变量的长度和其中的行数资源描述
必须是相等的。
ResponseVarName
- - - - - -响应变量名
变量名资源描述
响应变量名,指定为中的变量名资源描述
.
您必须指定ResponseVarName
作为字符向量或字符串标量。例如,如果响应变量Y
存储为资源描述。Y
,然后指定为“Y”
.否则,软件处理的所有列资源描述
,包括Y
,作为训练模型时的预测因子。
响应变量必须是类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。如果Y
是字符数组,则响应变量的每个元素必须对应于数组中的一行。
类指定类的顺序是一个很好的实践一会
名称-值参数。
数据类型:字符
|字符串
公式
- - - - - -响应变量的解释模型和预测变量的子集
特征向量|字符串标量
响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
Y
- - - - - -类标签或响应变量
分类数组|字符数组|字符串数组|逻辑向量|数值向量|字符向量的单元格数组
训练袋装决策树集合的类标签或响应变量,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。
如果你指定
方法
作为“分类”
,类别标签适用于以下内容Y
:的每个元素
Y
属性对应行的类成员关系X
.如果
Y
是字符数组,则每行必须对应一个类标号。的
TreeBagger
函数将类标签转换为字符向量的单元格数组。
如果你指定
方法
作为“回归”
,响应变量Y
是一个n-by-1数值向量,其中n是观测的数量。每一项Y
对应的行是否为响应X
.
的长度Y
的行数X
必须是相等的。
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
X
- - - - - -预测数据
数字矩阵
预测器数据,指定为数值矩阵。
每行X
对应于一个观察结果(也称为实例或示例),每一列对应于一个变量(也称为特征)。
的长度Y
的行数X
必须是相等的。
数据类型:双
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
例子:TreeBagger(100年,X, Y,方法=“回归”,代理=“on”OOBPredictorImportance =“上”)
创建包含100个回归树的袋装集合,并指定使用代理分割并存储袋装外信息以进行预测器重要性估计。
ChunkSize
- - - - - -每个数据块中的观察数
50000(默认)|正整数
成本
- - - - - -误分类代价
方阵|结构
错误分类代价,以方阵或结构表示。
如果你指定了方阵
成本
观察的真正类别是我
,然后成本(i, j)
将一个点分类的成本是多少j
.也就是说,行对应于真实的类,列对应于预测的类。的相应行和列的类顺序成本
,使用一会
名称-值参数。如果你指定了结构
年代
,那么它必须有两个字段:S.ClassNames
,其中包含类名作为与Y
S.ClassificationCosts
,其中包含成本矩阵,其行和列的顺序为S.ClassNames
默认值为成本(i, j) = 1
如果我~ = j
,成本(i, j) = 0
如果我=我
.
以获取更多关于高度倾斜效应的信息成本
,请参阅算法.
例子:成本= (0,1,2,0)
数据类型:单
|双
|结构体
CategoricalPredictors
- - - - - -分类预测器列表
正整数向量|逻辑向量|字符矩阵|字符串数组|字符向量的单元格数组|“所有”
类别预测符列表,指定为此表中的值之一。
价值 | 描述 |
---|---|
正整数向量 | 向量中的每个条目都是一个指标值,表明相应的预测器是分类的。索引值在1和之间 如果 |
逻辑向量 | 一个 |
字符矩阵 | 矩阵的每一行都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames .用额外的空格填充名字,这样字符矩阵的每一行都有相同的长度。 |
字符向量的字符串数组或单元格数组 | 数组中的每个元素都是一个预测变量的名称。名称必须与中的条目匹配PredictorNames . |
“所有” |
所有预测因素都是绝对的。 |
默认情况下,如果预测器数据在表(资源描述
),TreeBagger
如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假定该变量是分类的。如果预测器数据为矩阵(X
),TreeBagger
假设所有预测因子都是连续的。要将任何其他预测符标识为类别预测符,请使用CategoricalPredictors
名称-值参数。
对于已识别的分类预测因子,TreeBagger
使用两种不同的方案创建虚拟变量,具体取决于分类变量是无序的还是有序的。对于一个无序分类变量,TreeBagger
为分类变量的每一层创建一个虚拟变量。对于有序分类变量,TreeBagger
创建的虚拟变量比类别数少一个。详细信息请参见自动创建虚拟变量.
例子:CategoricalPredictors = "所有"
数据类型:单
|双
|逻辑
|字符
|字符串
|细胞
方法
- - - - - -决策树类型
“分类”
(默认)|“回归”
决策树类型,指定为“分类”
或“回归”
.对于回归树,Y
必须是数字。
例子:方法= "回归"
MinLeafSize
- - - - - -最小叶节点观测数
正整数
最小叶节点观测数,指定为正整数。每片叶子至少有MinLeafSize
每块树叶的观察结果。默认情况下,MinLeafSize
是1
对于分类树和5
对于回归树。
例子:MinLeafSize = 4
数据类型:单
|双
NumPredictorsToSample
- - - - - -每个决策分割的预测变量的数量
正整数|“所有”
每个决策分割的预测变量的数量(随机选择),指定为正整数或“所有”
.默认情况下,NumPredictorsToSample
是分类树变量数的平方根,回归树变量数的三分之一。如果默认数字不是整数,软件将该数字四舍五入到正无穷方向上最接近的整数。如果你设置NumPredictorsToSample
到任何值“所有”
,该软件采用布雷曼随机森林算法[1].
例子:NumPredictorsToSample = 5
数据类型:单
|双
|字符
|字符串
NumPrint
- - - - - -种植树木的数量,之后软件显示信息
0(默认)|正整数
生长的树数(训练周期),之后软件将在命令窗口中显示有关训练进度的消息,指定为非负整数。默认情况下,软件不显示诊断消息。
例子:NumPrint = 10
数据类型:单
|双
InBagFraction
- - - - - -输入数据的抽样比例
1(默认)|积极的标量
要采样的输入数据的百分比,并从输入数据中替换以生长每棵新树,指定为范围(0,1]中的正标量。
例子:InBagFraction = 0.5
数据类型:单
|双
OOBPrediction
- - - - - -用于存储袋外信息的指示器
“关闭”
(默认)|“上”
在集合中存储袋外信息的指示器,指定为“上”
或“关闭”
.指定OOBPrediction
作为“上”
用于存储关于每棵树的哪些观测数据已出库的信息。TreeBagger
可以使用此信息来计算集成中每个树的预测类概率。
例子:OOBPrediction =“关闭”
OOBPredictorImportance
- - - - - -用于存储特征重要性的袋外估计的指示器
“关闭”
(默认)|“上”
用于存储集合中特征重要性的袋装估计的指示器,指定为“上”
或“关闭”
.如果你指定OOBPredictorImportance
作为“上”
,TreeBagger
函数集OOBPrediction
来“上”
.如果您想分析预测器的重要性,请指定PredictorSelection
作为“弯曲”
或“interaction-curvature”
.
例子:OOBPredictorImportance = " "
选项
- - - - - -并行运行计算和设置随机流的选项
结构
并行运行计算和设置随机流的选项,指定为结构。创建选项
结构使用statset
.该表列出了选项
字段及其值。
字段名 | 价值 | 默认的 |
---|---|---|
UseParallel |
将此值设置为真正的 并行运算并行地进行计算 |
假 |
UseSubstreams |
将此值设置为 若要可重复计算,请设置 |
假 |
流 |
将此值指定为aRandStream 对象或由一个这样的对象组成的单元格数组。 |
如果您没有指定流 ,然后TreeBagger 使用默认流。 |
请注意
您需要并行计算工具箱™来并行地运行计算。
例子:选项= statset (UseParallel = true)
数据类型:结构体
PredictorNames
- - - - - -预测变量名称
唯一名称的字符串数组|唯一字符向量的单元格数组
预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能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
作为“上”
用替换取样,或作为“关闭”
取样而不更换。如果你设置SampleWithReplacement
来“关闭”
,则必须设置name-value参数InBagFraction
到一个小于1的值。
例子:SampleWithReplacement = " "
之前
- - - - - -对于两类学习,每个类的先验概率
“经验”
(默认)|“统一”
|数值向量|结构数组
对于两类学习,每个类的先验概率,指定为本表中的值。
价值 | 描述 |
---|---|
“经验” |
类先验概率是类的相对频率Y . |
“统一” |
所有类先验概率都等于1/K,在那里K是类的数量。 |
数值向量 | 向量中的每个元素都是一个类先验概率。对元素进行排序Mdl。ClassNames ,或使用一会 名称-值参数。软件对要求和的元素进行规范化1 . |
结构 | 一个结构
|
如果指定成本矩阵,则之前
的属性TreeBagger
模型存储了根据错误分类代价调整的先验概率。详情请参见算法.
这个论点只适用于两节课的学习。
例子:Prior=struct(ClassNames=["setosa" "versicolor" "virginica"],ClassProbs=1:3)
数据类型:字符
|字符串
|单
|双
|结构体
请注意
的名称-值参数之外TreeBagger
函数接受的名值参数fitctree
而且fitrtree
中列出的TreeBagger函数的附加名称-值参数.
输出参数
Mdl
-袋装决策树的集合
TreeBagger
对象
集合袋装决策树,返回作为一个TreeBagger
对象。
属性
装袋属性
ComputeOOBPrediction
- - - - - -用于计算训练观察的袋外预测的指示器
假
或0(默认)|真正的
或1
此属性是只读的。
用于计算训练观察的袋装预测的指示器,指定为数值或逻辑1 (真正的
)或0 (假
).如果此属性为真正的
:
的
TreeBagger
对象的属性OOBIndices
而且OOBInstanceWeight
.你可以使用对象函数
oobError
,oobMargin
,oobMeanMargin
.
ComputeOOBPredictorImportance
- - - - - -用于计算袋外变量重要性的指示器
假
或0(默认)|真正的
或1
此属性是只读的。
用于计算袋外变量重要性的指示器,指定为数字或逻辑1 (真正的
)或0 (假
).如果此属性为真正的
:
的
TreeBagger
对象的属性OOBPermutedPredictorDeltaError
,OOBPermutedPredictorDeltaMeanMargin
,OOBPermutedPredictorCountRaiseMargin
.房地产
ComputeOOBPrediction
也真正的
.
InBagFraction
- - - - - -随机选取的观察值的百分比
1(默认)|数字标量
此属性是只读的。
为每个引导副本随机选择替换(袋中观测值)的观测值的百分比,指定为数值标量。每个复制品的大小是脑袋×InBagFraction
,在那里脑袋是训练数据中的观察数。
数据类型:单
|双
OOBIndices
- - - - - -Out-of-bag指数
逻辑阵列
此属性是只读的。
袋外索引,指定为逻辑数组。这个属性是脑袋——- - - - - -NumTrees
数组,脑袋训练数据中的观察次数,和NumTrees
是集合中树的数量。如果
元素是OOBIndices
(我,j)真正的
,观察我是袋子外的树吗j(即TreeBagger
功能没有选择观察我用于生长树的训练数据j).
OOBInstanceWeight
- - - - - -每次观察的袋外树数
数值向量
此属性是只读的。
每个观察的袋外树数,指定为数值向量。这个属性是脑袋-by-1向量,其中脑袋是训练数据中的观察数。的
元素包含用于计算用于观察的袋外响应的树的数量我.OOBInstanceWeight
(我)
数据类型:单
|双
OOBPermutedPredictorCountRaiseMargin
- - - - - -预测变量对提高边际的重要性
数值向量
此属性是只读的。
提高边际的预测变量(特征)重要性,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是训练数据中变量的数量。对于每个变量,度量是提高边际数和降低边际数之间的差值,如果该变量的值在袋外观测中排列的话。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。
此属性为空([]
)用于回归树。
数据类型:单
|双
OOBPermutedPredictorDeltaError
- - - - - -预测误差的预测变量重要性
数值向量
此属性是只读的。
预测误差的预测变量(特征)重要性,用数值向量表示。这个性质是1 ×据nvar向量,据nvar是训练数据中变量(列)的数量。对于每个变量,度量是预测误差的增加,如果该变量的值在袋外观测中被打乱。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。
数据类型:单
|双
OOBPermutedPredictorDeltaMeanMargin
- - - - - -分类边际的预测变量重要性
数值向量
此属性是只读的。
预测变量(特征)对分类边界的重要性,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是训练数据中变量(列)的数量。对于每个变量,度量是分类边际的减少,如果该变量的值在袋外观测中被打乱。对每棵树进行测量,然后对整个集合进行平均,并除以整个集合的标准偏差。
此属性为空([]
)用于回归树。
数据类型:单
|双
树的属性
DeltaCriterionDecisionSplit
- - - - - -为每个预测器拆分标准贡献
数值向量
此属性是只读的。
为每个预测器划分标准,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是分割准则中的更改数。该软件将拆分标准在每个变量上的变化相加,然后在整个已生长的树集合上平均总和。
数据类型:单
|双
MergeLeaves
- - - - - -叶子合并指示器
假
或0(默认)|真正的
或1
此属性是只读的。
用于合并叶的指示器,指定为数字或逻辑1 (真正的
)或0 (假
).这个性质是真正的
如果软件将决策树叶子与相同的父节点合并,则不会降低总风险。否则,这个属性为假
.
MinLeafSize
- - - - - -最小叶节点观测数
正整数
此属性是只读的。
最小叶节点观测数,指定为正整数。每片叶子至少有MinLeafSize
观察。默认情况下,MinLeafSize
1表示分类树,5表示回归树。对于决策树训练,fitctree
而且fitrtree
设置名称-值参数MinParentSize
来2 * MinLeafSize
.
数据类型:单
|双
NumTrees
- - - - - -决策树数量
正整数
此属性是只读的。
袋装集合中决策树的数目,指定为正整数。
数据类型:单
|双
修剪
- - - - - -估计修剪子树最佳序列的指标
假
或0(默认)|真正的
或1
此属性是只读的。
用于估计修剪后的子树的最佳序列的指示器,指定为数值或逻辑1 (真正的
)或0 (假
).的修剪
属性是真正的
如果修剪决策树,和假
如果不是的话。对于集合,不建议使用修剪决策树。
SampleWithReplacement
- - - - - -指示样本决策树与替换
真正的
或1(默认)|假
或0
此属性是只读的。
用替换对每个决策树进行抽样的指示器,替换指定为数值或逻辑1 (真正的
)或0 (假
).这个性质是真正的
如果TreeBagger
函数用替换对每个决策树进行抽样,和假
否则。
SurrogateAssociation
- - - - - -变量关联的预测措施
数字矩阵
此属性是只读的。
变量关联的预测度量,指定为数值矩阵。这个属性是据nvar——- - - - - -据nvar矩阵,据nvar是预测变量的数量。该属性包含变量关联的预测度量,在整个生长的树木集合中平均。
如果你用
代理
名称-值参数设置为“上”
,对于每棵树,这个矩阵充满了在代理分割上平均的关联预测度量。如果你用
代理
名称-值参数设置为“关闭”
,SurrogateAssociation
性质是单位矩阵。默认情况下,代理
设置为“关闭”
.
数据类型:单
|双
TreeArguments
- - - - - -指定的名称-值参数TreeBagger
函数
单元阵列
此属性是只读的。
属性指定的名称-值参数TreeBagger
函数,指定为单元格数组。的TreeBagger
函数在为打包集合生长新树时使用这些名称-值参数。
树
- - - - - -集成决策树
单元阵列
此属性是只读的。
袋装集合中的决策树,指定为NumTrees
-by-1单元格数组。每棵树都是CompactClassificationTree
或CompactRegressionTree
对象。
预测性能
NumPredictorSplit
- - - - - -每个预测器的决策分裂数
数值向量
此属性是只读的。
每个预测器的决策分割数,指定为数值向量。这个性质是1 ×据nvar向量,据nvar是预测变量的数量。的每个元素NumPredictorSplit
表示预测器上对所有树求和的分割数。
数据类型:单
|双
NumPredictorsToSample
- - - - - -要选择的预测变量的数量
正整数
此属性是只读的。
为每个决策分割随机选择的预测变量的数量,指定为正整数。默认情况下,这个属性是分类树变量总数的平方根,回归树变量总数的三分之一。
数据类型:单
|双
OutlierMeasure
- - - - - -每个观测值的离群值测量
数值向量
此属性是只读的。
每个观测值的离群值,以数值向量表示。这个属性是脑袋-by-1向量,其中脑袋是训练数据中的观察数。
数据类型:单
|双
PredictorNames
- - - - - -预测的名字
字符向量的单元格数组
此属性是只读的。
预测器名称,指定为字符向量的单元格数组。元素的顺序PredictorNames
对应于预测器名称在训练数据中出现的顺序X
.
X
- - - - - -预测
数字数组
此属性是只读的。
用于训练袋装集合的预测器,指定为数值数组。这个属性是脑袋——- - - - - -据nvar数组,脑袋观察数(行)和据nvar是训练数据中变量(列)的数量。
数据类型:单
|双
响应特性
DefaultYfit
- - - - - -默认预测值
""
|“MostPopular”
|数字标量
返回的默认预测值预测
或oobPredict
,指定为""
,“MostPopular”
,或数值标量。属性返回的预测值预测
或oobPredict
当无法预测时(例如,当oobPredict
预测对集合中所有树的观察的响应)。
对于分类树,可以设置
DefaultYfit
要么""
或“MostPopular”
.如果你指定“MostPopular”
(默认为分类),属性值是训练数据中最可能的类的名称。如果你指定""
时,袋外误差和裕度的计算不考虑袋内观测值。对于回归树,您可以设置
DefaultYfit
任意数值标量。回归的默认值是训练数据响应的平均值。如果你设置DefaultYfit
来南
时,袋外误差和裕度的计算不考虑袋内观测值。
例子:Mdl。DefaultYfit = " MostPopular "
数据类型:单
|双
|字符
|字符串
Y
- - - - - -类标签或响应数据
字符向量的单元格数组|数值向量
此属性是只读的。
类标签或响应数据,指定为字符向量或数字向量的单元格数组。
如果你设置
方法
参数的名称-值“分类”
,此属性表示类标签。每行Y
的对应行所观察的分类X
.如果你设置
方法
参数的名称-值“回归”
,此属性表示响应数据,是一个数值向量。
数据类型:单
|双
|细胞
训练属性
方法
- - - - - -集合类型
“分类”
|“回归”
此属性是只读的。
集成类型,指定为“分类”
用于分类集合或“回归”
对于回归集合。
接近
- - - - - -训练数据观察之间的接近性
数字数组
此属性是只读的。
训练数据观察值之间的接近度,指定为数值数组。这个属性是脑袋——- - - - - -脑袋数组,脑袋是训练数据中的观察数。该阵列包含观测值之间的接近度测量。对于任意两个观测值,它们的接近度被定义为这些观测值落在同一片树叶上的树木比例。该数组是对称的,对角线上的元素和非对角线元素的范围从0到1。
数据类型:单
|双
W
- - - - - -观察权重
非负值的向量
此属性是只读的。
观察权重,指定为非负值的向量。此属性的行数与Y
.每一项W
中相应观测值的相对重要性Y
.的TreeBagger
函数使用观测权值来生长集合中的每棵决策树。
数据类型:单
|双
分类属性
一会
- - - - - -唯一的类名
字符向量的单元格数组
此属性是只读的。
训练模型中使用的唯一类名,指定为字符向量的单元格数组。
此属性为空([]
)用于回归树。
成本
- - - - - -误分类代价
数字方阵
此属性是只读的。
错误分类代价,用数字方阵表示。的元素成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
.行对应真实的类,列对应预测的类。的行和列的顺序成本
中类的顺序对应一会
.
此属性为空([]
)用于回归树。
数据类型:单
|双
之前
- - - - - -先验概率
数值向量
此属性是只读的。
先验概率,用数字向量表示。元素的顺序之前
对应于元素的顺序Mdl。ClassNames
.
方法指定成本矩阵成本
的名称-值参数TreeBagger
函数,之前
的属性TreeBagger
模型对象存储先验概率(由之前
名称-值参数)调整了错误分类代价。详情请参见算法.
此属性为空([]
)用于回归树。
数据类型:单
|双
对象的功能
创建CompactTreeBagger
紧凑的 |
决策树的紧凑集合 |
解释合奏
partialDependence |
计算部分依赖关系 |
plotPartialDependence |
创建部分依赖图(PDP)和个别条件期望图(ICE) |
测量性能
错误 |
错误(错误分类概率或MSE) |
meanMargin |
平均分类裕度 |
保证金 |
分类保证金 |
oobError |
Out-of-bag错误 |
oobMeanMargin |
袋外平均边际 |
oobMargin |
Out-of-bag利润率 |
oobQuantileError |
回归树的袋外分位数损失 |
quantileError |
分位数损失使用袋回归树 |
预测的反应
oobPredict |
袋外观测的集合预测 |
oobQuantilePredict |
从袋回归树的袋外观测的分位数预测 |
预测 |
使用袋装决策树的集合预测响应 |
quantilePredict |
使用回归树袋预测响应分位数 |
例子
袋装分类树的训练集合
为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 (“袋外分类错误”)
袋外误差随着生长树木数量的增加而减小。
预测袋外观察的标签。显示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 (“燃料经济”)包含(“发动机排量”)传说(“数据”,“平均响应”,...“第一四分位数”,“中值”,...,“第三四分位数”)
袋装回归树的无偏预测器重要性估计
创建两个袋装回归树集合,一个使用标准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 =“没有”;
对于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;
删除中的行X
,Y
,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
函数
除了它名称-值对参数,TreeBagger
函数接受以下的名称-值参数fitctree
而且fitrtree
.
金宝app支持fitctree 参数 |
金宝app支持fitrtree 参数 |
---|---|
AlgorithmForCategorical |
MaxNumSplits |
一会 * |
MergeLeaves |
MaxNumCategories |
PredictorSelection |
MaxNumSplits |
修剪 |
MergeLeaves |
PruneCriterion |
PredictorSelection |
QuadraticErrorTolerance |
修剪 |
SplitCriterion |
PruneCriterion |
代理 |
SplitCriterion |
权重 |
代理 |
N/A |
权重 |
N/A |
*当您指定一会
名称-值参数作为逻辑向量,使用0和1值。不要使用假
而且真正的
值。例如,您可以指定一会
作为[10 0 1]
.
提示
对于一个
TreeBagger
模型Mdl
,树
属性包含的单元格向量Mdl。NumTrees
CompactClassificationTree
或CompactRegressionTree
对象。命令的图形显示t
长成的树进入:视图(Mdl.Trees {t})
对于回归问题,
TreeBagger
金宝app支持均值和分位数回归(即分位数回归森林)[5]).为了预测平均响应或估计给定数据的均方误差,传递a
TreeBagger
对象的模型和数据预测
或错误
,分别。若要对袋外观察执行类似操作,请使用oobPredict
或oobError
.为了估计响应分布的分位数或给定数据的分位数误差,传递a
TreeBagger
对象的模型和数据quantilePredict
或quantileError
,分别。若要对袋外观察执行类似操作,请使用oobQuantilePredict
或oobQuantileError
.
标准CART倾向于选择包含许多不同值(如连续变量)的分割预测器,而不是包含很少不同值(如分类变量)的分割预测器[4].考虑指定曲率或交互测试,如果以下任何一个是真的:
与其他预测器相比,该数据具有相对较少的不同值的预测器;例如,预测器数据集是异构的。
您的目标是分析预测器的重要性。
TreeBagger
中存储预测器重要性估计OOBPermutedPredictorDeltaError
财产。
有关预测器选择的更多信息,请参阅name-value参数
PredictorSelection
用于分类树或名称-值参数PredictorSelection
对于回归树。
算法
如果您指定
成本
,之前
,权重
参数时,输出模型对象将指定的值存储在成本
,之前
,W
属性,分别。的成本
属性存储用户指定的成本矩阵(C),无需修改。的之前
而且W
属性分别存储归一化后的先验概率和观测权重。对于模型训练,软件更新先验概率和观察权重,以纳入成本矩阵中描述的惩罚。详细信息请参见错误分类成本矩阵,先验概率和观察权重.的
TreeBagger
函数通过错分类代价大的过采样类和错分类代价小的过采样类生成袋内样本。因此,袋外样本对错误分类代价大的类的观测值较少,而对错误分类代价小的类的观测值较多。如果使用小数据集和高度倾斜的成本矩阵训练分类集合,那么每个类的袋外观察数可能非常低。因此,估计的袋外误差可能有很大的方差,难以解释。同样的现象也会发生在具有较大先验概率的类上。有关如何
TreeBagger
函数选择分裂预测器,有关函数生长决策树时的节点分裂算法的信息,请参见算法对于分类树和算法对于回归树。
选择功能
统计和机器学习工具箱™为装袋和随机森林提供了三个对象:
RegressionBaggedEnsemble
对象创建的fitrensemble
回归函数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.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
此函数支持高数组,但有以下限金宝app制。
的
TreeBagger
函数支持tall的金宝app这些语法X
,Y
,资源描述
:B = TreeBagger(NumTrees,Tbl,Y)
B = TreeBagger(NumTrees,X,Y)
B = TreeBagger(___,Name=Value)
对于高数组,使用
TreeBagger
函数支持分类,但不金宝app支持回归。的
TreeBagger
函数支持这些名称-金宝app值参数:NumPredictorsToSample
—默认值为分类变量个数的平方根。MinLeafSize
—默认值为1
如果观测数小于5万。如果观察数为50,000或更大,则默认值为马克斯(1分钟(5楼(0.01 * NobsChunk)))
,在那里NobsChunk
是一个块中的观测数。ChunkSize
(仅适用于高数组)—默认值为50000
.
此外,
TreeBagger
函数支持的这些名称金宝app-值参数fitctree
:AlgorithmForCategorical
CategoricalPredictors
成本
-成本矩阵的列C
不能包含正
或南
值。MaxNumCategories
MaxNumSplits
MergeLeaves
PredictorNames
PredictorSelection
之前
修剪
PruneCriterion
SplitCriterion
代理
权重
对于大数据,使用
TreeBagger
函数返回CompactTreeBagger
对象,该对象包含与full相同的大部分属性TreeBagger
对象。主要的区别是紧凑对象的内存效率更高。紧凑对象不包含包含数据的属性,也不包含与数据大小相同的数组的属性。返回中包含的树的数量
CompactTreeBagger
对象的树数可以与指定为输入的树数不同TreeBagger
函数。TreeBagger
根据以下因素确定要返回的树的数量,这些因素包括输入数据集的大小和用于生长树的数据块的数量。金宝app支持
CompactTreeBagger
对象函数为:结合
错误
保证金
meanMargin
预测
setDefaultYfit
的
错误
,保证金
,meanMargin
,预测
对象函数不支持名称-值参数金宝app树
,TreeWeights
,或UseInstanceForTree
.的meanMargin
函数也不支持金宝app权重
名称-值参数。的
TreeBagger
函数通过在不相连的数据块上生成树来创建随机森林。当可用数据多于创建随机森林所需的数据时,该函数对数据进行子抽样。有关类似示例,请参见大数据随机森林[6].根据数据的存储方式,一些数据块可能只包含来自所有类中的少数类的观察结果。在这种情况下,
TreeBagger
与每个数据块包含大多数类的观察结果相比,函数可能会产生较差的结果。在培训期间
TreeBagger
算法、速度、准确性和内存使用取决于许多因素。这些因素包括的值NumTrees
和名称-值参数ChunkSize
,MinLeafSize
,MaxNumSplits
.对于一个n——- - - - - -p高大的数组
X
,TreeBagger
在培训过程中实施抽样。这个抽样取决于这些变量:树木数量
NumTrees
块大小
ChunkSize
观察次数n
块数r(大约等于
n/ ChunkSize
)
因为n是固定的吗
X
,您的设置NumTrees
而且ChunkSize
确定TreeBagger
样品X
.如果r>
NumTrees
,然后TreeBagger
样品ChunkSize * NumTrees
观察从X
,并在每个块中训练一棵树(每个块包含ChunkSize
观察数)。当您使用高数组时,这种场景是最常见的。如果r≤
NumTrees
,然后TreeBagger
火车大约NumTrees /r
在每个块中使用树,在块中使用自举。如果n≤
ChunkSize
,然后TreeBagger
使用自举生成样本(每个大小n),以训练个别的树木。
的值时
NumTrees
,考虑以下几点:如果您在Apache Spark™上运行代码,并且您的数据集与Hadoop一起分布®分布式文件系统(HDFS™),首先指定一个值
NumTrees
这至少是您的数据集HDFS分区数量的两倍。该设置可以防止Apache Spark执行器之间进行过多的数据通信,并提高TreeBagger
算法。TreeBagger
在结果中,复制将树安装到客户端内存中CompactTreeBagger
模型。因此,客户端可用的内存量为您可以设置的值创建了一个上限NumTrees
.的值可以调优MinLeafSize
而且MaxNumSplits
为了更高效的速度和内存使用,以牺牲一些预测准确性为代价。调优后,如果的值NumTrees
小于您的数据集在HDFS中的分区数量的两倍,然后考虑在HDFS中重新划分您的数据以拥有更大的分区。
的值之后
NumTrees
,设置ChunkSize
为了确保TreeBagger
用大部分数据来种树。理想情况下,ChunkSize * NumTrees
应该近似n,即数据中的行数。请注意,用于训练单个树的worker中可用的内存也可以确定的上限ChunkSize
.您可以调整Apache Spark内存属性以避免内存不足错误并支持您的工作流。金宝app看到
parallel.cluster.Hadoop
(并行计算工具箱)获取更多信息。
有关更多信息,请参见内存不足数据的高数组.
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要并行运行,请指定“选项”
参数中的名称-值,并将“UseParallel”
字段的选项结构为真正的
使用statset
.
例如:“选项”,statset (UseParallel,真的)
有关并行计算的更多信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
版本历史
在R2009a中引入R2022a:成本
属性存储用户指定的成本矩阵
从R2022a开始,成本
属性存储用户指定的成本矩阵。软件存储标准化先验概率(之前
)和观察权重(W
),不反映成本矩阵中所描述的惩罚。
请注意,模型训练没有改变,因此,类之间的决策边界没有改变。
对于训练,拟合函数通过合并指定成本矩阵中描述的惩罚来更新指定的先验概率,然后将先验概率和观察权重归一化。这种行为没有改变。在以前的版本中,软件将默认成本矩阵存储在成本
属性,并存储用于训练的先验概率和观察权重之前
而且W
属性,分别。从R2022a开始,软件存储用户指定的不加修改的成本矩阵,并存储不反映成本惩罚的标准化先验概率和观察权重。详情请参见错误分类成本矩阵,先验概率和观察权重.
的oobError
而且oobMeanMargin
函数使用存储在W
财产。因此,如果在训练分类模型时指定非默认代价矩阵,则对象函数返回的值与以前版本的值不同。
如果您希望软件像以前版本中那样处理成本矩阵、先验概率和观察权重,请调整非默认成本矩阵的先验概率和观察权重,如中所述调整错误分类成本矩阵的先验概率和观测权重.然后,当你训练一个分类模型,指定调整的先验概率和观察权重使用之前
而且权重
分别使用名称-值参数,并使用默认代价矩阵。
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。