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

plotPartialDependence

部分従属プロット (PDP) および個別条件付き期待値 (ICE) プロットの作成

説明

plotPartialDependence(Mdl,Vars) は、Vars に列挙されている特徴量と、Mdl 内の予測子データおよび学習済み回帰モデルによって予測した応答から、PDP を作成します。

plotPartialDependence(Mdl,Vars,X) は、X 内の新しい予測子データを使用して PDP を作成します。

plotPartialDependence(___,Name,Value) は、前の構文の入力引数のいずれかに加えて、1 つ以上の名前と値のペアの引数によって指定される追加オプションを使用します。たとえば、'Conditional','absolute' を指定した場合、関数 plotPartialDependence は PDP、選択した特徴量および予測応答の散布図、および各観測値の ICE プロットが含まれている Figure を作成します。

ax = plotPartialDependence(___) は、前の構文で入力引数のいずれかの組み合わせを使用して、プロットの座標軸を返します。

すべて折りたたむ

carsmall データセットを使用して回帰木に学習をさせてから、特徴量と学習済み回帰木内の予測応答との間の関係を示す PDP を作成します。

carsmall データセットを読み込みます。

load carsmall

予測子変数 (X) として WeightCylinders および Horsepower を、応答変数 (Y) として MPG を指定します。

X = [Weight,Cylinders,Horsepower];
Y = MPG;

XY を使用して回帰木を作成します。

Mdl = fitrtree(X,Y);

学習済み回帰木をグラフィックで表示します。

view(Mdl,'Mode','graph')

1 番目の予測子変数 Weight の PDP を作成します。

plotPartialDependence(Mdl,1)

青い線は、学習済み回帰木 Mdl における Weight (ラベルは x1) と MPG (ラベルは Y) の間の平均化された部分関係性を表します。

回帰木ビューアーには、最初の決定が x1 が 3085.5 より小さいかどうかであることが示されています。PDP でも、x1 = 3085.5 付近に大きい変化が示されています。木ビューアーは、予測子変数に基づいて各ノードにおける各決定を可視化します。x1 の値に基づいて分割されたノードをいくつか見つけることはできますが、x1 に対する Y の従属を把握することは簡単ではありません。しかし、PDP は平均化された予測応答を x1 に対してプロットするので、x1 に対する Y の部分従属を明確に把握できます。

ラベル x1 および Y は、予測子名および応答名の既定値です。これらの名前は、fitrtree を使用して Mdl に学習をさせるときに、名前と値のペアの引数 'PredictorNames' および 'ResponseName' を指定して変更できます。関数 xlabel および ylabel を使用して座標軸のラベルを変更することもできます。

予測子変数間の交互作用が応答変数に含まれている標本データを生成し、このデータを使用してガウス過程回帰モデルに学習をさせます。その後、各観測値について特徴量と予測応答の間の関係を示す ICE プロットを作成します。

標本予測子データ x1 および x2 を生成します。

rng('default') % For reproducibility
n = 200;
x1 = rand(n,1)*2-1;
x2 = rand(n,1)*2-1;

x1x2 の間に交互作用が含まれている応答値を生成します。

Y = x1-2*x1.*(x2>0)+0.1*rand(n,1);

[x1 x2]Y を使用してガウス過程回帰モデルを作成します。

Mdl = fitrgp([x1 x2],Y);

'Conditional' として 'centered' を指定して、1 番目の予測子 x1 についての PDP (赤い線)、x1 と予測応答の散布図 (黒い円マーカー)、および一連の ICE プロット (灰色の線) が含まれている Figure を作成します。

plotPartialDependence(Mdl,1,'Conditional','centered')

'Conditional''centered' である場合、plotPartialDependence はすべてのプロットがゼロから始まるようにプロットのオフセットを設定します。これは、選択した特徴量の累積的な効果を確認するために役立ちます。

