主要内容

使用回归树的自举聚合(Bagging)TreeBagger

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

中的特性展示了回归的工作流程TreeBagger只有。

使用1985年汽车进口的数据库,其中包含205个观察值、25个预测因子和1个响应,即保险风险评级或“符号化”。前15个变量是数字变量,后10个变量是分类变量。符号索引接受从-3到3的整数值。

加载数据集并将其分割为预测器和响应数组。

负载进口- 85Y = x (:,1);X = X(:,2:end);isCategorical = [0 (15,1);(大小(X, 2) -15年,1)];类别变量标志

因为套袋使用随机数据图,它的确切结果取决于最初的随机种子。要在本例中重现结果,请使用随机流设置。

rng (1945“旋风”

寻找最佳叶片大小

对于回归,一般的规则是将叶子大小设置为5,并随机选择三分之一的输入特征进行决策分割。在接下来的步骤中,通过比较回归得到的各种叶片尺寸的均方误差来验证最佳叶片尺寸。oobError计算MSE与已生长树木的数量。你必须设置OOBPred“上”以便以后获得袋外预测。

Leaf = [5 10 20 50 100];坳=“rbcmy”;图保存i=1:长度(叶子)b = TreeBagger(50,X,Y,“方法”“回归”...“OOBPrediction”“上”...“CategoricalPredictors”,find(isCategorical == 1),...“MinLeafSize”、叶(i));情节(oobError (b),坳(我))结束包含(“已生长树木的数目”) ylabel (“均方误差”)({传奇“5”“十”“20”“50”“100”},“位置”“东北”)举行

图中包含一个轴对象。axis对象包含5个line类型的对象。这些对象代表5 10 20 50 100。

红色曲线(叶片大小为5)的MSE值最低。

评估特征重要性

在实际应用中,通常需要种植数百棵树。例如,前面的代码块使用50棵树来加快处理速度。现在您已经估计了最佳的叶子大小,生长一个包含100棵树的更大的集合,并使用它来估计特征的重要性。

b = TreeBagger(100,X,Y,“方法”“回归”...“OOBPredictorImportance”“上”...“CategoricalPredictors”,find(isCategorical == 1),...“MinLeafSize”5);

再次检查误差曲线,确保训练过程中没有出错。

图(oobError(b)) xlabel(“已生长树木的数目”) ylabel (“Out-of-Bag均方误差”

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

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

对于每个特征,将该特征的值在数据集中的每个观测值之间进行排列,并测量排列后MSE变得有多糟糕。您可以为每个特性重复此操作。

绘制MSE的增加,这是由于对每个输入变量的袋外观测进行了排列。的OOBPermutedPredictorDeltaError数组存储集合中所有树的平均MSE的增加,并除以对每个变量的树的标准偏差。这个值越大,变量就越重要。设定一个任意的临界值0.7,您可以选择四个最重要的特性。

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

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

idxvar = find(b.o bpermutedpredictordeltaerror >0.7)
idxvar =1×41 2 16 19
idxCategorical = find(isCategorical(idxvar)==1);

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

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

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

在减少的特征集上种植树木

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

b5v = TreeBagger(100,X(:,idxvar),Y,...“方法”“回归”“OOBPredictorImportance”“上”...“CategoricalPredictors”idxCategorical,“MinLeafSize”5);图(oobError(b5v))“已生长树木的数目”) ylabel (“Out-of-Bag均方误差”

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

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

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

这四个最强大的特征给出了与完整集相同的MSE,在约简集上训练的集合对这些特征进行了相似的排序。如果你从约简集中移除特征1和2,那么算法的预测能力可能不会显著下降。

发现异常值

为了找到训练数据中的异常值,使用计算接近矩阵fillProximities

b5v = fillProximities(b5v);

该方法通过减去整个样本的平均离群值测量来规范化该测量。然后,它取这个差异的大小,并将结果除以整个样本的中位数绝对偏差。

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

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

在数据中发现集群

通过对计算出的近似矩阵应用多维缩放,您可以检查输入数据的结构,并寻找可能的观察簇。的mdsProx方法返回计算的接近矩阵的按比例缩放的坐标和特征值。如果你用颜色参数,则此方法创建两个缩放坐标的散点图。

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

图中包含一个轴对象。坐标轴对象包含一个散点类型的对象。

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

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

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

保存集成配置以备将来使用

若要使用经过训练的集成来预测对未见数据的响应,请将集成存储到磁盘中,并在以后检索它。如果您不想计算out-of-bag数据的预测或以任何其他方式重用训练数据,则不需要存储集成对象本身。在这种情况下,保存集成的紧凑版本就足够了。从集合中提取紧凑对象。

C = compact(b5v)
c = CompactTreeBagger集成100袋决策树:方法:回归NumPredictors: 4属性,方法

您可以保存结果CompactTreeBagger中的模型*.mat文件。

另请参阅

|||||

相关的话题