ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

oobPermutedPredictorImportance

分類木のランダム フォレストに対する out-of-bag 予測子の並べ替えによる予測子の重要度の推定

構文

Imp = oobPermutedPredictorImportance(Mdl)
Imp = oobPermutedPredictorImportance(Mdl,Name,Value)

説明

Imp = oobPermutedPredictorImportance(Mdl) は、分類木のランダム フォレスト Mdl を使用して、並べ替えによる out-of-bag 予測子の重要度の推定を返します。MdlClassificationBaggedEnsemble モデル オブジェクトでなければなりません。

Imp = oobPermutedPredictorImportance(Mdl,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。たとえば、並列計算を使用して計算を高速化したり、予測子の重要度の推定に使用する木を指定できます。

入力引数

すべて展開する

分類木のランダム フォレスト。fitcensemble によって作成された ClassificationBaggedEnsemble モデル オブジェクトを指定します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

予測子の重要度の推定に使用する学習器のインデックス。'Learners' と正の整数の数値ベクトルから構成されるコンマ区切りのペアとして指定します。値は Mdl.NumTrained 以下でなければなりません。oobPermutedPredictorImportance は、予測子の重要度を推定するときに、Mdl.Trained(learners) の学習器のみを含めます。learners'Learners' の値です。

例: 'Learners',[1:2:Mdl.NumTrained]

並列計算オプション。'Options'statset によって返される構造体配列から構成されるコンマ区切りのペアとして指定します。'Options' を指定するには、Parallel Computing Toolbox™ のライセンスが必要です。

oobPermutedPredictorImportance'UseParallel' フィールドのみを使用します。statset('UseParallel',true) はワーカーのプールを呼び出します。

例: 'Options',statset('UseParallel',true)

出力引数

すべて展開する

並べ替えによる out-of-bag 予測子の重要度の推定。1 行 p 列の数値ベクトルとして返されます。p は学習データ内の予測子変数の個数 (size(Mdl.X,2)) です。Imp(j) は予測子 Mdl.PredictorNames(j) の重要度です。

すべて展開する

census1994 データセットを読み込みます。年齢、労働階級、教育レベル、婚姻区分、人種、性別、資本利得および損失、および 1 週間の勤務時間が与えられた個人の給与カテゴリを予測するモデルを考えます。

load census1994
X = adultdata(:,{'age','workClass','education_num','marital_status','race',...
    'sex','capital_gain','capital_loss','hours_per_week','salary'});
rng('default'); % For reproducibility

データセット全体を使用して、50 本の分類木のランダム フォレストに学習をさせます。

Mdl = fitcensemble(X,'salary','Method','bag','NumLearningCycles',50);

MdlClassificationBaggedEnsemble モデルです。

out-of-bag 観測値を並べ替えることにより、予測子の重要度の尺度を推定します。棒グラフを使用して推定を比較します。

imp = oobPermutedPredictorImportance(Mdl);

figure;
bar(imp);
title('Out-of-Bag Permuted Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

imp は、予測子の重要度の推定が含まれている 1 行 9 列のベクトルです。大きい値は、予測子が予測に与える影響が大きいことを示します。このケースでは、最も重要な予測子は marital_status であり、次に重要なのは capital_gain です。

この例では、Parallel Computing Toolbox™ のライセンスが必要です。

census1994 データセットを読み込みます。年齢、労働階級、教育レベル、婚姻区分、人種、性別、資本利得および損失、および 1 週間の勤務時間が与えられた個人の給与カテゴリを予測するモデルを考えます。

load census1994
X = adultdata(:,{'age','workClass','education_num','marital_status','race',...
    'sex','capital_gain','capital_loss','hours_per_week','salary'});
rng('default'); % For reproducibility

summary を使用して、カテゴリカル変数で表現されるカテゴリの個数を表示します。

summary(X)
Variables:

    age: 32561×1 double
        Values:

            min       17   
            median    37   
            max       90   

    workClass: 32561×1 categorical
        Values:

            Federal-gov           960      
            Local-gov            2093      
            Never-worked            7      
            Private             22696      
            Self-emp-inc         1116      
            Self-emp-not-inc     2541      
            State-gov            1298      
            Without-pay            14      
            <undefined>          1836      

    education_num: 32561×1 double
        Values:

            min        1             
            median    10             
            max       16             

    marital_status: 32561×1 categorical
        Values:

            Divorced                  4443           
            Married-AF-spouse           23           
            Married-civ-spouse       14976           
            Married-spouse-absent      418           
            Never-married            10683           
            Separated                 1025           
            Widowed                    993           

    race: 32561×1 categorical
        Values:

            Amer-Indian-Eskimo      311 
            Asian-Pac-Islander     1039 
            Black                  3124 
            Other                   271 
            White                 27816 

    sex: 32561×1 categorical
        Values:

            Female    10771
            Male      21790

    capital_gain: 32561×1 double
        Values:

            min           0         
            median        0         
            max       99999         

    capital_loss: 32561×1 double
        Values:

            min          0          
            median       0          
            max       4356          

    hours_per_week: 32561×1 double
        Values:

            min        1              
            median    40              
            max       99              

    salary: 32561×1 categorical
        Values:

            <=50K    24720   
            >50K      7841   

カテゴリカル変数で表現されるカテゴリの数は連続変数のレベル数と比較するとわずかなので、予測子分割アルゴリズムの標準 CART ではカテゴリカル変数よりも連続予測子が分割されます。

データセット全体を使用して、50 本の分類木のランダム フォレストに学習をさせます。偏りの無い木を成長させるため、予測子の分割に曲率検定を使用するよう指定します。データには欠損値が含まれているので、代理分岐を使用するよう指定します。

t = templateTree('PredictorSelection','curvature','Surrogate','on');
Mdl = fitcensemble(X,'salary','Method','bag','NumLearningCycles',50,...
    'Learners',t);

out-of-bag 観測値を並べ替えることにより、予測子の重要度の尺度を推定します。並列計算を実行します。棒グラフを使用して推定を比較します。

options = statset('UseParallel',true);
imp = oobPermutedPredictorImportance(Mdl,'Options',options);

figure;
bar(imp);
title('Out-of-Bag Permuted Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
h = gca;
h.XTickLabel = Mdl.PredictorNames;
h.XTickLabelRotation = 45;
h.TickLabelInterpreter = 'none';

このケースでは、最も重要な予測子は capital_gain であり、次に重要なのは martial_status です。これらの結果を予測子の重要度の推定の結果と比較します。

詳細

すべて展開する

ヒント

fitcensemble の使用によりランダム フォレストを成長させる場合、

  • 標準 CART アルゴリズムには、相違する値が少ない分割予測子 (カテゴリカル変数など) よりも、相違する値が多い分割予測子 (連続変数など) を選択する傾向があります[3]。予測子データセットが異種混合である場合や、一部の予測子が相違する値を他の変数よりも相対的に少なく含んでいる場合は、曲率検定または交互作用検定の指定を検討してください。

  • 標準 CART を使用して成長させた木は、予測子変数の交互作用の影響を受けません。また、多くの無関係な予測子が存在する状況では、このような木によって重要な変数が特定される可能性は、交互作用検定を適用した場合より低くなります。このため、予測子の交互作用を考慮し、重要度変数の特定を多くの無関係な変数が存在する状況で行うには、交互作用検定を指定します[2]

詳細は、templateTreeを参照してください。

参照

[1] Breiman, L., J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Boca Raton, FL: CRC Press, 1984.

[2] Loh, W.Y. “Regression Trees with Unbiased Variable Selection and Interaction Detection.” Statistica Sinica, Vol. 12, 2002, pp. 361–386.

[3] Loh, W.Y. and Y.S. Shih. “Split Selection Methods for Classification Trees.” Statistica Sinica, Vol. 7, 1997, pp. 815–840.

拡張機能

R2016b で導入