Main Content

predictorImportance

分類木の予測子の重要度の推定

構文

imp = predictorImportance(tree)

説明

imp= predictorImportance(tree)は、すべての予測子上の分割によるリスク変動を合算し、枝ノード数でこの和を除算することにより、treeでの予測子の重要度の推定を計算します。

入力引数

tree

関数fitctreeまたはcompactメソッドで作成された分類木。

出力引数

imp

tree.Xでの予測子 (列) の数と同じ数の要素をもつ、行ベクトル。このエントリは、予測子の重要度の推定で、0は、可能な限り最小の重要度を示します。

すべて展開する

フィッシャーのアヤメのデータセットを読み込みます。

loadfisheriris

分類木を成長させます。

Mdl = fitctree(meas,species);

すべての予測子変数について予測子の重要度の推定を計算します。

imp = predictorImportance(Mdl)
imp =1×40 0 0.0907 0.0682

impの最初の2つの要素は0です。そのため,最初の2つの予測子では、アヤメ種を分類するMdlの計算は開始されません。

予測子の重要度の推定は、代理分岐を使用する場合、予測子の順序には依存しませんが、代理分岐を使用しない場合には、予測子の順序に依存します。

前の例のデータ列の順序を並べ替え、別の分類木を成長させ、予測子の重要度の推定を計算します。

measPerm = meas(:,[4 1 3 2]); MdlPerm = fitctree(measPerm,species); impPerm = predictorImportance(MdlPerm)
impPerm =1×40.1515 0 0.0074 0

この予測子の重要度の推定は、impの並べ替えにはなっていません。

フィッシャーのアヤメのデータセットを読み込みます。

loadfisheriris

分類木を成長させます。代理分岐の使用を指定します。

Mdl = fitctree(meas,species,'Surrogate','on');

すべての予測子変数について予測子の重要度の推定を計算します。

imp = predictorImportance(Mdl)
imp =1×40.0791 0.0374 0.1530 0.1529

すべての予測子に多少の重要度があります。最初の 2 つの予測子は最後の 2 つほど重要ではありません。

前の例のデータ列の順序を並べ替え、代理分岐の使用を指定して別の分類木を成長させ、予測子の重要度の推定を計算します。

measPerm = meas(:,[4 1 3 2]); MdlPerm = fitctree(measPerm,species,'Surrogate','on'); impPerm = predictorImportance(MdlPerm)
impPerm =1×40.1529 0.0791 0.1530 0.0374

この予測子の重要度の推定は、impの並べ替えになっています。

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

loadcensus1994X = adultdata(:,{'age','workClass','education_num','marital_status','race',...'sex','capital_gain','capital_loss','hours_per_week','salary'});

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

summary(X)
Variables: age: 32561x1 double Values: Min 17 Median 37 Max 90 workClass: 32561x1 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 NumMissing 1836 education_num: 32561x1 double Values: Min 1 Median 10 Max 16 marital_status: 32561x1 categorical Values: Divorced 4443 Married-AF-spouse 23 Married-civ-spouse 14976 Married-spouse-absent 418 Never-married 10683 Separated 1025 Widowed 993 race: 32561x1 categorical Values: Amer-Indian-Eskimo 311 Asian-Pac-Islander 1039 Black 3124 Other 271 White 27816 sex: 32561x1 categorical Values: Female 10771 Male 21790 capital_gain: 32561x1 double Values: Min 0 Median 0 Max 99999 capital_loss: 32561x1 double Values: Min 0 Median 0 Max 4356 hours_per_week: 32561x1 double Values: Min 1 Median 40 Max 99 salary: 32561x1 categorical Values: <=50K 24720 >50K 7841

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

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

Mdl = fitctree(X,'salary','PredictorSelection','curvature',...'Surrogate','on');

すべての予測子について分割によるリスク変動を合計し、この合計を枝ノード数で除算することにより、予測子の重要度の値を推定します。棒グラフを使用して推定を比較します。

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

Figure contains an axes object. The axes object with title Predictor Importance Estimates contains an object of type bar.

このケースでは、最も重要な予測子はcapital_gainであり、次に重要なのはeducation_numです。

詳細

すべて展開する

拡張機能