このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
predictorImportance
分類木の予測子の重要度の推定
説明
例
フィッシャーのアヤメのデータ セットを読み込みます。
load fisheriris
分類木を成長させます。
Mdl = fitctree(meas,species);
すべての予測子変数について予測子の重要度の推定を計算します。
imp = predictorImportance(Mdl)
imp = 1×4
0 0 0.0907 0.0682
imp
の最初の 2 つの要素はゼロです。そのため、最初の 2 つの予測子は、アヤメを分類するための Mdl
の計算には入りません。
予測子の重要度の推定は、代理分岐を使用する場合、予測子の順序には依存しませんが、代理分岐を使用しない場合には、予測子の順序に依存します。
前の例のデータ列の順序を並べ替え、別の分類木を成長させてから、予測子の重要度の推定を計算します。
measPerm = meas(:,[4 1 3 2]); MdlPerm = fitctree(measPerm,species); impPerm = predictorImportance(MdlPerm)
impPerm = 1×4
0.1515 0 0.0074 0
予測子の重要度の推定は imp
の並べ替えにはなりません。
フィッシャーのアヤメのデータ セットを読み込みます。
load fisheriris
分類木を成長させます。代理分岐を使用するよう指定します。
Mdl = fitctree(meas,species,'Surrogate','on');
すべての予測子変数について予測子の重要度の推定を計算します。
imp = predictorImportance(Mdl)
imp = 1×4
0.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×4
0.1529 0.0791 0.1530 0.0374
予測子の重要度の推定は imp
の並べ替えになります。
census1994
データ セットを読み込みます。年齢、労働階級、教育レベル、婚姻区分、人種、性別、資本利得および損失、および 1 週間の勤務時間が与えられた個人の給与カテゴリを予測するモデルを考えます。
load census1994 X = adultdata(:,{'age','workClass','education_num','marital_status','race',... 'sex','capital_gain','capital_loss','hours_per_week','salary'});
summary
を使用して、カテゴリカル変数で表現されるカテゴリの個数を表示します。
summary(X)
X: 32561×10 table Variables: age: double workClass: categorical (8 categories) education_num: double marital_status: categorical (7 categories) race: categorical (5 categories) sex: categorical (2 categories) capital_gain: double capital_loss: double hours_per_week: double salary: categorical (2 categories) Statistics for applicable variables: NumMissing Min Median Max Mean Std age 0 17 37 90 38.5816 13.6404 workClass 1836 education_num 0 1 10 16 10.0807 2.5727 marital_status 0 race 0 sex 0 capital_gain 0 0 0 99999 1.0776e+03 7.3853e+03 capital_loss 0 0 0 4356 87.3038 402.9602 hours_per_week 0 1 40 99 40.4375 12.3474 salary 0
カテゴリカル変数で表現されるカテゴリの数は連続変数のレベル数と比較するとわずかなので、予測子分割アルゴリズムの標準 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';
このケースでは、最も重要な予測子は capital_gain
であり、次に重要なのは education_num
です。
入力引数
学習済みの分類木。fitctree
で学習させた ClassificationTree
モデル オブジェクト、または compact
で作成した CompactClassificationTree
モデル オブジェクトとして指定します。
詳細
predictorImportance
は、すべての予測子について分割によるノード リスクの変動を合計し、この合計を枝ノードの総数で除算することにより、木における予測子の重要度の尺度を計算します。ノード リスクの変動は、親ノードのリスクと 2 つの子のリスク合計との差です。たとえば、木で親ノード (例: ノード 1) が 2 つの子ノード (例: ノード 2 とノード 3) に分割される場合、predictorImportance
は、次によって分割予測子の重要度を高めます。
(R1 – R2 – R3)/Nbranch,
ここで、Ri はノード i のノード リスク、Nbranch は枝ノードの総数です。"ノード リスク" は、ノード確率によって重み付けされたノード誤差またはノード不純度として定義されます。
Ri = PiEi,
ここで、Pi はノード i のノード確率、Ei はノード i のノード誤差 (twoing の基準を最小にして成長させた木の場合) またはノード不純度 (ジニ指数や逸脱度などの不純度の基準を最小にして成長させた木の場合) のいずれかです。
予測子の重要度の推定は、学習に代理分岐を使用するかどうかによって変化します。
代理分岐を使用する場合、
predictorImportance
は、各枝ノードにおいて代理分岐を含むすべての分割上でノード リスクの変動を合計します。代理分岐を使用しない場合、この和は各枝ノードで検出される最適分割上で計算されます。予測子の重要度の推定は、代理分岐を使用する場合、予測子の順序には依存しませんが、代理分岐を使用しない場合には、予測子の順序に依存します。
代理分岐を使用する場合、
predictorImportance
は、枝刈り (または葉のマージ) によってツリーが縮小する前に、推定を計算します。代理分岐を使用しない場合、predictorImportance
は、枝刈りによってツリーが縮小した後に、推定を計算します。そのため、枝刈りは、代理分岐を含まずに成長したツリーでの予測子の重要度には影響を与え、代理分岐を含めて成長したツリーでの予測子の重要度には影響を与えません。
決定木では、"不純度" または "ノード誤差" に基づいてノードを分割します。
不純度とは、SplitCriterion
名前と値の引数によって、次のいずれかの意味を表します。
ジニ多様性指数 (
gdi
) — ノードのジニ指数は、次の式で表されます。ここで、合計はノードのクラス i 全体が対象であり、p(i) は、ノードに到達したクラス i をもつ観測クラスの比率です。クラスを 1 つだけもつノード ("純粋" ノード) のジニ指数は
0
です。それ以外のノードでは、ジニ指数は正の値です。したがって、ジニ指数はノードの不純度の基準です。逸脱度 (
"deviance"
) — ノードの逸脱度は、ジニ指数と同様に定義された p(i) を用いて次の式で表されます。純粋ノードの逸脱度は
0
です。それ以外のノードでは、逸脱度は正の値です。Twoing 規則 (
"twoing"
) — Twoing はノードの純粋度の基準ではありませんが、ノードの分割を判断するための別の基準の 1 つです。L(i) は、分割後の左側の子ノードのクラス i のメンバーの比率を示し、R(i) は分割後の右側の子ノードのクラス i のメンバーの比率を示すとします。最大化するための分割基準を選択します。ここで、P(L) および P(R) は、それぞれ左側と右側に分割された観測値の比率を表します。式が大きい場合は、分割によって各子ノードの純粋度は高くなります。同様に、式が小さい場合は、分割によって各子ノードが互いに類似するようになります。このため、親ノードとも類似するようになります。分割によるノードの純粋度の向上はありませんでした。
ノード誤差 — ノード誤差はノードで誤分類されたクラスの比率です。j がノードで最大の学習標本数をもつクラスである場合は、ノード誤差は次のように表されます。
1 – p(j).
拡張機能
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)