Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

plotPartialDependence

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

説明

plotPartialDependence(RegressionMdl,Vars) は、回帰モデル RegressionMdl を使用して、Vars に記載されている予測子変数間の部分依存と、予測応答を計算してプロットします。これには予測子データが含まれます。

  • Vars で 1 つの変数を指定した場合、関数は変数に対する部分依存のライン プロットを作成します。

  • Vars で 2 つの変数を指定した場合、関数は 2 つの変数に対する部分依存の表面プロットを作成します。

plotPartialDependence(ClassificationMdl,Vars,Labels) は、分類モデル ClassificationMdl を使用して、Vars に記載されている予測子変数間の部分依存と、Labels で指定されたクラスのスコアを計算してプロットします。これには予測子データが含まれます。

  • Vars で 1 つの変数を指定した場合、関数は Labels の各クラスの変数に対する部分依存のライン プロットを作成します。

  • Vars で 2 つの変数を指定した場合、関数は 2 つの変数に対する部分依存の表面プロットを作成します。Labels で 1 つのクラスを指定しなければなりません。

plotPartialDependence(___,Data) は新しい予測子データ Data を使用します。前の構文におけるいずれかの入力引数の組み合わせに加えて、Data を指定できます。

plotPartialDependence(fun,Vars,Data) は、予測子データ Data を使用して、Vars に記載されている予測子変数間の部分依存と、カスタム モデル fun によって返される出力を計算してプロットします。

  • Vars で 1 つの変数を指定した場合、関数は fun によって返された出力の各列の変数に対する部分依存のライン プロットを作成します。

  • Vars で 2 つの変数を指定した場合、関数は 2 つの変数に対する部分依存の表面プロットを作成します。2 つの変数を指定した場合、fun は列ベクトルを返す必要があります。または、名前と値の引数 OutputColumns を設定して使用する出力列を指定する必要があります。

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")

Figure Regression tree viewer contains an axes object and other objects of type uimenu, uicontrol. The axes object contains 60 objects of type line, text. One or more of the lines displays its values using only markers

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

plotPartialDependence(Mdl,1)

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel x1, ylabel Y contains an object of type line.

プロットされたラインは、学習済み回帰木 Mdl における Weight (ラベルは x1) と MPG (ラベルは Y) の間の平均化された部分関係性を表します。x 軸の小目盛りは x1 の一意の値を表します。

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

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

fisheriris データ セットを使って単純ベイズ分類モデルに学習させ、予測子変数と複数クラスの予測スコア (事後確率) の関係を示す PDP を作成します。

fisheriris データ セットを読み込みます。これには 150 本のアヤメの標本について種類 (species) と、がく片の長さ、がく片の幅、花弁の長さ、花弁の幅の測定値 (meas) が含まれています。このデータセットには、setosa、versicolor および virginica の 3 種類のそれぞれについて 50 個ずつの標本が含まれています。

load fisheriris

応答に species、予測子に meas を使用して、単純ベイズ分類モデルに学習させます。

Mdl = fitcnb(meas,species);

3 番目の予測子変数 x3 に対する species の 3 つのクラスすべてについて、Mdl によって予測されるスコアの PDP を作成します。MdlClassNames プロパティを使用して、クラス ラベルを指定します。

plotPartialDependence(Mdl,3,Mdl.ClassNames);

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel x3, ylabel Scores contains 3 objects of type line. These objects represent setosa, versicolor, virginica.

このモデルでは、virginica の確率は x3 にともなって増加しています。setosa の確率は、x3 が 0 から 2.5 付近までは約 0.33 であり、それ以降は確率はほぼ 0 に低下します。

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

Figure contains an axes object. The axes object with title Individual Conditional Expectation Plot, xlabel x1, ylabel Y contains 202 objects of type line, scatter.

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

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

分類モデルのアンサンブルに学習させ、2 つの PDP を作成します。1 つには学習データ セットを使用し、もう 1 つには新しいデータ セットを使用します。

census1994 データ セットを読み込みます。これには、<=50K または >50K に分類される米国の年収データと、複数の人口統計変数が含まれます。

load census1994

分析する変数のサブセットを table adultdataadulttest から抽出します。

X = adultdata(:,["age","workClass","education_num","marital_status","race", ...
   "sex","capital_gain","capital_loss","hours_per_week","salary"]);
