主要内容

引导聚合(装袋)分类树的使用TreeBagger

统计和机器学习工具箱™提供了两个对象,支持引导聚合(装袋)的分类树:金宝appTreeBagger由使用TreeBaggerClassificationBaggedEnsemble由使用fitcensemble。看到比较TreeBagger和袋装的集合体之间的差异TreeBaggerClassificationBaggedEnsemble

这个例子显示了分类的工作流中使用的特性TreeBagger只有。

利用电离层数据与351年的观察和34实值预测。响应变量与两个级别分类:

  • ‘g’代表好的雷达返回。

  • “b”代表坏雷达返回。

我们的目标是预测好坏返回使用一组34测量。

修正初始随机种子,长50树上,检查整体误差如何改变与积累的树木,和评估功能的重要性。分类,最好设置最小叶大小为1,选择的平方根的总数为每个随机决定分裂功能。这些设置默认值TreeBagger用于分类。

负载电离层rng (1945“旋风”)b = TreeBagger (50, X, Y,“OOBPredictorImportance”,“上”);图绘制(oobError (b))包含(种植树木的数量)ylabel (“Out-of-Bag分类错误”)

图包含一个坐标轴对象。坐标轴对象包含大量的种植树木,ylabel Out-of-Bag分类误差包含一个类型的对象。

火车乐团和几棵树方法观察在袋树。等观察,计算真实out-of-bag预测,是不可能的TreeBagger返回最可能的类分类的样本均值回归。你可以改变默认的返回值里观察使用DefaultYfit财产。如果你设置默认值为空为分类特征向量,计算的方法不包括袋子中观察out-of-bag错误。在这种情况下,曲线更变量当树木的数量很小,因为一些观察不包(因此除外)或因为他们的预测是基于几棵树。

b。DefaultYfit =;图绘制(oobError (b))包含(种植树木的数量)ylabel (“Out-of-Bag错误排除在袋子的观察”)

图包含一个坐标轴对象。坐标轴对象包含大量的种植树木,ylabel Out-of-Bag错误排除在袋子观察包含一个类型的对象。

OOBIndices的属性TreeBagger跟踪观测所包的什么树。使用这个属性,您可以监控部分的训练数据的观察袋树。曲线开始于大约2/3,分数独特的观察选择由一个引导程序副本,并在大约10棵树下降到0。

b.NumTrees finbag = 0 (1);t = 1: b。NTrees finbag (t) =(所有的总和(~ b.OOBIndices (:, 1: t), 2));结束finbag = finbag /大小(X, 1);图绘制(finbag)包含(种植树木的数量)ylabel (“分数在袋子的观察”)

图包含一个坐标轴对象。坐标轴对象包含大量的种植树木,ylabel部分袋子中观察包含一个类型的对象。

估计特征的重要性。

图酒吧(b.OOBPermutedPredictorDeltaError)包含(“功能指数”)ylabel (“Out-of-Bag特性重要性”)

图包含一个坐标轴对象。坐标轴对象包含功能指数,ylabel Out-of-Bag特性重要性包含一个对象类型的酒吧。

选择功能产生一个重要性度量大于0.75。这个阈值是任意选择的。

idxvar =找到(b.OOBPermutedPredictorDeltaError > 0.75)
idxvar =1×53 5 7 8 27

拥有选择的最重要的功能,促进一个更大的整体的特性集,节省时间减少了不交换out-of-bag观察获得新的功能重要性的估计减少特性集(集OOBVarImp“关闭”)。你仍然有兴趣获得out-of-bag分类错误(集的估计OOBPred“上”)。

b5v = TreeBagger (100 X (:, idxvar), Y,“OOBPredictorImportance”,“关闭”,“OOBPrediction”,“上”);图绘制(oobError (b5v))包含(种植树木的数量)ylabel (“Out-of-Bag分类错误”)

图包含一个坐标轴对象。坐标轴对象包含大量的种植树木,ylabel Out-of-Bag分类误差包含一个类型的对象。

为分类乐团,除了分类错误(更进一步观察的分数),你也可以监督分类平均利润率。对于每个观测,保证金被定义为真正的得分之间的差异类和其他类的最大成绩预测的这棵树。累计分类保证金使用对所有树木和平均累积分数平均分类保证金是在所有观测累积平均利润率。的oobMeanMargin方法与“模式”参数设置为“累积”(默认)显示了平均利润率的累积变化随着合奏的增长:返回数组中的每个新元素代表了累积获得的利润包括新树。如果训练是成功的,你会看到一个逐渐增加的分类。

火车乐团和几棵树方法观察在袋树。等观察,计算真实out-of-bag预测,是不可能的TreeBagger返回最可能的类分类的样本均值回归。