PDP は平均化された関係を明らかにするので、特徴量間の交互作用が応答に含まれている場合は特に、隠された依存性は明らかになりません。しかし ICE プロットには、x1 に対する 2 つの異なる応答の依存性が明確に示されます。

carsmall データセットを使用してアンサンブル回帰に学習をさせ、新しいデータセット carbig を使用して各予測子変数について PDP プロットと ICE プロットを作成します。その後、Figure を比較して予測子変数の重要度を分析します。また、関数 predictorImportance によって返される予測子の重要度の推定値と結果を比較します。

carsmall データセットを読み込みます。

load carsmall

予測子変数 (X) として WeightCylindersHorsepower および Model_Year を、応答変数 (Y) として MPG を指定します。

X = [Weight,Cylinders,Horsepower,Model_Year];
Y = MPG;

XY を使用してアンサンブル回帰に学習をさせます。

Mdl = fitrensemble(X,Y, ...
    'PredictorNames',{'Weight','Cylinders','Horsepower','Model Year'}, ...
    'ResponseName','MPG');

関数 plotPartialDependencepredictorImportanceを使用して、予測子変数の重要度を比較します。関数 plotPartialDependence は、選択した予測子と予測応答の間の関係を可視化します。predictorImportance は、予測子の重要度を単一の値で要約します。

plotPartialDependence を使用し 'Conditional','absolute' を指定して、各予測子についての PDP プロット (赤い線) と ICE プロット (灰色の線) が含まれている Figure を作成します。各 Figure には、選択した予測子と予測応答の散布図 (黒い円のマーカー) も含まれています。また、carbig データセットを読み込み、新しい予測子データ Xnew として使用します。Xnew が指定された場合、関数 plotPartialDependenceMdl 内の予測子データではなく Xnew を使用します。

load carbig
Xnew = [Weight,Cylinders,Horsepower,Model_Year];

f = figure;
f.Position = [100 100 1.75*f.Position(3:4)]; % Enlarge figure for visibility.
for i = 1 : 4
    subplot(2,2,i)
    plotPartialDependence(Mdl,i,Xnew,'Conditional','absolute')
end

predictorImportance を使用して、予測子の重要度の推定値を計算します。この関数は、すべての予測子について分割によって生じる平均二乗誤差 (MSE) の変動を合計し、その合計を枝ノードの数で除算します。

imp = predictorImportance(Mdl);
figure;
bar(imp);
title('Predictor Importance Estimates');
ylabel('Estimates');
xlabel('Predictors');
ax = gca;
ax.XTickLabel = Mdl.PredictorNames;

予測子の重要度によると、MPG に対する効果が最も大きいのは変数 Weight です。Weight の PDP も、MPGWeight に対する部分的従属性が高いことを示しています。予測子の重要度によると、MPG に対する効果が最も小さいのは変数 Cylinders です。Cylinders の PDP も、Cylinders による MPG の変動が小さいことを示しています。

carsmall データセットを使用してサポート ベクター マシン (SVM) 回帰モデルに学習をさせ、2 つの予測子変数について PDP を作成します。その後、plotPartialDependence の出力から部分従属の推定値を抽出します。

carsmall データセットを読み込みます。

load carsmall

予測子変数 (Tbl) として WeightCylinders および Horsepower を指定します。

Tbl = table(Weight,Cylinders,Horsepower);

Tbl と応答変数 MPG を使用してサポート ベクター マシン (SVM) 回帰モデルを作成します。自動カーネル スケールのガウス カーネル関数を使用します。

Mdl = fitrsvm(Tbl,MPG,'ResponseName','MPG', ...
    'KernelFunction','gaussian','KernelScale','auto');

予測子変数 Weight および Horsepower に対する予測応答 (MPG) の部分従属を可視化する PDP を作成します。名前と値のペアの引数 QueryPoints を使用して、部分従属を計算する点を指定します。