Xnew = adulttest(:,["age","workClass","education_num","marital_status","race", ...
   "sex","capital_gain","capital_loss","hours_per_week","salary"]);

関数 fitcensemble を使用し、応答として salary を、予測子として他の変数を指定し、分類器のアンサンブルに学習させます。バイナリ分類の場合、fitcensembleLogitBoost メソッドを使用して 100 本の分類木を集約します。

Mdl = fitcensemble(X,"salary");

Mdl のクラス名を検査します。

Mdl.ClassNames
ans = 2x1 categorical
     <=50K 
     >50K 

学習データを使用して、予測子 age に対する salary (>50K) の 2 番目のクラスについて、Mdl によって予測されるスコアの部分依存プロットを作成します。

plotPartialDependence(Mdl,"age",Mdl.ClassNames(2))

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel age, ylabel Score of class >50K contains an object of type line.

table Xnew からの新しい予測子データを使用して、age に対するクラス >50K のスコアの PDP を作成します。

plotPartialDependence(Mdl,"age",Mdl.ClassNames(2),Xnew)

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel age, ylabel Score of class >50K contains an object of type line.

2 つのプロットは、agesalary (>50K) が高い予測スコアの部分依存について類似した形状を示しています。両方のプロットは、高給の予測スコアが 30 歳まで急速に上昇し、その後 60 歳までほぼ横ばいで、その後急速に低下することを示しています。ただし、新しいデータに基づくプロットでは、65 歳以上のスコアがわずかに高くなっています。

isolationForest オブジェクトの予測子と異常スコアの関係を解析するための PDP を作成します。isolationForest オブジェクトを関数 plotPartialDependence に直接渡すことはできません。代わりに、オブジェクトの異常スコアを返すカスタム関数を定義し、その関数を plotPartialDependence に渡します。

census1994.mat に保存されている 1994 年の国勢調査データを読み込みます。このデータ セットは、米国勢調査局の人口統計データから構成されます。

load census1994

census1994 には 2 つのデータ セット adultdata および adulttest が含まれています。

adulttest 用に孤立森モデルに学習させます。関数 iforest は、IsolationForest オブジェクトを返します。

rng("default") % For reproducibility
Mdl = iforest(adulttest);

IsolationForest の関数 isanomaly によって計算された異常スコアを返すカスタム関数 myAnomalyScores を定義します。このカスタム関数の定義は、この例の終わりで示します。

adulttest データ セットの変数 age に対する異常スコアの PDP を作成します。plotPartialDependence は、関数ハンドルの形式のカスタム モデルを受け入れます。関数ハンドルで表される関数は予測子データを受け入れ、観測値ごとに 1 つの行をもつ列ベクトルまたは行列を返す必要があります。カスタム モデルを @(tbl)myAnomalyScores(Mdl,tbl) として指定し、カスタム関数で学習済みモデル Mdl が使用されて予測子データが受け入れられるようにします。

plotPartialDependence(@(tbl)myAnomalyScores(Mdl,tbl),"age",adulttest)
xlabel("Age")
ylabel("Anomaly Score")

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel Age, ylabel Anomaly Score contains an object of type line.

カスタム関数 myAnomalyScores

function scores = myAnomalyScores(Mdl,tbl)
[~,scores] = isanomaly(Mdl,tbl);
end

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];

figure
t = tiledlayout(2,2,"TileSpacing","compact");
title(t,"Individual Conditional Expectation Plots")

for i = 1 : 4
    nexttile
    plotPartialDependence(Mdl,i,Xnew,"Conditional","absolute")
    title("")
end

Figure contains 4 axes objects. Axes object 1 with xlabel Weight, ylabel MPG contains 408 objects of type line, scatter. Axes object 2 with xlabel Cylinders, ylabel MPG contains 408 objects of type line, scatter. Axes object 3 with xlabel Horsepower, ylabel MPG contains 408 objects of type line, scatter. Axes object 4 with xlabel Model Year, ylabel MPG contains 408 objects of type line, scatter.

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

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

Figure contains an axes object. The axes object with title Predictor Importance Estimates, xlabel Predictors, ylabel Estimates contains an object of type bar.

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

予測子の線形項と交互作用項の両方を使用して一般化加法モデル (GAM) に学習させます。その後、線形項と交互作用項の両方を含む PDP と線形項のみを含む PDP を作成します。PDP を作成する際に交互作用項を含めるかどうかを指定します。

