主要内容

代理拆分

当一个观察的最佳分割预测器的值丢失时,如果您指定使用代理分割,软件将使用最佳代理预测器将观察发送到左或右子节点。当您有缺失的数据时,树和带有代理分割的树集合可以提供更好的预测。这个例子展示了如何通过使用带有代理分割的决策树来提高缺失值数据预测的准确性。

加载样本数据

加载电离层数据集。

负载电离层

将数据集划分为训练集和测试集。拿出30%的数据进行测试。

rng (“默认”)%的再现性cv=cv(Y,“坚持”,0.3);

识别培训和测试数据。

Xtrain=X(训练(cv),:);Ytrain=Y(训练(cv));Xtest=X(测试(cv),:);Ytest=Y(测试(cv));

假设测试集中有一半的值丢失了。将测试集中一半的值设置为.

Xtest(rand(size(Xtest))>0.5)=NaN;

训练随机森林

训练一个由150棵分类树组成的随机森林,不使用代理分割。

templ=templateTree(“可复制”,对);%随机预测选择的再现性Mdl=fitcensemble(Xtrain,Ytrain,“方法”,“包”,“NumLearningCycles”, 150,“学习者”,temp);

创建使用代理项拆分的决策树模板。使用代理项拆分的树在某些预测值中包含缺失数据时不会放弃整个观察值。

templS=模板树(“代理”,“开”,“可复制”,对);

使用模板训练随机林templS.

Mdls=fitcensemble(Xtrain,Ytrain,“方法”,“包”,“NumLearningCycles”, 150,“学习者”,模板);

测试的准确性

测试使用和不使用替代项拆分时预测的准确性。

使用这两种方法预测响应并创建混淆矩阵图。

Ytest\u pred=预测(Mdl,Xtest);图cm=混淆图(Ytest,Ytest\u pred);cm.标题=“模型没有代理人”;

Figure包含一个confusimatrixchart类型的对象。混淆矩阵图的标题为“没有代理的模型”。

Ytest\u preds=预测(Mdls,Xtest);图cms=混淆图(Ytest,Ytest\u preds);cms.标题=“具有代理的模型”;

Figure包含ConfusionMatrixChart类型的对象。ConfusionMatrixChart类型的图表具有带有代理项的标题模型。

混淆矩阵上的所有非对角元素都表示错误分类的数据。一个好的分类器会产生一个看起来主要是对角的混淆矩阵。在这种情况下,使用代理项拆分训练的模型的分类误差较低。

估计累积分类错误。请指定“模式”,“累积”当使用丧失功能丧失函数返回元素所在的向量J使用第一个参数指示错误J学习者。

图绘制(损失(Mdl Xtest,欧美,“模式”,“累积的”)举行情节(损失(Mdls Xtest,欧美,“模式”,“累积的”),“r——”)传奇(“没有代理拆分的树”,“有代理分叉的树”)包含(“树的数量”) ylabel (“测试分类错误”)

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示没有代理分割的树,有代理分割的树。

误差值随着树数的增加而减小,这表明性能良好。对于使用代理项拆分训练的模型,分类误差较低。

使用检查结果差异的统计显著性比较控股. 此功能使用McNemar测试。

[~,p]=compareHoldout(Mdls,Mdl,Xtest,Xtest,Ytest,“替代”,“更大”)
p=0.0384

P-值表示具有代理项拆分的集合在统计显著性方面更好。

估计预测器重要性

根据树是否使用代理分割,预测器重要性估计可能有所不同。通过排列出包外的观察来估计预测器的重要性。然后,找出五个最重要的预测因素。

imp=oobpermutedpredictor重要性(Mdl);[~,ind]=maxk(imp,5)
印第安纳州=1×55 3 27 8 14
小鬼= oobPermutedPredictorImportance (Mdls等);[~,第1]= maxk(小鬼,5)
inds=1×53 5 8 27 7

在估计预测因子的重要性之后,您可以排除不重要的预测因子并再次训练模型。排除不重要的预测因素可以节省预测的时间和记忆,并使预测更容易理解。

如果训练数据包含多个预测值,并且要分析预测值的重要性,请指定“NumVariablesToSample”模板树充当“全部”为合奏的树学习者。否则,软件可能不会选择一些预测因子,低估了它们的重要性。有关示例,请参见为随机森林选择预测因子.

另见

||

相关的话题