pt1 = linspace(min(Weight),max(Weight),50)';
pt2 = linspace(min(Horsepower),max(Horsepower),50)';
ax = plotPartialDependence(Mdl,{'Weight','Horsepower'},'QueryPoints',[pt1 pt2]);
view(140,30) % Modify the viewing angle

PDP には、WeightHorsepower の間の交互作用効果が示されています。

WeightHorsepower に対する MPG の部分従属の推定値を抽出します。ax.ChildrenXDataYData および ZData の値はそれぞれ、x 軸の値 (1 番目に選択された予測子の値)、y 軸の値 (2 番目に選択された予測子の値) および z 軸の値 (対応する部分従属の値) です。

xval = ax.Children.XData;
yval = ax.Children.YData;
zval = ax.Children.ZData;

'Conditional' として 'absolute' を指定した場合、plotPartialDependence は PDP、散布図および一連の ICE プロットが含まれている Figure を作成します。ax.Children(1)ax.Children(2) はそれぞれ PDP と散布図に対応します。ax.Children の残りの要素は ICE プロットに対応します。ax.Children(i)XData および YData の値はそれぞれ、x 軸の値 (選択された予測子の値) および y 軸の値 (対応する部分従属の値) です。

入力引数

すべて折りたたむ

学習済みの回帰モデル。次の表に記載されている完全またはコンパクトな回帰モデル オブジェクトを指定します。

学習済みモデルのタイプ回帰モデル オブジェクト生成元
決定木のアンサンブルのバギングTreeBagger, CompactTreeBaggerTreeBagger, compact
回帰モデルのアンサンブルRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemblefitrensemble, compact
ガウス過程回帰RegressionGP, CompactRegressionGPfitrgp, compact
一般化線形混合効果モデルGeneralizedLinearMixedModelfitglme
一般化線形モデルGeneralizedLinearModel, CompactGeneralizedLinearModelfitglm, stepwiseglm, compact
線形混合効果モデルLinearMixedModelfitlme, fitlmematrix
線形回帰LinearModel, CompactLinearModelfitlm, stepwiselm, compact
高次元データの線形回帰RegressionLinearfitrlinear
非線形回帰NonLinearModelfitnlm
回帰木RegressionTree, CompactRegressionTreefitrtree, compact
サポート ベクター マシン回帰RegressionSVM, CompactRegressionSVMfitrsvm, compact

Mdl がコンパクトな回帰モデル オブジェクトである場合、X を指定しなければなりません。

plotPartialDependence は、スパース行列を使用した学習済みのモデル オブジェクトをサポートしません。fitrlinear を使用して Mdl に学習をさせる場合は、行が各観測値に対応する非スパースの数値行列を予測子データに使用してください。

可視化する特徴量。正の整数のベクトル、文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列を指定します。次の表に示されているように、1 つまたは 2 つの特徴量を選択できます。

1 つの特徴量

説明
正の整数可視化する予測子データの列に対応するインデックス値。
文字ベクトルまたは string スカラー

可視化する予測子変数の名前。名前は Mdl.PredictorNames のエントリに一致しなければなりません。

2 つの特徴量

説明
正の整数が 2 つ含まれているベクトル可視化する予測子データの列に対応するインデックス値。
文字ベクトルの cell 配列または string 配列

可視化する予測子変数の名前。配列の各要素は予測子変数の名前です。名前は Mdl.PredictorNames のエントリに一致しなくてはなりません。

例: {'x1','x3'}

データ型: single | double | char | string | cell

予測子データ。数値行列またはテーブルとして指定します。X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • Mdl が完全な回帰モデル オブジェクトである場合、plotPartialDependenceMdl 内の予測子データを使用します。X が指定された場合、plotPartialDependenceMdl 内の予測子データを使用せず、X のみを使用します。

  • Mdl がコンパクトな回帰モデル オブジェクトである場合、X を指定しなければなりません。