决策树的分类得分的概率是观察在这棵树的叶子这个类的一个实例。例如,如果种植决策树的叶子有五个‘好’和三个“坏”训练观察,观察的分数返回的这个决策树落在这叶的5/8‘好’类和3/8“坏”类。这些概率被称为“分数”与其他分类器的一致性,可能没有一个明显的解释返回的数值预测。

图绘制(oobMeanMargin (b5v));包含(种植树木的数量)ylabel (“Out-of-Bag意味着分类保证金”)

图包含一个坐标轴对象。坐标轴对象包含大量的种植树木,ylabel Out-of-Bag意味着分类边缘包含一个类型的对象。

计算矩阵的亲近并检查离群值的分布的措施。分类与回归,局外人措施乐团分别计算每个类中。

b5v = fillProximities (b5v);图直方图(b5v.OutlierMeasure)包含(离群值测量的)ylabel (“数量的观察”)

图包含一个坐标轴对象。坐标轴对象包含异常值衡量,ylabel观察包含一个直方图类型的对象的数量。

找到类的极端异常值。

extremeOutliers = b5v.Y (b5v.OutlierMeasure > 40)
extremeOutliers =6 x1细胞{' g '} {‘g’} {‘g’} {‘g’} {‘g’} {' g '}
percentGood = 100 *总和(strcmp (extremeOutliers,‘g’))/元素个数(extremeOutliers)
percentGood = 100

所有的极端异常值标签‘好’

至于回归,你可以画出了坐标,以不同的颜色显示两个类使用“颜色”的名称-值对的论点mdsProx。这个参数需要一个特征向量,每个字符代表一个颜色。软件没有类名。因此,最佳实践来确定类的位置一会财产的合奏。

gPosition =找到(strcmp (‘g’,b5v.ClassNames))
gPosition = 2

“坏”类是第一的‘好’类是第二。显示了使用红色的坐标“坏”类和蓝色的‘好’课堂观察。

图(s、e) = mdsProx (b5v,“颜色”,rb的);包含(“第一比例协调”)ylabel (“第二个比例协调”)

图包含一个坐标轴对象。坐标轴对象包含第一比例协调,ylabel第二比例协调包含2散射类型的对象。这些对象代表b, g。

情节第一20缩放得到的特征值。第一特征值明显占据主导地位,而第一比例协调是最重要的。

图酒吧(e(1:20))包含(“按比例缩小的协调指数”)ylabel (“特征值”)

图包含一个坐标轴对象。坐标轴对象包含了协调指数,ylabel特征值包含一个对象类型的酒吧。

探索的另一种方式的性能分类合奏是情节其接受者操作特征(ROC)曲线或另一个性能曲线适用于当前的问题。获得预测out-of-bag观察。分类合奏,oobPredict方法返回一个单元阵列的分类标签作为第一个输出参数和一个数字分数作为第二个输出参数的数组。返回的数组的分数有两列,一个为每个类。在这种情况下,第一列是“坏”类,第二列是‘好’类。一列的得分矩阵是多余的,因为分数代表着树叶和类概率定义1。

[Yfit, Sfit] = oobPredict (b5v);

使用rocmetrics计算性能曲线。默认情况下,rocmetrics计算真阳性和假阳性的比例ROC曲线。

rocObj = rocmetrics (b5v.Y Sfit (:, gPosition),‘g’);

绘制ROC曲线‘好’类通过使用情节的函数rocmetrics

情节(rocObj)

图包含一个坐标轴对象。坐标轴对象与标题ROC曲线,包含假阳性,ylabel真阳性率包含3 roccurve类型的对象,散点、线。这些对象代表g (AUC = 0.9689), g模型操作点。

而不是标准ROC曲线,你可能想情节,例如,整体精度和阈值的分数‘好’类。使用的计算精度addMetrics的函数rocmetrics。准确性是正确的分数分类观察,或等价于1 -分类错误。

rocObj = addMetrics (rocObj,“准确性”);

创建一个块整体精度和阈值。

3 = rocObj.Metrics.Threshold;所以= rocObj.Metrics.Accuracy;情节(大意:accu)包含(““好”返回阈值”)ylabel (的分类精度)

图包含一个坐标轴对象。坐标轴对象包含阈值为“好”的回报,ylabel分类精度包含一个类型的对象。

曲线显示了一个平坦的区域,表明任何阈值从0.2到0.6是一个合理的选择。默认情况下,分类模型分配分类标签使用0.5作为两个类之间的边界。你能找到什么精度对应。

[~,idx] = min (abs (3 - 0.5));所以他们(idx)
ans = 0.9316

找到最大的准确性。

[maxaccu, iaccu] = max(所以)
maxaccu = 0.9345
iaccu = 99

最大精度略高于默认的一个。因此,最优阈值。

3个(iaccu)
ans = 0.5278

另请参阅

|||||||

相关的话题