主要内容

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

统计和机器学习工具箱™提供了两个支持自举树木的引导聚合(袋装)的两个对象:金宝appTreeBagger由使用TreeBaggerClassificationBaggedensemble.由使用fitcensemble.看套袋式和套袋式的比较之间的差异TreeBaggerClassificationBaggedensemble.

此示例显示使用该功能进行分类的工作流程TreeBagger只有。

使用351个观察和34个真实预测因子的电离层数据。响应变量是具有两个级别的分类:

  • 'G'表示良好的雷达回报。

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

目标是使用一组34个测量值来预测收益的好坏。

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

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

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

该方法列出了少量树木的乐队,在所有树木的袋子里的观察中。对于这种观察结果,不可能计算真正的袋子预测,并且是不可能的TreeBagger返回最可能的类进行分类,并返回样本均值进行回归。您可以使用该方法更改返回的返回袋中观测的默认值defaultyfit.财产。如果将默认值设置为用于分类的空字符向量,则该方法将不包括从禁止禁止错误的计算的内部观察。在这种情况下,当树的数量很小时,曲线是更变化的,因为某些观察结果从不从袋子中(并且被排除)或者因为它们的预测基于几棵树。

B.Defaultyfit =.'';图绘制(oobError (b))包含('成长的树木数量')ylabel(“包外误差排除包内观测”

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

OOBIndices的属性TreeBagger追踪哪些观察是什么树木。使用此属性,您可以监控所有树木的培训数据中的观察分数。曲线以大约2/3开始,这是一个自举复制品选择的独特观测的分数,并且在大约10棵树上下降到0。

FINBAG =零(1,B.numtrees);t = 1: b。NTrees finbag (t) =(所有的总和(~ b.OOBIndices (:, 1: t), 2));结束FINBAG = FINBAG /尺寸(x,1);图绘图(FINBAG)XLABEL('成长的树木数量')ylabel(“袋装观察的部分”

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

估计特征重要性。

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

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

选择产生大于0.75的重要性测量的功能。该阈值是任意选择的。

IDXVAR =查找(B.OobperMutedPredictordOrtaError> 0.75)
idxvar =1×53 5 7 8 27

选择最重要的特性后,在减少的特性集上发展更大的集成。节省时间,不打乱包外的观察,以获得新的估计特征的重要性,为简化的特征集(集Oobvarimp.'离开')。您仍然有兴趣获取分类错误的禁止估计(集OOBPred“上”)。

b5v = treebagger(100,x(:,idxvar),y,'Oobpredictorimportance''离开'“OOBPrediction”“上”);图绘制(oobError (b5v))包含('成长的树木数量')ylabel(“Out-of-Bag分类错误”

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

对于分类集合,除了分类误差(错误分类观察的部分),您还可以监控平均分类裕度。对于每一个观察,保证金定义为真实类的得分与该树预测的其他类的最大得分之间的差值。累积分类边际使用的是所有树的平均分,而平均累积分类边际是所有观测值的平均分。的oobMeanMargin方法与'模式'参数设置为'累积'(默认值)显示了均值的累积边缘如何变化,因为返回数组中的每个新元素都表示通过集合中的一棵新树获得的累积边缘。如果培训成功,您希望看到平均分类保证金的逐步增加。

该方法列出了少量树木的乐队,在所有树木的袋子里的观察中。对于这种观察结果,不可能计算真正的袋子预测,并且是不可能的TreeBagger返回最可能的类进行分类,并返回样本均值进行回归。

对于决策树,分类分数是观察该树叶中该类的实例的概率。例如,如果生长的决策树的叶子有五个'好的'和三'坏的'在它里面的训练观察,这个决策树返回的分数对于任何落在这个叶子上的观察是5/8'好的'班级和3/8的'坏的'类。这些概率被称为'分数'与可能对返回的预测的数值没有明显解释的其他分类器保持一致。

图绘图(OobmeAnmargin(B5V));包含('成长的树木数量')ylabel(“包外平均分类裕度”

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

计算近距离的矩阵并检查异常值措施的分布。与回归不同,分别在每个类中计算分类集合的异常度量。

b5v = fillProximities (b5v);图直方图(b5v.OutlierMeasure)包含('异常值衡量')ylabel(“数量的观察”

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

找到极端异常值的课程。

extremeOutliers = b5v.Y (b5v.OutlierMeasure > 40)
Expleteoutliers =.6x1细胞{'g'} {'g'} {'g'} {'g'} {'g'} {'g'} {'g'} {'g'}
百分表= 100 * SUM(StrcMP(Extremoutliers,'G'))/ numel(极端输出商)
百分比= 100.

所有极端异常值都标有标记为'好的'

至于回归,您可以使用“颜色”名称值对参数绘制缩放坐标,以不同颜色显示两个类mdsProx.此参数采用字符向量,其中每个字符表示颜色。该软件不会排名类名。因此,最好的做法是确定类中的课程的位置一会集合的性质。

gPosition =找到(strcmp ('G', b5v.ClassNames))
gposition = 2

'坏的'班级是第一个和'好的'类是第二。显示缩放坐标使用红色'坏的'班和蓝色为'好的'课堂观察。

图[s,e] = mdsprox(b5v,'颜色'rb的);包含(“第一比例协调”)ylabel('第二次缩放坐标'

图中包含一个轴对象。轴对象包含2个类型的散射对象。这些对象代表B,G。

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

图酒吧(e(1:20))包含('缩放坐标索引')ylabel(“特征值”

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

另一种探索分类集合的性能的方法是绘制其接收器操作特征(ROC)曲线或适合当前问题的其他性能曲线。获得对袋外观察的预测。对于分类集合,oobPredict方法返回分类标签的单元格数组作为第一个输出参数,并返回分数的数字数组作为第二个输出参数。返回的分数数组有两列,每列对应一个类。在本例中,第一列是'坏的'类,第二列是'好的'类。分数矩阵中的一列是冗余的,因为得分表示树叶中的类概率,并且根据定义将最多添加1。

[Yfit, Sfit] = oobPredict (b5v);

perfcurve.计算性能曲线。默认情况下,perfcurve.返回标准ROC曲线,这是真正的阳性率与误呈速率。perfcurve.需要真正的类标签、分数和输入的正类标签。在本例中,选择'好的'类都是积极正面的。

[FPR,TPR] = Perfcurve(B5V.Y,SFIT(:,GPosition),'G');图绘制(玻璃钢,tpr)包含('虚假阳性率')ylabel('真正的阳性率'

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

而不是标准的ROC曲线,您可能想要绘制,例如,集合精度与阈值相比'好的'类。的ycrit.输入论点perfcurve.让您指定的标准y的第三个输出参数perfcurve.返回阳性类得分的阈值数组。准确度是正确分类的观察结果的分数,或等价地,1减去分类误差。

(玻璃钢,所以,3)= perfcurve (b5v.Y, Sfit (:, gPosition),'G''ycrit'“所以”);图(20)绘图(Thre,Accu)Xlabel(''好'返回的门槛)ylabel('分类准确性'

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

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

所以他们(abs (3 - 0.5) < eps)
ANS = 0.9316.

最大精度比默认精度高一点。

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

因此,最佳阈值是。

3个(iaccu)
ANS = 0.5278.

另请参阅

|||||||

相关话题