X は、Mdl.X または Mdl.Variables に格納されている、Mdl の学習に使用した予測子データと一致しなければなりません。

  • 数値行列を使用して Mdl に学習をさせた場合、X は数値行列でなければなりません。X の列を構成する変数の個数と順序は、Mdl に学習をさせた予測子変数のものと同じでなければなりません。

  • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、X はテーブルでなければなりません。X 内のすべての予測子変数は、変数名およびデータ型が Tbl のものと同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。

  • plotPartialDependence はスパース行列をサポートしません。

データ型: single | double | table

名前と値のペアの引数

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

例: plotPartialDependence(Mdl,Vars,X,'NumObservationsToSample',100,'UseParallel',true) は、X から抽出した 100 個の観測値を使用し、for ループの反復を並列実行することにより、PDP を作成します。

プロット タイプ。'Conditional''none''absolute' または 'centered' から構成されるコンマ区切りのペアとして指定します。

説明
'none'

plotPartialDependence は PDP を作成します。

  • 1 つの数値的な特徴量が Vars で選択された場合、plotPartialDependence は選択された特徴量の最小値と最大値の間にある値で部分従属を計算し、青い実線で PDP を作成します。

  • 1 つのカテゴリカル特徴量が Vars で選択された場合、plotPartialDependence はすべてのカテゴリカル値で予測応答を計算し、点線で接続された青い円マーカーを使用して部分従属をプロットします。

  • 2 つの特徴量が Vars で選択された場合、plotPartialDependence は表面プロットを作成します。

'absolute'

plotPartialDependence は、次の 3 種類のプロットを含む Figure を作成します。

  • 赤い実線による PDP

  • 黒い円マーカーによる、選択された特徴量と予測応答の散布図

  • 灰色の実線による、各観測値についての ICE プロット

この値は、1 つの特徴量のみが選択された場合に有効です。

'centered'

plotPartialDependence は、'absolute' と同じ 3 種類のプロットを含む Figure を作成します。plotPartialDependence は、すべてのプロットがゼロから始まるようにプロットをオフセットします。

この値は、1 つの特徴量のみが選択された場合に有効です。

詳細は、部分従属プロット個別条件付き期待値プロット を参照してください。

例: 'Conditional','absolute'

抽出する観測値の個数。'NumObservationsToSample' と正の整数から構成されるコンマ区切りのペアとして指定します。既定値は、Mdl または X 内の観測値の総数です。観測値の総数より大きい値が指定された場合、plotPartialDependence はすべての観測値を使用します。

plotPartialDependence は、関数 datasample を使用して観測値を非復元抽出し、抽出した観測値を部分従属の計算に使用します。'Conditional' として 'absolute' または 'centered' が指定された場合、plotPartialDependence は抽出した各観測値についての ICE プロットが含まれている Figure を作成します。

例: 'NumObservationsToSample',100

データ型: single | double

プロットに使用する座標軸。'ParentAxisHandle' と axes オブジェクトから構成されるコンマ区切りのペアとして指定します。現在の座標軸が直交座標軸である場合に座標軸が指定されなかった場合、plotPartialDependence は現在の座標軸 (gca) を使用します。座標軸が存在しない場合、plotPartialDependence は新しい Figure にプロットします。

例: 'ParentAxisHandle',ax

部分従属を計算する点。'QueryPoints' と数値列ベクトル、2 列の数値行列、または 2 つの数値列ベクトルから成る cell 配列から構成されるコンマ区切りのペアとして指定します。

既定値は、数値列ベクトルまたは 2 列の数値行列で、選択した特徴量の数に応じて決まります。 1 つの列には、選択した特徴量の最小値と最大値の間に等間隔に並ぶ 100 個の点が含まれます。

  • Vars 内の特徴量を 1 つ選択する場合、数値列ベクトルを使用します。

  • Vars 内の特徴量を 2 つ選択する場合、

    • 各特徴量について同じ個数の点を指定するには、2 列の数値行列を使用します。

    • 各特徴量について異なる個数の点を指定するには、2 つの数値列ベクトルから成る cell 配列を使用します。

