主要内容

使用的Bootstrap聚合(袋装)使用treebagger

统计和机器学习工具箱™提供两个支持Bootstrap聚合(Bagging)回归树的对象:金宝apptreebagger通过使用创建treebagger回归释迦缩短通过使用创建fitrensemble.。看到TreeBagger和Bagged Senembles的比较有关差异treebagger回归释迦缩短

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

使用1985年的汽车进口数据库,具有205个观察,25个预测因子和1个反应,这是保险风险评级或“象征”。前15个变量是数字,最后10个是分类的。符号索引从-3到3取整为整数值。

加载数据集并将其拆分为预测器和响应阵列。

加载进口-85.Y = X(:,1);x = x(:,2:结束);ISCategorical = [零(15,1);(尺寸(x,2)-15,1)];%分类变量标志

由于袋装使用随机数据图,因此其确切的结果取决于初始随机种子。要在此示例中重现结果,请使用随机流设置。

RNG(1945年,'twister'

找到最佳叶子尺寸

对于回归,一般规则是将叶片大小为5,并选择一个三分之一的输入特征,以便随机分割。在下一步骤中,通过比较通过回归为各种叶片尺寸获得的平均平方误差来验证最佳叶子尺寸。ooberror.计算MSE与成长树的数量。你必须设置Oobpred.'上'以后获得袋子外的预测。

叶= [5 10 20 50 100];col ='rbcmy';数字对于i = 1:长度(叶)b = treebagger(50,x,y,'方法''r''Oobprediction''上'......'pationoricalpricictors',找到(ISCategorical == 1),......'minleafsize',叶(i));绘图(OobError(B),Col(i))持有结束Xlabel('成长树数')ylabel('均匀的错误')传奇({'5''10''20''50''100'},'位置''东北'抱紧关闭

红色曲线(叶尺寸5)产生最低的MSE值。

估算特征重要性

在实际应用中,您通常使用数百树生长合奏。例如,之前的代码块使用50棵树以更快地处理。现在您估计了最佳叶子尺寸,延长了100棵树的更大的合并并使用它来估计特征重要性。

b = treebagger(100,x,y,'方法''r''Oobpredictorimportance''上'......'pationoricalpricictors',找到(ISCategorical == 1),......'minleafsize'5);

再次检查错误曲线,以确保在培训期间没有出错。

图绘图(OobError(b))xlabel('成长树数')ylabel(“袋子外平均方位错误”

预测能力应该依赖于重要的特征而不是不重要的功能。您可以使用此想法来衡量特征重要性。

对于每个功能,在数据集中的每一个观察中释放此功能的值,并测量MSE在排列后变差的程度。您可以为每个功能重复此功能。

绘制MSE的增加,因为跨越每个输入变量的袋子外观察。该OobpermutedPredictordeltaError阵列存储在集合中所有树上的MSE上的增加,并将每个变量的标准偏差除以树木。这个值越大,变量越重要。在0.7时施加任意截止值,可以选择四个最重要的功能。

图酒吧(B.oobpermutedPredictordordeltaError)Xlabel('功能号码')ylabel('禁止特征重要性'

IDXVAR =查找(B.OobperMutedPredictordOrtArror> 0.7)
Idxvar =.1×4.1 2 16 19
idxcategorical = find(IsCateCorical(IDXVAR)== 1);

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

FINBAG =零(1,B.NTREES);对于t = 1:b.ntree finbag(t)= sum(全部(〜b.oobindices(:,1:t),2));结束Finbag = Finbag /尺寸(x,1);图绘图(finbag)xlabel('成长树数')ylabel(“袋内观测的分数”

在减少的特征上生长树木

只使用四个最强大的功能,确定是否可以获得类似的预测力。首先,仅在这些功能上种植100棵树。四个所选功能中的前两个是数字,最后两个是分类的。

b5v = treebagger(100,x(:,idxvar),y,'方法''r'......'Oobpredictorimportance''上''pationoricalpricictors',idxcategorical,......'minleafsize'5);图绘图(OobError(B5V))XLabel('成长树数')ylabel(“袋子外平均方位错误”

图栏(B5V.oobpermutedPredictordeltaError)Xlabel('特征索引')ylabel('禁止特征重要性'

这四个最强大的功能将与全套相同的MSE,并且在减少的集合上培训的集合训练彼此类似地等待这些功能。如果从减少的集中删除特征1和2,则算法的预测功率可能不会显着降低。

寻找异常值

要查找培训数据中的异常值,请使用近距离矩阵填充填充

B5V = Fillproximities(B5V);

该方法通过减去整个样本的平均异常量度来规范化该测量。然后它需要这种差异的大小,并将结果除以整个样本的绝对偏差。

图直方图(b5v.outliermeasure)xlabel('异常衡量')ylabel('观察数'

发现数据中的群集

通过将多维缩放应用于计算的近距离的矩阵,您可以检查输入数据的结构并查找可能的观察集群。该mdsprox.方法返回计算的邻近矩阵的缩放坐标和特征值。如果你用它颜色名称 - 值对参数,然后此方法创建两个缩放坐标的散点图。

图(8)[〜,e] = mdsprox(b5v,'颜色''K');Xlabel('第一次缩放坐标')ylabel('第二次缩放坐标'

通过绘制前20个特征值来评估缩放轴的相对重要性。

图栏(E(1:20))Xlabel('缩放坐标索引')ylabel('特征值'

保存Ensemble配置以备将来使用

要使用训练有素的合奏来预测未经操作系统数据的响应,将集合存储到磁盘并稍后检索。如果您不想以任何其他方式计算袋袋数据或重用培训数据的预测,则无需存储集合对象本身。在这种情况下,保存集合的紧凑型版本就足够了。从集合中提取紧凑的对象。

C =紧凑(B5V)
C = CompactTreeBagger合奏与100袋决策树:方法:回归NumPredictors:4属性,方法

您可以保存结果CompactTreeBagger.模型在A.*。垫文件。

也可以看看

|||||

相关话题