ionosphere データセットを読み込みます。このデータセットには、レーダー反射についての 34 個の予測子と、不良 ('b') または良好 ('g') という 351 個の二項反応が含まれています。

load ionosphere

予測子 X とクラス ラベル Y を使用して、GAM に学習させます。クラス名を指定することが推奨されます。上位 10 個の最も重要な交互作用項を含めるように指定します。

Mdl = fitcgam(X,Y,"ClassNames",{'b','g'},"Interactions",10);

MdlClassificationGAM モデル オブジェクトです。

Mdl の交互作用項の一覧を表示します。

Mdl.Interactions
ans = 10×2

     1     5
     7     8
     6     7
     5     6
     5     7
     5     8
     3     5
     4     7
     1     7
     4     5

Interactions の各行は 1 つの交互作用項を表し、交互作用項の予測子変数の列インデックスを格納します。

交互作用項で最も頻度が高い予測子を調べます。

mode(Mdl.Interactions,"all")
ans = 5

交互作用項で最も頻度が高い予測子は 5 番目の予測子 (x5) です。5 番目の予測子についての PDP を作成します。2 つ目の PDP では、計算から交互作用項を除外するために "IncludeInteractions",false を指定します。

plotPartialDependence(Mdl,5,Mdl.ClassNames(1))
hold on
plotPartialDependence(Mdl,5,Mdl.ClassNames(1),"IncludeInteractions",false)
grid on
legend("Linear and interaction terms","Linear terms only")
title("PDPs of Posterior Probabilities for 5th Predictor")
hold off

Figure contains an axes object. The axes object with title PDPs of Posterior Probabilities for 5th Predictor, xlabel x5, ylabel Score of class b contains 2 objects of type line. These objects represent Linear and interaction terms, Linear terms only.

このプロットは、x5 のスコア (事後確率) の部分依存はモデルに交互作用項が含まれているかどうかによって異なり、特に 0.2 から 0.45 までの x5 で大きく異なることを示しています。

carsmall データセットを使用してサポート ベクター マシン (SVM) 回帰モデルに学習をさせ、2 つの予測子変数について PDP を作成します。その後、plotPartialDependence の出力から部分依存の推定値を抽出します。または、関数partialDependenceを使用して、部分依存の値を取得することもできます。

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

load carsmall

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

Tbl = table(Weight,Cylinders,Displacement,Horsepower);

Tbl と応答変数 MPG を使用して、SVM 回帰モデルを構築します。自動カーネル スケールのガウス カーネル関数を使用します。

Mdl = fitrsvm(Tbl,MPG,"ResponseName","MPG", ...
    "CategoricalPredictors","Cylinders","Standardize",true, ...
    "KernelFunction","gaussian","KernelScale","auto");

予測子変数 Weight および Cylinders に対する予測応答 (MPG) の部分依存を可視化する PDP を作成します。クエリ点を指定し、名前と値の引数 QueryPoints を使用して Weight の部分依存を計算します。Cylinders はカテゴリカル変数であるため、QueryPoints の値は指定できません。plotPartialDependence ではすべての categorical 値を使用します。

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

Figure contains an axes object. The axes object with title Partial Dependence Plot, xlabel Weight, ylabel Cylinders contains an object of type surface.

PDP には、WeightCylinders の間の交互作用効果が示されています。Weight に対する MPG の部分依存は、Cylinders の値に応じて変化します。

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

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

または、関数partialDependenceを使用して、部分依存の値を取得することもできます。

[pd,x,y] = partialDependence(Mdl,["Weight","Cylinders"],"QueryPoints",{pt,[]});

pd にはクエリ点 xy の部分依存の値が含まれます。

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

入力引数

すべて折りたたむ

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

モデル完全またはコンパクトなモデル オブジェクト
一般化線形モデルGeneralizedLinearModel, CompactGeneralizedLinearModel
一般化線形混合効果モデルGeneralizedLinearMixedModel
線形回帰LinearModel, CompactLinearModel
線形混合効果モデルLinearMixedModel
非線形回帰NonLinearModel
回帰モデルのアンサンブルRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemble
一般化加法モデル (GAM)RegressionGAM, CompactRegressionGAM
ガウス過程回帰RegressionGP, CompactRegressionGP
ランダムな特徴量拡張を使用したガウス カーネル回帰モデルRegressionKernel
高次元データの線形回帰RegressionLinear
ニューラル ネットワーク回帰モデルRegressionNeuralNetwork, CompactRegressionNeuralNetwork
サポート ベクター マシン (SVM) 回帰RegressionSVM, CompactRegressionSVM
回帰木RegressionTree, CompactRegressionTree
決定木のアンサンブルのバギングTreeBagger, CompactTreeBagger