カテゴリカル特徴量の既定値は、選択した特徴量内のすべてのカテゴリカル値です。カテゴリカル特徴量の 'QueryPoints' は変更できません。1 つの数値的な特徴量と 1 つのカテゴリカル特徴量を選択した場合、数値列ベクトルと空の配列から構成される cell 配列を使用することにより、数値的な特徴量について 'QueryPoints' を指定できます。

例: 'QueryPoints',{pt,[]}

データ型: single | double | cell

並列実行のフラグ。'UseParallel'true または false から構成されるコンマ区切りのペアとして指定します。'UseParallel' として true が指定された場合、plotPartialDependence は各観測値の応答予測と平均化を行う際、 parfor を使用して for ループの反復を並列実行します。

例: 'UseParallel',true

データ型: logical

出力引数

すべて折りたたむ

プロットの座標軸。axes オブジェクトとして返されます。座標軸の外観を変更する方法とプロットからデータを抽出する方法の詳細については、座標軸の外観およびプロットからの部分従属推定値の抽出を参照してください。

詳細

すべて折りたたむ

部分従属プロット

部分従属プロット [1](PDP) は、特徴量と学習済み回帰モデルの予測応答との間の関係を可視化します。plotPartialDependence は、他の変数を除外することにより、単一の特徴量に対する予測応答のライン プロットまたは特徴量のペアに対する予測応答の表面プロットを作成します。

特徴量全体の集合 X = {x1, x2, …, xm} の部分集合 XS について PDP を考えます。部分集合 XS には、1 つの特徴量または 2 つの特徴量が含まれています。つまり、XS = {xS1} または XS = {xS1, xS2} です。XC は X における XS の補集合であるとします。予測応答 f(X) は、X 内のすべての特徴量に依存します。

f(X) = f(XS, XC).

XS に対する予測応答の部分従属は、XC に関する予測応答の期待値によって定義されます。

fS(XS)=EC[f(XS,XC)]=f(XS,XC)pC(XC)dXC,

ここで、pC(XC) は XC の周辺確率です。つまり、pC(XC)p(XS,XC)dXS です。各観測値の確率が同程度であり、応答における XS と XC の間の従属および XS と XC の交互作用が強くないと仮定することにより、plotPartialDependence は観測された予測子データを使用して次のように部分従属を推定します。

fS(XS)1Ni=1Nf(XS,XiC),(1)

ここで、N は観測値の個数、Xi = (XiS, XiC) は i 番目の観測値です。

plotPartialDependence式 1を使用して PDP を作成します。入力引数 Mdl および Vars を使用して、学習済みモデル (f(·)) の入力と可視化対象の特徴量 (XS) の選択をそれぞれ行います。plotPartialDependence は、XS からの 100 個の等間隔の点、または名前と値のペアの引数 'QueryPoints' で指定された点における部分従属を計算します。特定の予測子データから抽出する観測値の個数 (N) は、名前と値のペアの引数 'NumObservationsToSample' を使用して指定できます。

個別条件付き期待値プロット

個別条件付き期待値 (ICE) プロット[2]は、PDP の拡張であり、各観測値について特徴量と予測応答の間の関係を可視化します。PDP は、特徴量と予測応答の間の平均化された関係を可視化します。これに対して一連の ICE プロットは、平均化された情報を分解し、各観測値について個別の従属を可視化します。

plotPartialDependence は各観測値について ICE プロットを作成します。一連の ICE プロットは、異なる観測値に由来する部分従属の不均質性を調べるために役立ちます。plotPartialDependence は、入力引数 X によって与えられた予測子データに対する ICE プロットも作成できます。この機能を使用して予測応答空間を調べることができます。

