このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
predictorImportance
回帰木の予測子の重要度の推定
説明
例
予測子の重要度の推定
データ内のすべての予測子変数について予測子の重要度を推定します。
carsmall
データ セットを読み込みます。
load carsmall
Acceleration
、Cylinders
、Displacement
、Horsepower
、Model_Year
、および Weight
を予測子として使用して、MPG
の回帰木を成長させます。
X = [Acceleration Cylinders Displacement Horsepower Model_Year Weight]; tree = fitrtree(X,MPG);
すべての予測子変数について予測子の重要度を推定します。
imp = predictorImportance(tree)
imp = 1×6
0.0647 0.1068 0.1155 0.1411 0.3348 2.6565
最後の予測子 Weight
は、燃費に対する影響が最も大きくなっています。予測に対する影響が最も小さい予測子は、最初の変数 Acceleration
です。
予測子の重要度と代理分岐
代理分岐が含まれている回帰木で、データに含まれているすべての変数について予測子の重要度を推定します。
carsmall
データ セットを読み込みます。
load carsmall
Acceleration
、Cylinders
、Displacement
、Horsepower
、Model_Year
、および Weight
を予測子として使用して、MPG
の回帰木を成長させます。代理分岐を識別するように指定します。
X = [Acceleration Cylinders Displacement Horsepower Model_Year Weight];
tree = fitrtree(X,MPG,Surrogate="on");
すべての予測子変数について予測子の重要度を推定します。
imp = predictorImportance(tree)
imp = 1×6
1.0449 2.4560 2.5570 2.5788 2.0832 2.8938
imp
を予測子の重要度の推定の結果と比較すると、燃費に対する影響が最も大きいのは依然として Weight
ですが、Cylinders
は 4 番目に重要な予測子になっています。
不偏予測量の重要度の推定
carsmall
データ セットを読み込みます。与えられた加速、気筒数、エンジン排気量、馬力、製造業者、モデル年および重量に対して自動車の燃費の平均を予測するモデルを考えます。Cylinders
、Mfg
および Model_Year
はカテゴリカル変数であるとします。
load carsmall Cylinders = categorical(Cylinders); Mfg = categorical(cellstr(Mfg)); Model_Year = categorical(Model_Year); X = table(Acceleration,Cylinders,Displacement,Horsepower,Mfg, ... Model_Year,Weight,MPG);
カテゴリカル変数で表現されるカテゴリの個数を表示します。
numCylinders = numel(categories(Cylinders))
numCylinders = 3
numMfg = numel(categories(Mfg))
numMfg = 28
numModelYear = numel(categories(Model_Year))
numModelYear = 3
Cylinders
と Model_Year
には 3 つしかカテゴリがないので、予測子分割アルゴリズムの標準 CART ではこの 2 つの変数よりも連続予測子が分割されます。
データ セット全体を使用して回帰木に学習をさせます。偏りの無い木を成長させるため、予測子の分割に曲率検定を使用するよう指定します。データには欠損値が含まれているので、代理分岐を使用するよう指定します。
Mdl = fitrtree(X,"MPG",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";
このケースでは、最も重要な予測子は Displacement
であり、次に重要なのは Horsepower
です。
入力引数
tree
— 回帰木モデル
RegressionTree
モデル オブジェクト | CompactRegressionTree
モデル オブジェクト
回帰木モデル。fitrtree
で学習させた RegressionTree
モデル オブジェクト、または compact
で作成した CompactRegressionTree
モデル オブジェクトとして指定します。
詳細
予測子の重要度
predictorImportance
は、すべての予測子について分割によるノード リスクの変動を合計し、この合計を枝ノードの総数で除算することにより、木における予測子の重要度の尺度を計算します。ノード リスクの変動は、親ノードのリスクと 2 つの子のリスク合計との差です。たとえば、木で親ノード (例: ノード 1) が 2 つの子ノード (例: ノード 2 とノード 3) に分割される場合、predictorImportance
は、次によって分割予測子の重要度を高めます。
(R1 – R2 – R3)/Nbranch,
ここで、Ri はノード i のノード リスク、Nbranch は枝ノードの総数です。"ノード リスク" は、ノード確率によって重み付けされたノード誤差として定義されます。
Ri = PiEi,
ここで、Pi はノード i のノード確率、Ei はノード i の平均二乗誤差です。
予測子の重要度の推定は、学習に代理分岐を使用するかどうかによって変化します。
代理分岐を使用する場合、
predictorImportance
は、各枝ノードにおいて代理分岐を含むすべての分割上でノード リスクの変動を合計します。代理分岐を使用しない場合、この和は各枝ノードで検出される最適分割上で計算されます。予測子の重要度の推定は、代理分岐を使用する場合、予測子の順序には依存しませんが、代理分岐を使用しない場合には、予測子の順序に依存します。
代理分岐を使用する場合、
predictorImportance
は、枝刈り (または葉のマージ) によってツリーが縮小する前に、推定を計算します。代理分岐を使用しない場合、predictorImportance
は、枝刈りによってツリーが縮小した後に、推定を計算します。そのため、枝刈りは、代理分岐を含まずに成長したツリーでの予測子の重要度には影響を与え、代理分岐を含めて成長したツリーでの予測子の重要度には影響を与えません。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2011a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)