RegressionMdl が予測子データを含まないモデル オブジェクト (コンパクトなモデルなど) である場合、入力引数 Data を指定しなければなりません。

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

分類モデル。完全またはコンパクトな分類モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。

モデル完全またはコンパクトなモデル オブジェクト
判別分析分類器ClassificationDiscriminant, CompactClassificationDiscriminant
サポート ベクター マシンまたはその他の分類器用のマルチクラス モデルClassificationECOC, CompactClassificationECOC
分類用のアンサンブル学習器ClassificationEnsemble, CompactClassificationEnsemble, ClassificationBaggedEnsemble
一般化加法モデル (GAM)ClassificationGAM, CompactClassificationGAM
ランダムな特徴量拡張を使用したガウス カーネル分類モデルClassificationKernel
k 最近傍分類器ClassificationKNN
線形分類モデルClassificationLinear
マルチクラス単純ベイズ モデルClassificationNaiveBayes, CompactClassificationNaiveBayes
ニューラル ネットワーク分類器ClassificationNeuralNetwork, CompactClassificationNeuralNetwork
1 クラスおよびバイナリ分類用のサポート ベクター マシン (SVM) 分類器ClassificationSVM, CompactClassificationSVM
マルチクラス分類用の二分決定木ClassificationTree, CompactClassificationTree
決定木のバギング アンサンブルTreeBagger, CompactTreeBagger
多項回帰モデルMultinomialRegression

ClassificationMdl が予測子データを含まないモデル オブジェクト (コンパクトなモデルなど) である場合、入力引数 Data を指定しなければなりません。

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

カスタム モデル。関数ハンドルとして指定します。関数ハンドル fun は、予測子データ Data を受け入れ、出力を列ベクトルまたは行列の形式で返す関数を表す必要があります。出力の各行は、予測子データの各観測値 (行) に対応する必要があります。

既定では、plotPartialDependence は部分依存の計算に fun のすべての出力列を使用します。使用する出力列は、名前と値の引数 OutputColumns を設定して指定できます。

予測子データ (Data) が table 内にある場合、plotPartialDependence は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。予測子データが行列である場合、plotPartialDependence はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors を使用してそれらを指定します。

データ型: function_handle

予測子変数。正の整数のベクトル、文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。次の表に示されているように、1 つまたは 2 つの予測子変数を指定できます。

1 つの予測子変数

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

予測子変数の名前。名前は、RegressionMdl および ClassificationMdlPredictorNames プロパティのエントリ、またはカスタム モデル fun の table に含まれている Data の変数名と一致しなければなりません。

2 つの予測子変数

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

予測子変数の名前。配列の各要素は予測子変数の名前です。名前は、RegressionMdl および ClassificationMdlPredictorNames プロパティのエントリ、またはカスタム モデル fun の table に含まれている Data の変数名と一致しなければなりません。

2 つの予測子変数を指定する場合、ClassificationMdl については Labels で 1 つのクラスを指定し、カスタム モデル fun については OutputColumns で 1 つの出力列を指定する必要があります。

例: ["x1","x3"]

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

クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Labels の値とデータ型は、ClassificationMdlClassNames プロパティ (ClassificationMdl.ClassNames) のクラス名のものと一致しなければなりません。

  • Vars で 1 つの変数を指定し、Conditional"none" (既定) に指定した場合のみ、複数のクラス ラベルを指定できます。

  • 1 回の関数呼び出しで 2 つの変数と複数のクラス ラベルの部分依存を計算する場合は、partialDependence を使用します。

この引数は、分類モデル オブジェクト ClassificationMdl を指定する場合のみ有効です。

例: ["red","blue"]

例: ClassificationMdl.ClassNames([1 3]) は、ClassificationMdl の 1 番目と 3 番目のクラスとして Labels を指定します。

データ型: single | double | logical | char | cell | categorical

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

