主要内容

选择随机森林预测因子

这个例子展示了如何选择合适的分割预测选择技术,您的数据集,当越来越多的随机森林回归树。这个示例还展示了如何决定哪些是最重要的预测因子包括训练数据。

加载和数据预处理

加载carbig数据集。考虑一个模型,预测汽车的燃油经济性鉴于其气缸数,发动机排量,马力,体重,加速度,模型,和原产地。考虑气缸,Model_Year,起源作为分类变量。

负载carbig气缸=分类(缸);Model_Year =分类(Model_Year);起源=分类(cellstr(起源));X =表(汽缸、排量、马力、重量、加速度,Model_Year,起源);

确定水平预测

标准CART算法往往将预测与许多惟一值(水平),例如,连续变量,在那些拥有更少的水平,例如,分类变量。如果您的数据是异构的,或者你的预测变量的水平相差很大,那么考虑使用曲率或交互测试split-predictor选择而不是标准的车。

对于每一个预测,确定水平的数据的数量。一种方法是定义一个匿名函数:

  1. 将所有变量转换为分类数据类型使用分类

  2. 确定所有独特的类别而忽略缺失值使用类别

  3. 计算分类使用元素个数

然后,应用函数每个变量使用varfun

countLevels = @ (x)元素个数(类别(类别(x)));numLevels = varfun (countLevels X,“OutputFormat”,“统一”);

比较的数量水平的预测变量。

图酒吧(numLevels)标题(水平预测的数量)包含(预测变量的)ylabel (的层数甘氨胆酸)h =;h。XTickLabel = X.Properties.VariableNames (1: end-1);h。XTickLabelRotation = 45;h。TickLabelInterpreter =“没有”;

图包含一个坐标轴对象。坐标轴对象与标题的数量水平预测包含一个对象类型的酒吧。

连续变量多水平比分类变量。因为预测之间的层数不同,使用标准的车选择分割预测在树的每个节点随机森林里可以产生不准确的预测估计的重要性。在这种情况下,使用曲率测试或交互测试。通过使用指定的算法“PredictorSelection”名称-值对的论点。更多细节,请参阅选择分割预测选择技术

火车袋装回归树的合奏

火车的袋装合奏200棵回归估计预测重要性值。定义一个树学习者使用这些名称-值对参数:

  • “NumVariablesToSample”、“所有”- - -使用所有树为了确保每个预测变量在每个节点使用所有预测变量。

  • “PredictorSelection”、“interaction-curvature”——指定使用的交互测试选择分割预测。

  • “代孕”,“上”——指定使用代理将增加精度,因为数据集包含缺失值。

t = templateTree (“NumVariablesToSample”,“所有”,“PredictorSelection”,“interaction-curvature”,“代孕”,“上”);rng (1);%的再现性Mdl = fitrensemble (X,英里/加仑,“方法”,“包”,“NumLearningCycles”,200,“学习者”t);

Mdl是一个RegressionBaggedEnsemble模型。

估计模型 R 2 使用out-of-bag预测。

yHat = oobPredict (Mdl);(R2 = corr Mdl.Y yHat) ^ 2
R2 = 0.8744

Mdl意思可以解释87%的变异。

预测重要性估计

估计预测价值重要性的排列out-of-bag观察在树林里。

impOOB = oobPermutedPredictorImportance (Mdl);

impOOB是一个1-by-7向量预测重要性估计相应的预测Mdl.PredictorNames。估计不偏向预测包含很多层面。

比较预测重要性估计。

图酒吧(impOOB)标题(“估计无偏预测重要性”)包含(预测变量的)ylabel (“重要性”甘氨胆酸)h =;h。XTickLabel = Mdl.PredictorNames;h。XTickLabelRotation = 45;h。TickLabelInterpreter =“没有”;

图包含一个坐标轴对象。坐标轴对象标题无偏预测重要性估计包含一个对象类型的酒吧。

更加重要的估计表明更重要的预测因子。条形图显示Model_Year是最重要的因素,其次是吗气缸重量。的Model_Year气缸变量只有13个和5个不同的水平,分别,而重量变量有超过300年的水平。

比较预测估计重要性排列out-of-bag观察和总结获得的那些估计在均方误差对每个预测由于分裂。同时,通过代理将获得预测协会措施估计。

[impGain, predAssociation] = predictorImportance (Mdl);图的阴谋(1:元素个数(Mdl.PredictorNames), [impOOB ' impGain '])标题(预测评估重要性比较的)包含(预测变量的)ylabel (“重要性”甘氨胆酸)h =;h。XTickLabel = Mdl.PredictorNames;h。XTickLabelRotation = 45;h。TickLabelInterpreter =“没有”;传奇(“OOB排列的,“MSE改进”网格)

图包含一个坐标轴对象。坐标轴对象与标题预测重要性估计比较包含2线类型的对象。这些对象代表OOB排列,MSE的改善。

根据的值impGain,变量位移,马力,重量似乎同样重要。

predAssociation是一个7-by-7矩阵预测协会的措施。行和列对应的预测因子Mdl.PredictorNames。的预测的协会是一个值,表明决策规则之间的相似性分割观测。最好的代理决定分裂收益率的最大协会预测指标。你可以推断出的强度对预测使用的元素之间的关系predAssociation。大值表明更高度相关对预测。

图显示亮度图像(predAssociation)标题(“预测协会估计”甘氨胆酸)colorbar h =;h。XTickLabel = Mdl.PredictorNames;h。XTickLabelRotation = 45;h。TickLabelInterpreter =“没有”;h。YTickLabel = Mdl.PredictorNames;

图包含一个坐标轴对象。坐标轴对象与标题预测协会估计包含一个类型的对象的形象。

predAssociation (1、2)
ans = 0.6871

最大的协会之间气缸位移,但价值不高足以表明一个强大的两个预测因子之间的关系。

增加使用减少预测集随机森林

因为预测时间增加的数量在随机森林预测,一个良好的实践是创建一个使用尽可能少的预测模型。

长200年随机森林回归树上只使用最好的两个预测因子。默认的“NumVariablesToSample”的价值templateTree是回归的预测数量的三分之一,所以呢fitrensemble使用随机森林算法。

t = templateTree (“PredictorSelection”,“interaction-curvature”,“代孕”,“上”,“复制”,真正的);%的再现性随机预测的选择MdlReduced = fitrensemble (X (: {“Model_Year”“重量”}),英里/加仑,“方法”,“包”,“NumLearningCycles”,200,“学习者”t);

计算 R 2 的简化模型。

yHatReduced = oobPredict (MdlReduced);r2Reduced = corr (Mdl.Y yHatReduced) ^ 2
r2Reduced = 0.8653

R 2 为减少模型是接近 R 2 完整的模型。这一结果表明,预测模型是充分的。

另请参阅

|||||

相关的话题