特定の観測値 XiC について、選択した特徴量 xS の ICE プロットを考えます。ここで、XS = {xS} であり、XC は特徴量全体の集合 X における XS の補集合、Xi = (XiS, XiC) は i 番目の観測値です。ICE プロットは、式 1における総和の被加数に対応します。

fSi(XS)=f(XS,XiC).

'Conditional' として 'absolute' が指定された場合、plotPartialDependence は各観測値 i について fSi(XS) をプロットします。'Conditional' として 'centered' が指定された場合、plotPartialDependence は、異なる観測値によって生じたレベルの影響を除去してから、すべてのプロットを描画します。

fSi,centered(XS)=f(XS,XiC)f(min(XS),XiC).

この除去により、各プロットがゼロから始まるようになるので、XS の累積的な効果および XS と XC の間の交互作用を確認できます。

重み付き走査アルゴリズム

重み付き走査アルゴリズム[1]は、木ベースの回帰モデルの部分従属を推定する手法です。推定される部分従属は、木の走査時に到達した葉ノードに対応する応答値の加重平均です。

XS は特徴量全体の集合 X の部分集合、XC は X における XS の補集合であるとします。このアルゴリズムでは、部分従属を計算する XS の各値について、ルート (開始) ノードから葉 (終端) ノードに向かって木を走査し、葉ノードの重みを求めます。走査は、ルート ノードに 1 という重みの値を割り当てることにより始まります。XS でノードが分割される場合、XS の値に応じて適切な子ノードが走査されます。子ノードの重みは親ノードと同じになります。XC でノードが分割される場合、両方の子ノードが走査されます。各子ノードの重みは、各子ノードに対応する観測値の比率を親ノードの値に乗算した値になります。木の走査の完了後、割り当てられた重みを使用して加重平均が計算されます。

回帰木のアンサンブルの場合、推定される部分従属は、各回帰木の加重平均の平均です。

アルゴリズム

plotPartialDependence は、関数 predict を使用して応答を予測します。plotPartialDependence は、Mdl に従って適切な predict 関数を選択し、既定の設定で predict を実行します。各関数 predict の詳細については、次の表の predict 関数を参照してください。Mdl が木ベースのモデル (ブースティングされた木のアンサンブルを除く) で 'Conditional''none' の場合、plotPartialDependence は関数 predict ではなく重み付き走査アルゴリズムを使用します。詳細については、重み付き走査アルゴリズムを参照してください。

学習済みモデルのタイプ回帰モデル オブジェクト応答を予測する関数
決定木のアンサンブルのバギングCompactTreeBaggerpredict
決定木のアンサンブルのバギングTreeBaggerpredict
回帰モデルのアンサンブルRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemblepredict
ガウス過程回帰RegressionGP, CompactRegressionGPpredict
一般化線形混合効果モデルGeneralizedLinearMixedModelpredict
一般化線形モデルGeneralizedLinearModel, CompactGeneralizedLinearModelpredict
線形混合効果モデルLinearMixedModelpredict
線形回帰LinearModel, CompactLinearModelpredict
高次元データの線形回帰RegressionLinearpredict
非線形回帰NonLinearModelpredict
回帰木RegressionTree, CompactRegressionTreepredict
サポート ベクター マシン回帰RegressionSVM, CompactRegressionSVMpredict

参照

[1] Friedman, J. H. “Greedy function approximation: a gradient boosting machine.” The Annals of Statistics. Vol. 29, No. 5, 2001, pp. 1189-1232.

[2] Goldstein, A., A. Kapelner, J. Bleich, and E. Pitkin. “Peeking inside the black box: Visualizing statistical learning with plots of individual conditional expectation.” Journal of Computational and Graphical Statistics. Vol. 24, No. 1, 2015, pp. 44-65.

[3] Hastie, T., R. Tibshirani, and J. H. Friedman. The Elements of Statistical Learning. New York: Springer, 2001.

拡張機能

R2017b で導入