回帰モデル (RegressionMdl) と分類モデル (ClassificationMdl) の両方で、Data は、X または Variables プロパティに格納されている、モデルの学習に使用した予測子データと一致しなければなりません。

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

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

  • Data はスパースであってはなりません。

予測子データを含まない回帰モデルまたは分類モデルを指定する場合、Data を指定しなければなりません。モデルが予測子データを含む完全なモデル オブジェクトである場合に Data 引数を指定すると、plotPartialDependence はモデルの予測子データを無視し、Data のみを使用します。

カスタム モデル fun を指定する場合、Data を指定しなければなりません。

データ型: single | double | table

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

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

プロット タイプ。"none""absolute"、または "centered" として指定します。

説明
"none"

plotPartialDependence は PDP を作成します。プロットタイプは Vars で指定された予測子変数の数によって異なります。

  • 1 つの予測子変数 — plotPartialDependence は部分依存の 2 次元のライン プロットを作成します。分類モデル (ClassificationMdl) を指定した場合、関数は Labels で指定された各クラス ラベルのライン プロットを作成します。カスタム モデル (fun) を指定した場合、関数は fun によって返された出力の各列のライン プロットを作成します。使用する出力列は、名前と値の引数 OutputColumns を設定して指定できます。

  • 2 つの予測子変数 — plotPartialDependence は 2 つの変数に対する部分依存の表面プロットを作成します。分類モデルの場合、Labels で 1 つのクラス ラベルを指定しなければなりません。カスタム モデルの場合、列ベクトルを返すモデルを指定するか、名前と値の引数 OutputColumns を設定して使用する出力列を指定する必要があります。

"absolute"

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

  • PDP (赤い線)

  • 選択した予測子変数と予測応答またはスコアの散布図 (円マーカー)

  • 各観測値の ICE プロット (灰色の線)

"absolute" オプションを使用するには、Vars で 1 つの予測子変数を指定しなければなりません。また、分類モデルの場合、Labels で 1 つのクラス ラベルを指定しなければなりません。カスタム モデルの場合、列ベクトルを返すモデルを指定するか、名前と値の引数 OutputColumns を設定して使用する出力列を指定する必要があります。

"centered"

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

"centered" オプションを使用するには、Vars で 1 つの予測子変数を指定しなければなりません。また、分類モデルの場合、Labels で 1 つのクラス ラベルを指定しなければなりません。カスタム モデルの場合、列ベクトルを返すモデルを指定するか、名前と値の引数 OutputColumns を設定して使用する出力列を指定する必要があります。

例: "Conditional","absolute"

部分依存の計算に一般化加法モデル (GAM) の交互作用項を含むというフラグ。true または false として指定します。この引数は、GAM の場合のみ有効です。つまり、この引数を指定できるのは、RegressionMdlRegressionGAM または CompactRegressionGAM である場合か、ClassificationMdlClassificationGAM または CompactClassificationGAM である場合だけです。

モデルに交互作用項が含まれる場合、IncludeInteractions の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。

例: "IncludeInteractions",false

データ型: logical

部分依存の計算に一般化加法モデル (GAM) の切片項を含むというフラグ。true または false として指定します。この引数は、GAM の場合のみ有効です。つまり、この引数を指定できるのは、RegressionMdlRegressionGAM または CompactRegressionGAM である場合か、ClassificationMdlClassificationGAM または CompactClassificationGAM である場合だけです。

例: "IncludeIntercept",false

データ型: logical

抽出する観測値の個数。正の整数として指定します。既定値は、Data またはモデル (RegressionMdl または ClassificationMdl) 内の観測値の総数です。観測値の総数より大きい値が指定された場合、plotPartialDependence はすべての観測値を使用します。

plotPartialDependence は、関数 datasample を使用して観測値を非復元抽出し、抽出した観測値を部分依存の計算に使用します。

plotPartialDependence は、抽出した観測の一意の値を小目盛りのマークで表示します。

Conditional として "absolute" または "centered" が指定された場合、plotPartialDependence は抽出した各観測値についての ICE プロットが含まれている Figure を作成します。

例: "NumObservationsToSample",100

データ型: single | double

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

例: "Parent",ax

