代理分岐
ある観測値について最適な分割予測子の値が欠落している場合,代理分岐を使用するよう指定すると,最適な代理予測子を使用して左または右の子ノードに観測値が送られます。欠損デ,タがある場合,木および木のアンサンブルに代理分岐が含まれていると,予測性能が向上します。この例では,代理分岐がある決定木を使用して,欠損値が含まれているデータの予測精度を向上させる方法を示します。
標本デ,タの読み込み
电离层
デ,タセットを読み込みます。
负载电离层
デ,タセットを学習セットと検定セットに分割します。デタの30%を検定用にホルドアウトします。
rng (“默认”)%用于再现性cv = cvpartition(Y,“坚持”, 0.3);
学習デ,タと検定デ,タを指定します。
Xtrain = X(training(cv),:);Ytrain = Y(training(cv));Xtest = X(test(cv),:);Ytest = Y(test(cv));
検定セットの値の半分が欠損しているものとします。検定セットの値の半分を南
に設定します。
Xtest(rand(size(Xtest))>0.5) = NaN;
ランダムフォレストの学習
代理分岐を使用せずに,150本の分類木のランダムフォレストに学習をさせます。
teml = templateTree(“复制”,真正的);%用于随机预测器选择的再现性Mdl = fitcensemble(x火车,y火车,“方法”,“包”,“NumLearningCycles”, 150,“学习者”, templ);
代理分岐を使用する決定木テンプレ,トを作成します。代理分岐を使用する木では、欠損データが含まれている予測子がある場合でも、観測値全体が破棄されることはありません。
templS = templateTree(“代孕”,“上”,“复制”,真正的);
テンプレ,トtemplS
を使用してランダムフォレストに学習をさせます。
Mdls = fitcensemble(x火车,y火车,“方法”,“包”,“NumLearningCycles”, 150,“学习者”, templS);
精度の検証
代理分岐を使用した予測と代理分岐を使用しない予測の精度を検証します。
両方のアプロ,チを使用して,応答を予測し混同行列チャ,トを作成します。
Ytest_pred = predict(Mdl,Xtest);figure cm = confusichart (Ytest,Ytest_pred);厘米。Title =“没有替身的模型”;
Ytest_preds = predict(Mdls,Xtest);figure cms = confusichart (Ytest,Ytest_preds);cms。Title =“有替身的模型”;
混同行列の非対角要素は,誤分類されたデ,タを表します。適切な分類器では,ほとんど対角行列のように見える混同行列が生成されます。このケ,スでは,代理分岐を使用して学習をさせたモデルの方が,分類誤差が小さくなっています。
累積分類誤差を推定します。関数损失
を使用して分類誤差を推定するときに“模式”、“累积”
を指定します。関数损失
は,最初のJ
個の学習器を使用した場合の誤差を要素J
が示すベクトルを返します。
图绘制(损失(Mdl Xtest,欧美,“模式”,“累积”)举行在情节(损失(Mdls Xtest,欧美,“模式”,“累积”),“r——”)传说(“没有替代分叉的树”,“有替代分叉的树”)包含(“树的数量”) ylabel (“测试分类错误”)
木の本数が増えると誤差の値が小さくなります。これは,優れた性能を示します。代理分岐を使用して学習をさせたモデルの方が、分類誤差が小さくなっています。
compareHoldout
を使用して,結果の違いの統計的有意性をチェックします。この関数はマクネマ,検定を使用します。
[~,p] = compareHoldout(Mdls,Mdl,Xtest,Xtest,Ytest,“替代”,“更大的”)
P = 0.0384
p値が小さいので,代理分岐を使用したアンサンブルの方が統計的有意性という点で優れていることがわかります。
予測子の重要度の推定
予測子の重要度の推定は,木で代理分岐を使用するかどうかによって変化する可能性があります。out- out- bag観測値を並べ替えることにより,予測子の重要度の尺度を推定します。次に,上位5の重要な予測子を求めます。
imp = oobPermutedPredictorImportance(Mdl);[~,ind] = maxk(imp,5)
印第安纳州=1×55 3 27 8 14
imps = oobPermutedPredictorImportance(Mdls);[~,inds] = maxk(imps,5)
第1 =1×53 5 8 27 7
予測子の重要度を推定した後で,重要ではない予測子を除外して,モデルに再学習をさせることができます。重要でない予測子を除外すると,予測のための時間とメモリが節約され,予測の理解が容易になります。
多数の予測子が学習データに含まれている場合に予測子の重要度を分析するには,アンサンブルの木学習器について関数templateTree
の“NumVariablesToSample”
として“所有”
を指定します。このようにしないと,重要度が過小評価されて一部の予測子が選択されない可能性があります。たとえば,ランダムフォレストの予測子の選択を参照してください。
参考
compareHoldout
|fitcensemble
|fitrensemble