主要内容

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

统计和机器学习工具箱™提供了两个对象,支持回归树的引导聚合(bagging):TreeBagger由使用TreeBagger而且RegressionBaggedEnsemble由使用fitrensemble.看到装袋和袋装组合的比较之间的差异TreeBagger而且RegressionBaggedEnsemble

这个例子展示了使用中的特性进行回归的工作流程TreeBagger只有。

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

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

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

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

rng (1945“旋风”

寻找最佳叶片大小

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

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

图中包含一个axes对象。axis对象包含5个类型为line的对象。这些对象表示5、10、20、50、100。

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

评估功能的重要性

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

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

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

图绘制(oobError (b))包含(“已生长树木的数目”) ylabel (“袋外均方误差”

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

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

对于每个特征,在数据集中的每个观察中排列该特征的值,并测量排列后的MSE变差的程度。您可以对每个特性重复此操作。

绘制MSE的增加,这是由于在每个输入变量之间排列袋外观测结果而引起的。的OOBPermutedPredictorDeltaError数组存储集合中所有树的MSE平均值的增加,并除以对每个变量取的树的标准差。该值越大,表示该变量越重要。设定一个0.7的临界值,您可以选择四个最重要的特性。

图酒吧(b.OOBPermutedPredictorDeltaError)包含(的数字特征) ylabel (“Out-of-Bag特性重要性”

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

idxvar =找到(b.OOBPermutedPredictorDeltaError > 0.7)
idxvar =1×41 2 16 19
idxCategorical =找到(isCategorical (idxvar) = = 1);

OOBIndices的属性TreeBagger追踪哪棵树的观察结果。使用此属性,您可以监视训练数据中所有树都包含的观察值的百分比。曲线从大约2/3开始,这是由一个bootstrap副本选择的独特观察的分数,在大约10棵树时下降到0。

b.NTrees finbag = 0 (1);t = 1: b。NTrees finbag (t) =(所有的总和(~ b.OOBIndices (:, 1: t), 2));结束finbag = finbag /大小(X, 1);图绘制(finbag)包含(“已生长树木的数目”) ylabel (“袋内观察的比例”

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

在一个简化的特征集上种树

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

b5v = TreeBagger (100 X (:, idxvar), Y,...“方法”“回归”“OOBPredictorImportance”“上”...“CategoricalPredictors”idxCategorical,“MinLeafSize”5);图绘制(oobError (b5v))包含(“已生长树木的数目”) ylabel (“袋外均方误差”

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

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

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

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

发现异常值

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

b5v = fillProximities (b5v);

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

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

图中包含一个axes对象。axis对象包含一个直方图类型的对象。

发现数据中的集群

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

figure [~,e] = mdsProx(b5v,“颜色”“K”);包含(“第一比例协调”) ylabel (“第二个比例协调”

图中包含一个axes对象。axes对象包含一个scatter类型的对象。

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

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

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

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

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

c =紧凑(b5v)
c = CompactTreeBagger集成100个袋装决策树:方法:回归NumPredictors: 4属性,方法

您可以保存结果CompactTreeBagger模型在.mat文件。

另请参阅

|||||

相关的话题

Baidu
map