数値予測子の部分依存を計算する点。数値列ベクトル、2 列の数値行列、または 2 つの数値列ベクトルの cell 配列として指定します。

  • Vars 内の予測子変数を 1 つ選択する場合、数値列ベクトルを使用します。

  • Vars 内の予測子変数を 2 つ選択する場合、次のようにします。

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

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

既定値は、数値列ベクトルまたは 2 列の数値行列で、選択した予測子変数の数に応じて決まります。各列には、予測子変数に対応する抽出した観測値の最小値と最大値の間に等間隔に並ぶ 100 個の点が含まれます。

Conditional"absolute" または "centered" である場合、選択された予測子について、予測子データの値 (DataRegressionMdl または ClassificationMdl の予測子データ) をクエリ点に追加します。

カテゴリカル変数の QueryPoints は変更できません。関数 plotPartialDependence では、選択した変数としてすべてカテゴリカル値を使用します。

1 つの数値変数と 1 つのカテゴリカル変数を選択した場合、数値列ベクトルと空の配列で構成される cell 配列を使用することにより、数値変数について QueryPoints を指定できます。

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

データ型: single | double | cell

並列実行のフラグ。true または false として指定します。"UseParallel",true を指定した場合、関数 plotPartialDependence は各観測値の応答またはスコアの予測と平均化を行う際、parfor を使用して for ループの反復を実行します。Parallel Computing Toolbox™ がある場合、ループが並列に実行されます。

例: "UseParallel",true

データ型: logical

カスタム モデル fun のカテゴリカル予測子のリスト。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~ p です。pData の変数の数です。

logical ベクトル

true というエントリは、対応する予測子がカテゴリカルであることを意味します。ベクトルの長さは p です。

文字行列行列の各行は予測子変数の名前です。名前は、table 内の予測子データ Data の変数名と一致しなければなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。
文字ベクトルの cell 配列または string 配列配列の各要素は予測子変数の名前です。名前は、table 内の予測子データ Data の変数名と一致しなければなりません。
"all"すべての予測子がカテゴリカルです。

既定では、予測子データ Data が table 内にある場合、plotPartialDependence は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列のいずれか、あるいは文字ベクトルの cell 配列である場合に、変数を categorical であると見なします。予測子データが行列である場合、plotPartialDependence はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors を使用してそれらを指定します。

この引数は、fun を使用してカスタム モデルを指定する場合のみ有効です。

例: "CategoricalPredictors","all"

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

部分依存の計算に使用するカスタム モデル fun の出力列。次の表のいずれかの値として指定します。

説明
正の整数のベクトル

ベクトルの各エントリは、plotPartialDependence が部分依存の計算に対応する出力列を使用することを示すインデックス値です。インデックス値の範囲は 1 ~ q です。q はカスタム モデル fun によって返される出力行列の列数です。

logical ベクトル

true というエントリは、plotPartialDependence が部分依存の計算に対応する出力列を使用することを意味します。ベクトルの長さは q です。

"all"plotPartialDependence は部分依存の計算にすべての出力列を使用します。

  • Vars で 1 つの変数を指定し、Conditional"none" (既定) に指定した場合のみ、複数の出力列を指定できます。

  • 1 回の関数呼び出しで 2 つの変数と複数の出力列の部分依存を計算する場合は、partialDependence を使用します。

この引数は、fun を使用してカスタム モデルを指定する場合のみ有効です。

例: "OutputColumns",[1 2]

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

出力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

回帰モデルの部分依存

部分依存[1]は、学習済みの回帰モデルにおける予測子変数と予測応答の関係を表します。plotPartialDependence は、他の変数を除外することにより、予測子変数のサブセットにおける予測応答の部分依存を計算します。

予測子変数全体の集合 X = {x1, x2, …, xm} のサブセット XS における部分依存について考えます。サブセット 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 を呼び出す場合、入力引数 RegressionMdlVars を使用して、学習済みモデル (f(·)) の指定と変数 (XS) の選択をそれぞれ行うことができます。plotPartialDependence は、XS からの 100 個の等間隔の点、または名前と値の引数 QueryPoints で指定された点における部分依存を計算します。特定の予測子データから抽出する観測値の個数 (N) は、名前と値の引数 NumObservationsToSample を使用して指定できます。

回帰モデルの個別条件付き期待値

個別条件付き期待値 (ICE) [2]は、部分依存の拡張として、各観測値の予測子変数と予測応答の関係を表します。部分依存は、予測子変数と予測応答の平均化された関係を示します。これに対して、一連の ICE プロットは、平均化された情報を分解し、各観測値の個別の従属を示します。

