主要内容

quantileError

类:TreeBagger

使用回归树的袋的分位数损失

描述

例子

犯错= quantileError (MdlX返回表中真实响应比较的平均绝对偏差(MAD)的一半X对应用回归树的包的预测中位数Mdl观测到的预测数据X

  • Mdl必须是一个TreeBagger模型对象。

  • 中的响应变量名X必须与包含训练数据的表中的响应变量具有相同的名称。

例子

犯错= quantileError (MdlXResponseVarName使用表中包含的真实响应和预测变量XResponseVarName响应变量的名称是and吗Mdl。PredictorNames包含预测变量的名称。

例子

犯错= quantileError (MdlXY使用表或矩阵中的预测数据X向量中的响应数据Y

例子

犯错= quantileError (___名称,值使用任何前面的语法和一个或多个指定的附加选项名称,值对参数。例如,指定分位数概率、错误类型,或者在分位数回归错误估计中包括哪些树。

输入参数

全部展开

袋子的回归树,指定为TreeBagger模型对象由TreeBagger.的价值Mdl。方法必须回归

用于估计分位数的样本数据,指定为数字矩阵或表。

每一行的X对应一个观察值,每一列对应一个变量。如果您指定Y,然后是输入的行数X必须等于Y

  • 对于数值矩阵:

    • 组成列的变量X必须和训练的预测变量有相同的顺序吗Mdl(存储在Mdl。PredictorNames).

    • 如果你训练Mdl使用表(例如,资源描述),然后X可以是一个数字矩阵,如果资源描述包含所有数值预测变量。如果资源描述则包含异构预测变量(例如,数字和分类数据类型)quantileError抛出一个错误。

    • 指定Y得到真实的反应。

  • 一个表:

    • quantileError除了字符向量的单元金宝app格数组外,不支持多列变量或单元格数组。

    • 如果你训练Mdl使用表(例如,资源描述),然后所有预测变量X必须具有与所训练的变量相同的变量名和数据类型Mdl(存储在Mdl。PredictorNames).但是,的列顺序X不需要对应的列顺序资源描述资源描述X可以包含额外的变量(响应变量、观测权值等)。

    • 如果你训练Mdl使用一个数字矩阵,然后预测器命名Mdl。PredictorNames和相应的预测变量名X肯定是一样的。要在训练期间指定预测器名称,请参见PredictorNames的名称-值对参数TreeBagger.所有的预测变量X必须是数值向量。X可以包含额外的变量(响应变量、观测权值等)。

    • 如果X包含响应变量:

      • 如果响应变量与所训练的响应变量同名Mdl,则无需提供响应变量名或真实响应向量。quantileError默认情况下,将该变量用于真实响应。

      • 您可以指定ResponseVarNameY得到真实的反应。

数据类型:表格||

响应变量名,指定为字符向量或字符串标量。ResponseVarName必须是样本数据表中响应变量的名称X

如果表X包含响应变量,它与用于训练的响应变量具有相同的名称Mdl,则不必指定ResponseVarNamequantileError默认情况下,将该变量用于真实响应。

数据类型:字符|字符串

真响应,指定为数字向量。行数X必须等于Y

数据类型:|

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

集合错误类型,指定为逗号分隔对,由“模式”和这个表中的值。假设τ的价值分位数

价值 描述
“累积”

犯错是一个Mdl。NumTrees——- - - - - -元素个数(τ累积分位数回归误差的数值矩阵。错(jkτk中使用学习者的分位数回归误差Mdl。Trees(1:j只有。

“合奏”

犯错是1 -元素个数(τ整个集成的累积分位数回归误差的数值向量。错(kτk集成分位数回归错误。

“个人”

犯错是一个Mdl。NumTrees——- - - - - -元素个数(τ来自个体学习者的分位数回归误差的数值矩阵。错(jkτk分位数回归误差使用的学习者Mdl。Trees(j只有。

“累积”“个人”,如果在分位数估计中使用了更少的树UseInstanceForTree,然后是输入的行数犯错减少从Mdl。NumTrees

例子:“模式”、“累积”

观察权值,指定为逗号分隔的对,由“重量”和一个长度等于的正数向量大小(X, 1)quantileError使用权重在估计分位数回归误差时,计算偏差的加权平均。

默认情况下,quantileError属性的权重1对每个观测结果进行加权,得到偏差的未加权平均值。

分位数概率,指定为逗号分隔对分位数的和包含区间[0,1]值的数字向量。对于每个元素分位数quantileError中的所有概率返回相应的分位数回归错误分位数

例子:'分位数',[0 0.25 0.5 0.75 1]

数据类型:|

在响应估计中使用的树的索引,指定为逗号分隔的对,包括“树”“所有”或者一个正整数的数字向量。指数对应的单元格Mdl。Trees;其中的每个细胞都包含集合中的一棵树。的最大值必须小于或等于集合中的树的数目(Mdl。NumTrees).

“所有”quantileError使用集合中的所有树(即索引)1: Mdl。NumTrees).

默认值以外的值可能会影响中的行数犯错

例子:“树”,[1 10 Mdl。NumTrees]

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

来自各个树的响应的权重,指定为逗号分隔的对,由“TreeWeights”和一个数值向量元素个数(负的值。的价值

如果您指定“模式”,“个人”,然后quantileError忽略了TreeWeights

数据类型:|

指示符指定使用哪些树对每个观测进行预测,指定为逗号分隔的对,包括“UseInstanceForTree”和一个n——- - - - - -Mdl。Trees逻辑矩阵。n观察的数量(行)在吗X.行UseInstanceForTree对应于观察,对应于学习者Mdl。Trees“所有”表示在估计分位数时使用所有观察值的所有树。

如果UseInstanceForTree (jk真正的,然后quantileError使用树Mdl。Trees(k当它预测对观察的反应时X (j:)

中的响应数据可以估计分位数Mdl。Y直接而不是使用来自随机森林的预测,指定一行完全由值。例如,估计观察的分位数j使用响应数据,并使用来自随机森林的预测对所有其他观察,指定这个矩阵:

UseInstanceForTree = true(大小(Mdl.X, 2), Mdl.NumTrees);UseInstanceForTree (j:) = false (1, Mdl.NumTrees);

默认值以外的值可能会影响中的行数犯错.同时,它的价值影响的值UseInstanceForTree.假设U的价值UseInstanceForTreequantileError忽略U对应的树不被用于估计从规范.也就是说,quantileError重置的值“UseInstanceForTree”U (:,,在那里的价值“树”

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

输出参数

全部展开

一半的分位数回归误差,作为数字标量或返回T——- - - - - -元素个数(τ矩阵。τ的价值分位数

T取决于值模式UseInstanceForTree,分位数.假设你指定“树”,使用默认值“UseInstanceForTree”

  • “模式”、“累积”犯错是一个元素个数(——- - - - - -元素个数(τ数字矩阵。错(jkτk累积分位数回归误差使用的学习者Mdl。Trees((1:j))

  • “模式”、“合奏”犯错是一个1——- - - - - -元素个数(τ数值向量。错(kτk累积分位数回归误差使用的学习者Mdl。Trees(

  • “模式”,“个人”犯错是一个元素个数(——- - - - - -元素个数(τ数字矩阵。错(jkτk分位数回归误差使用的学习者Mdl。Trees(j))

例子

全部展开

加载carsmall数据集。考虑一个模型,该模型可以预测给定发动机排量、重量和汽缸数量的汽车的燃油经济性。考虑气缸一个分类变量。

负载carsmall气缸=分类(缸);X =表(位移、重量、汽缸、MPG);

使用整个数据集训练一组袋装回归树。指定100个弱学习者。

rng (1);%的再现性Mdl = TreeBagger (100 X,“英里”“方法”“回归”);

Mdl是一个TreeBagger合奏。

执行分位数回归,并使用预测的条件中值估计整个集合的MAD。

呃= quantileError (Mdl X)
呃= 1.2339

因为X是一个包含响应和相应变量名的表,您不必指定响应变量名或数据。但是,您可以使用此语法指定响应。

呃= quantileError (Mdl X,“英里”
呃= 1.2339

加载carsmall数据集。考虑一个模型,该模型可以预测给定发动机排量、重量和汽缸数量的汽车的燃油经济性。

负载carsmallX =表(位移、重量、汽缸、MPG);

随机将数据分成两组:75%的训练和25%的测试。提取子集索引。

rng (1);%的再现性本量利= cvpartition(大小(X, 1),“坚持”, 0.25);idxTrn =培训(cvp);idxTest =测试(cvp);

使用训练集训练一个袋装回归树集合。指定250个弱学习者。

Mdl = TreeBagger (250 X (idxTrn:)“英里”“方法”“回归”);

估计测试集的累积0.25、0.5和0.75分位数回归误差。将预测器数据作为一个数字矩阵传递进来,将响应数据作为一个向量传递进来。

呃= quantileError (Mdl X {idxTest, 1:3},英里/加仑(idxTest),分位数的(0.25 0.5 0.75),...“模式”“累积”);

犯错是累积分位数回归误差的250 × 3矩阵。列对应分位数概率,行对应集合中的树。这些错误是累积的,所以它们合并了以前树的聚合预测。尽管如此,Mdl使用表进行训练,如果表中的所有预测变量都是数字,那么您可以提供一个预测数据矩阵。

在同一图上绘制累积分位数误差。

图;情节(错);传奇(“0.25分位数错误”“0.5分位数错误”“0.75分位数错误”);ylabel (“分位数错误”);包含(“树指数”);标题(“累积分位数回归误差”

图中包含一个轴对象。标题为“累计分位数回归错误”的轴对象包含3个类型为line的对象。这些对象表示0.25分位数错误,0.5分位数错误,0.75分位数错误。

在前两个四分之一阶段,使用大约60棵树就足够了,但第三个四分之一阶段需要大约150棵树。

更多关于

全部展开

提示

  • 为了调整集合中的树的数量,设置“模式”、“累积”并绘制关于树指数的分位数回归误差。所需要的树的最大数目是分位数回归错误趋于平稳的树索引。

  • 为了研究模型在训练样本较小时的性能,请使用oobQuantileError代替。

参考文献

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

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

介绍了R2016b