主要内容

使用分类树的自举聚合(Bagging)TreeBagger

统计和机器学习工具箱™提供了两个对象,支持分类树的引导聚合(bagging):金宝appTreeBagger通过使用TreeBagger而且ClassificationBaggedEnsemble通过使用fitcensemble.看到树木装袋和装袋套装的比较来区分TreeBagger而且ClassificationBaggedEnsemble

中的特性进行分类的工作流程TreeBagger只有。

使用351个观测数据和34个实值预测器的电离层数据。响应变量是分类的,有两个级别:

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

  • “b”表示糟糕的雷达回报。

其目标是通过34项测量来预测收益的好坏。

固定初始随机种子,生长50棵树,检查集合误差如何随树的积累而变化,并估计特征重要性。对于分类,最好将最小叶大小设置为1,并为随机分割的每个决策选择总的特征数量的平方根。的默认设置TreeBagger用于分类。

负载电离层rng (1945“旋风”) b = TreeBagger(50,X,Y,“OOBPredictorImportance”“上”);图(oobError(b)) xlabel(“已生长树木的数目”) ylabel (“袋外分类错误”

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

该方法训练少树的集合,对所有树的观测都是袋中的。对于这样的观测,不可能计算出真正的袋外预测TreeBagger返回用于分类的最可能类别和用于回归的样本平均值。方法可以更改袋中观察结果返回的默认值DefaultYfit财产。如果将默认值设置为用于分类的空字符向量,则该方法从计算袋外误差中排除袋内观察。在这种情况下,当树的数量很少时,曲线的变化更大,这要么是因为一些观测结果从未超出预期(因此被排除在外),要么是因为它们的预测基于很少的树。

b.DefaultYfit ='';图(oobError(b)) xlabel(“已生长树木的数目”) ylabel (“不包括袋内观测的袋外误差”

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

OOBIndices的属性TreeBagger追踪哪些观察是针对哪些树木的。使用此属性,您可以监视所有树的训练数据中观测值的百分比。曲线从大约2/3开始,这是一个自举副本选择的唯一观测值的分数,并在大约10棵树处下降到0。

finbag = 0 (1,b.NumTrees);t = 1: b。NTrees finbag (t) =(所有的总和(~ b.OOBIndices (:, 1: t), 2));结束finbag = finbag / size(X,1);图(finbag) xlabel(“已生长树木的数目”) ylabel (“袋内观察的部分”

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

估计功能的重要性。

figure bar(b.OOBPermutedPredictorDeltaError)“功能指数”) ylabel (“Out-of-Bag功能重要性”

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

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

idxvar = find(b.o bpermutedpredictordeltaerror >0.75)
idxvar =1×53 5 7 8 27

在选择了最重要的特性之后,在减少的特性集上增加一个更大的集合。通过不排列袋外观察来节省时间,以获得减少的特征集(setOOBVarImp“关闭”).您可能仍然对获得分类错误(setOOBPred“上”).

b5v = TreeBagger(100,X(:,idxvar),Y,“OOBPredictorImportance”“关闭”“OOBPrediction”“上”);图(oobError(b5v))“已生长树木的数目”) ylabel (“袋外分类错误”

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

对于分类集合,除了分类误差(错误分类观测值的百分比)之外,还可以监视平均分类裕度。对于每个观测值,保证金定义为真实类的分数与此树预测的其他类的最大分数之间的差值。累积分类裕度使用所有树的平均分数,平均累积分类裕度是所有观察值的平均累积裕度。的oobMeanMargin方法。“模式”参数设置为“累积”(默认)显示了平均累积裕度如何随着集合的增长而变化:返回数组中的每个新元素都表示通过在集合中包含新树而获得的累积裕度。如果训练成功,您将期望看到平均分类边际的逐渐增加。

该方法训练少树的集合,对所有树的观测都是袋中的。对于这样的观测,不可能计算出真正的袋外预测TreeBagger返回用于分类的最可能类别和用于回归的样本平均值。

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

图绘制(oobMeanMargin (b5v));包含(“已生长树木的数目”) ylabel (“袋外平均分类差额”

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

计算近似矩阵并检查离群值测度的分布。与回归不同,分类集合的离群值度量是在每个类中单独计算的。

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

图中包含一个轴对象。坐标轴对象包含一个直方图类型的对象。

找出极端离群值的类别。

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

所有的极端异常值都被标记了‘好’

至于回归,您可以绘制缩放坐标,使用的“colors”名值对参数以不同的颜色显示两个类mdsProx.这个参数接受一个字符向量,其中每个字符代表一种颜色。该软件不对类名进行排序。因此,确定类在类中的位置是最佳实践一会集合的性质。

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

“坏”类是第一和‘好’其次是阶级。控件使用红色显示按比例缩放的坐标“坏”类和蓝色为‘好’课堂观察。

figure [s,e] = mdsProx(b5v,“颜色”rb的);包含(“第一缩放坐标”) ylabel (“二次缩放坐标”

图中包含一个轴对象。坐标轴对象包含2个散点类型的对象。这些物体代表b g。

绘制通过缩放得到的前20个特征值。第一个特征值明显占主导地位,第一个缩放坐标是最重要的。

图栏(e(1:20)) xlabel(“缩放坐标索引”) ylabel (“特征值”

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

探索分类集成性能的另一种方法是绘制其接收者工作特征(ROC)曲线或适合当前问题的其他性能曲线。获得袋外观测的预测。对于分类集合,使用oobPredict方法返回分类标签单元格数组作为第一个输出参数,返回分数数值数组作为第二个输出参数。返回的分数数组有两列,每个类一列。在本例中,第一列是“坏”类,第二列用于‘好’类。分数矩阵中的一列是冗余的,因为分数表示树叶中的类别概率,根据定义,它们之和为1。

[Yfit,Sfit] = oobPredict(b5v);

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

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

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

情节(rocObj)

图中包含一个轴对象。标题为ROC Curve的坐标轴对象包含3个ROC曲线、散点、直线类型的对象。这些对象表示g (AUC = 0.9689), g模型工作点。

而不是标准的ROC曲线,您可能想要绘制,例如,集合精度与阈值的得分‘好’类。计算精度使用addMetrics的函数rocmetrics.准确度是正确分类观测值的分数,或等价地,1减去分类误差。

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

创建集合精度与阈值的关系图。

thre = rocobj . metrics .阈值;accu = rocobj . metrics .精度;情节(大意:accu)包含(“良好”回报的门槛”) ylabel (的分类精度

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

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

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

找到最大的准确度。

[maxaccu,iaccu] = max(accu)
Maxaccu = 0.9345
Iaccu = 99

最大精度略高于默认值。因此,最佳阈值是。

3个(iaccu)
Ans = 0.5278

另请参阅

|||||||

相关的话题