plotPartialDependence は各観測値について ICE プロットを作成します。一連の ICE プロットは、異なる観測値に由来する部分依存の不均質性を調べるために役立ちます。plotPartialDependence は、入力引数 Data によって与えられた予測子データに対する 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 の間の交互作用を確認できます。

分類モデルの部分依存と ICE

分類モデルの場合、plotPartialDependence は、回帰モデルと同じ方法で部分依存と個別条件付き期待値を計算します。1 つ違う点として、関数はモデルからの予測応答ではなく、Labels で指定されたクラスの予測スコアを使用します。

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

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

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

バギング木のアンサンブルの場合、推定される部分依存は、各木の加重平均の平均です。

アルゴリズム

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

回帰モデル オブジェクト

モデル タイプ完全またはコンパクトな回帰モデル オブジェクト応答を予測する関数
決定木のアンサンブルのバギングCompactTreeBaggerpredict
決定木のアンサンブルのバギングTreeBaggerpredict
回帰モデルのアンサンブルRegressionEnsemble, RegressionBaggedEnsemble, CompactRegressionEnsemblepredict
ランダムな特徴量拡張を使用したガウス カーネル回帰モデルRegressionKernelpredict
ガウス過程回帰RegressionGP, CompactRegressionGPpredict
一般化加法モデルRegressionGAM, CompactRegressionGAMpredict
一般化線形混合効果モデルGeneralizedLinearMixedModelpredict
一般化線形モデルGeneralizedLinearModel, CompactGeneralizedLinearModelpredict
線形混合効果モデルLinearMixedModelpredict
線形回帰LinearModel, CompactLinearModelpredict
高次元データの線形回帰RegressionLinearpredict
ニューラル ネットワーク回帰モデルRegressionNeuralNetwork, CompactRegressionNeuralNetworkpredict
非線形回帰NonLinearModelpredict
回帰木RegressionTree, CompactRegressionTreepredict
サポート ベクター マシンRegressionSVM, CompactRegressionSVMpredict

分類モデル オブジェクト

モデル タイプ完全またはコンパクトな分類モデル オブジェクトラベルとスコアを予測する関数
判別分析分類器ClassificationDiscriminant, CompactClassificationDiscriminantpredict
サポート ベクター マシンまたはその他の分類器用のマルチクラス モデルClassificationECOC, CompactClassificationECOCpredict
分類用のアンサンブル学習器ClassificationEnsemble, CompactClassificationEnsemble, ClassificationBaggedEnsemblepredict
ランダムな特徴量拡張を使用したガウス カーネル分類モデルClassificationKernelpredict
一般化加法モデルClassificationGAM, CompactClassificationGAMpredict
k 最近傍モデルClassificationKNNpredict
線形分類モデルClassificationLinearpredict
単純ベイズ モデルClassificationNaiveBayes, CompactClassificationNaiveBayespredict
ニューラル ネットワーク分類器ClassificationNeuralNetwork, CompactClassificationNeuralNetworkpredict
1 クラスおよびバイナリ分類用のサポート ベクター マシンClassificationSVM, CompactClassificationSVMpredict
マルチクラス分類用の二分決定木ClassificationTree, CompactClassificationTreepredict
決定木のバギング アンサンブルTreeBagger, CompactTreeBaggerpredict

代替機能

  • partialDependence は可視化せずに部分依存を計算します。この関数は、1 回の関数呼び出しで 2 つの変数と複数クラスの部分依存を計算できます。

参照

[1] Friedman, Jerome. H. “Greedy Function Approximation: A Gradient Boosting Machine.” The Annals of Statistics 29, no. 5 (2001): 1189-1232.

[2] Goldstein, Alex, Adam Kapelner, Justin Bleich, and Emil Pitkin. “Peeking Inside the Black Box: Visualizing Statistical Learning with Plots of Individual Conditional Expectation.” Journal of Computational and Graphical Statistics 24, no. 1 (January 2, 2015): 44–65.

[3] Hastie, Trevor, Robert Tibshirani, and Jerome Friedman. The Elements of Statistical Learning. New York, NY: Springer New York, 2001.

拡張機能

バージョン履歴

R2017b で導入

すべて展開する