このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
partialDependence
構文
説明
は、回帰モデル pd
= partialDependence(RegressionMdl
,Vars
)RegressionMdl
を使用して、Vars
に記載されている予測子変数間の部分依存 pd
と予測応答を計算します。これには予測子データが含まれます。
は、分類モデル pd
= partialDependence(ClassificationMdl
,Vars
,Labels
)ClassificationMdl
を使用して、Vars
に記載されている予測子変数間の部分依存 pd
と、Labels
で指定されたクラスのスコアを計算します。これには予測子データが含まれます。
は、1 つ以上の名前と値の引数によって指定された追加オプションを使用します。たとえば、pd
= partialDependence(___,Name,Value
)"UseParallel","true"
を指定した場合、関数 partialDependence
は並列計算を使用して部分依存の計算を実行します。
例
1 つの変数における部分依存の計算とプロット
fisheriris
データ セットで単純ベイズ分類モデルに学習させて、予測子変数と複数クラスの予測スコア (事後確率) の関係を示す部分依存の値を計算します。
fisheriris
データ セットを読み込みます。これには 150 本のアヤメの標本について種類 (species
) と、がく片の長さ、がく片の幅、花弁の長さ、花弁の幅の測定値 (meas
) が含まれています。このデータ セットには、setosa、versicolor および virginica の 3 種類のそれぞれについて 50 個ずつの標本が含まれています。
load fisheriris
応答に species
、予測子に meas
を使用して、単純ベイズ分類モデルに学習させます。
Mdl = fitcnb(meas,species,"PredictorNames",["Sepal Length","Sepal Width","Petal Length","Petal Width"]);
species
の 3 つのクラスすべてに対する Mdl
による予測スコアについて、3 番目の予測子変数 (花弁の長さ) の部分依存の値を計算します。Mdl
の ClassNames
プロパティを使用して、クラス ラベルを指定します。
[pd,x] = partialDependence(Mdl,3,Mdl.ClassNames);
pd にはクエリ点 x の部分依存の値が含まれます。plot
やbar
などのプロット関数を使用して、計算された部分依存の値をプロットできます。関数 bar
を使用して、x
に対して pd
をプロットします。
bar(x,pd) legend(Mdl.ClassNames) xlabel("Petal Length") ylabel("Scores") title("Partial Dependence Plot")
このモデルでは、virginica
の確率は花弁の長さにともなって増加しています。setosa
の確率は、花弁の長さが 0 から 2.5 付近までは約 0.33 であり、それ以降は確率はほぼ 0 に低下します。
あるいは、関数plotPartialDependence
を使用し、部分依存の値を計算してプロットすることができます。
plotPartialDependence(Mdl,3,Mdl.ClassNames)
複数クラスの 2 つの変数における部分依存の計算とプロット
分類モデルのアンサンブルに学習させ、複数クラスの 2 つの変数における部分依存の値を計算します。次に、各クラスの部分依存の値をプロットします。
census1994
データ セットを読み込みます。これには、<=50K
または >50K
に分類される米国の年収データと、複数の人口統計変数が含まれます。
load census1994
分析する変数のサブセットをテーブル adultdata
から抽出します。
X = adultdata(1:500,["age","workClass","education_num","marital_status","race", ... "sex","capital_gain","capital_loss","hours_per_week","salary"]);
fitcensemble
を使用して Method
を "Bag"
として指定し、分類木のランダム フォレストに学習させます。再現性を得るために、templateTree
を Reproducible
オプションで使用し、作成されたツリーのテンプレートを使用します。
rng("default") t = templateTree("Reproducible",true); Mdl = fitcensemble(X,"salary","Method","Bag","Learners",t);
Mdl
のクラス名を検査します。
Mdl.ClassNames
ans = 2x1 categorical
<=50K
>50K
両方のクラス (<=50K
と >50K
) について、予測子 age
と education_num
のスコアの部分依存の値を計算します。抽出する観測値の個数を 100 に指定します。
[pd,x,y] = partialDependence(Mdl,["age","education_num"],Mdl.ClassNames,"NumObservationsToSample",100);
関数surf
を使用し、1 番目のクラス (<=50K
) の部分依存の値の表面プロットを作成します。
figure surf(x,y,squeeze(pd(1,:,:))) xlabel("age") ylabel("education\_num") zlabel("Score of class <=50K") title("Partial Dependence Plot") view([130 30]) % Modify the viewing angle
2 番目のクラス (>50K
) の部分依存の値の表面プロットを作成します。
figure surf(x,y,squeeze(pd(2,:,:))) xlabel("age") ylabel("education\_num") zlabel("Score of class >50K") title("Partial Dependence Plot") view([130 30]) % Modify the viewing angle
2 つのプロットは、クラスによって異なる部分依存のパターンを示します。
ノイズを含むデータの部分依存の計算
標本データ セット carbig
を読み込みます。
load carbig
ベクトル Displacement
、Cylinders
、および Model_Year
に、自動車のエンジン排気量、エンジンの気筒数、および自動車が製造された年のデータがそれぞれ格納されています。
Displacement
と Cylinders
を予測子変数、Model_Year
を応答として使用して、多項回帰モデルを当てはめます。
predvars = [Displacement,Cylinders]; Mdl = fitmnr(predvars,Model_Year,PredictorNames=["Displacement","Cylinders"]);
関数rand
を使用して、予測子変数からノイズを含む予測子データのベクトルを作成します。
Data = predvars(1:10:end,:);
rng("default")
rows = length(Data);
Data = Data + 10*rand([rows,2]);
1980 年に製造された自動車に対応する応答カテゴリ確率の Displacement
に対する部分依存を計算します。ノイズを含む予測子データを使用して部分依存を計算します。
[pd,x,~] = partialDependence(Mdl,"Displacement",80,Data)
pd = 1×100
0.0030 0.0031 0.0031 0.0032 0.0032 0.0033 0.0033 0.0033 0.0034 0.0034 0.0035 0.0035 0.0036 0.0036 0.0036 0.0037 0.0037 0.0037 0.0038 0.0038 0.0038 0.0039 0.0039 0.0039 0.0039 0.0039 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0040 0.0039 0.0039 0.0039 0.0039 0.0038 0.0038 0.0038 0.0037 0.0037 0.0036
x = 100×1
73.7850
77.1781
80.5713
83.9644
87.3575
90.7507
94.1438
97.5370
100.9301
104.3232
⋮
カテゴリ確率の Displacement
に対する部分依存の計算値が出力に表示されます。Displacement
は連続変数であるため、関数 partialDependence
は等間隔の 100 個のクエリ点 x
で部分依存を計算します。
plotPartialDependence
を使用して部分依存をプロットします。
plotPartialDependence(Mdl,"Displacement",80,Data)
プロットから、Displacement
が約 70 から約 180 までの間は、その値が大きくなるほど 1980 年に製造された自動車である確率が高くなっていくことがわかります。Displacement
がそのまま増えていくと、1980 年に製造された自動車である確率は下がっていきます。
回帰の複数の変数における部分依存の計算とプロット
carsmall
データ セットを使用してサポート ベクター マシン (SVM) 回帰モデルに学習をさせ、2 つの予測子変数の部分依存を計算します。次に、2 つの変数の部分依存と、各変数のヒストグラムを示す Figure を作成します。
carsmall
データ セットを読み込みます。
load carsmall
Weight
、Cylinders
、Displacement
、Horsepower
を含む table を作成します。
Tbl = table(Weight,Cylinders,Displacement,Horsepower);
Tbl
の予測子変数と応答変数 MPG
を使用して SVM 回帰モデルに学習させます。自動カーネル スケールのガウス カーネル関数を使用します。
Mdl = fitrsvm(Tbl,MPG,"ResponseName","MPG", ... "CategoricalPredictors","Cylinders","Standardize",true, ... "KernelFunction","gaussian","KernelScale","auto");
予測子変数 Weight
と Horsepower
の予測応答 (MPG
) の部分依存を計算します。クエリ点を指定し、名前と値の引数 QueryPoints
を使用して部分依存を計算します。
numPoints = 10; ptX = linspace(min(Weight),max(Weight),numPoints)'; ptY = linspace(min(Horsepower),max(Horsepower),numPoints)'; [pd,x,y] = partialDependence(Mdl,["Weight","Horsepower"],"QueryPoints",[ptX ptY]);
5 行 5 列のタイル表示チャート レイアウトを含む Figure を作成します。関数imagesc
を使用して、2 つの変数の部分依存をプロットします。次に、関数histogram
を使用して、各変数のヒストグラムを描画します。ヒストグラムのエッジを指定して、ヒストグラム バーの中心がクエリ点に揃うようにします。座標軸プロパティを変更して、プロットの座標軸を揃えます。
t = tiledlayout(5,5,"TileSpacing","compact"); ax1 = nexttile(2,[4,4]); imagesc(x,y,pd) title("Partial Dependence Plot") colorbar("eastoutside") ax1.YDir = "normal"; ax2 = nexttile(22,[1,4]); dX = diff(ptX(1:2)); edgeX = [ptX-dX/2;ptX(end)+dX]; histogram(Weight,edgeX); xlabel("Weight") xlim(ax1.XLim); ax3 = nexttile(1,[4,1]); dY = diff(ptY(1:2)); edgeY = [ptY-dY/2;ptY(end)+dY]; histogram(Horsepower,edgeY) xlabel("Horsepower") xlim(ax1.YLim); ax3.XDir = "reverse"; camroll(-90)
pd
の各要素は、イメージ プロットの 1 ピクセルの色を指定します。イメージの座標軸に合わせたヒストグラムは、予測子の分布を示します。
関数ハンドルを使用したモデルの指定
SemiSupervisedSelfTrainingModel
オブジェクトについて予測子変数のラベル スコアの部分依存を計算します。SemiSupervisedSelfTrainingModel
オブジェクトを関数 partialDependence
に直接渡すことはできません。代わりに、オブジェクトのラベル スコアを返すカスタム関数を定義し、その関数を partialDependence
に渡します。
ラベル付けされたデータの観測値をランダムに 15 個生成し、その観測値が 5 個ずつ 3 つのクラスに属するようにします。
rng("default") % For reproducibility labeledX = [randn(5,2)*0.25 + ones(5,2); randn(5,2)*0.25 - ones(5,2); randn(5,2)*0.5]; Y = [ones(5,1); ones(5,1)*2; ones(5,1)*3];
ラベル付けされていないデータの観測値を追加でランダムに 300 個生成し、各クラスに 100 個ずつ属するようにします。
unlabeledX = [randn(100,2)*0.25 + ones(100,2); randn(100,2)*0.25 - ones(100,2); randn(100,2)*0.5];
半教師あり自己学習法を使用して、ラベル付けされていないデータにラベルを当てはめます。関数 fitsemiself
は、SemiSupervisedSelfTrainingModel
オブジェクトを返します。
Mdl = fitsemiself(labeledX,Y,unlabeledX);
SemiSupervisedSelfTrainingModel
の関数 predict
によって計算されたラベル スコアを返すカスタム関数 myLabelScores
を定義します。このカスタム関数の定義は、この例の終わりで示します。
すべてのクラスの各変数について、unlabeledX
のスコアの部分依存を計算します。partialDependence
は、関数ハンドルの形式のカスタム モデルを受け入れます。関数ハンドルで表される関数は予測子データを受け入れ、観測値ごとに 1 つの行をもつ列ベクトルまたは行列を返す必要があります。カスタム モデルを @(X)myLabelScores(Mdl,X)
として指定し、カスタム関数で学習済みモデル Mdl
が使用されて予測子データが受け入れられるようにします。
[pd1,x1] = partialDependence(@(X)myLabelScores(Mdl,X),1,unlabeledX); [pd2,x2] = partialDependence(@(X)myLabelScores(Mdl,X),2,unlabeledX);
plot
やbar
などのプロット関数を使用して、計算された部分依存の値をプロットできます。あるいは、関数plotPartialDependence
を使用し、部分依存の値を計算してプロットすることができます。
最初の変数およびすべてのクラスの部分依存プロットを作成します。
plotPartialDependence(@(X)myLabelScores(Mdl,X),1,unlabeledX) xlabel("1st Variable of unlabeledX") ylabel("Scores") legend("Class 1","Class 2","Class 3")
カスタム関数 myLabelScores
function scores = myLabelScores(Mdl,X) [~,scores] = predict(Mdl,X); end
入力引数
RegressionMdl
— 回帰モデル
回帰モデル オブジェクト
回帰モデル。完全またはコンパクトな回帰モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
モデル | 完全またはコンパクトなモデル オブジェクト |
---|---|
一般化線形モデル | 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
を指定しなければなりません。
partialDependence
は、スパース行列で学習させたモデル オブジェクトをサポートしません。モデルに学習させる場合は、行が各観測値に対応する非スパースの数値行列または table を予測子データに使用してください。
ClassificationMdl
— 分類モデル
分類モデル オブジェクト
分類モデル。完全またはコンパクトな分類モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
モデル | 完全またはコンパクトなモデル オブジェクト |
---|---|
判別分析分類器 | 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
を指定しなければなりません。
partialDependence
は、スパース行列で学習させたモデル オブジェクトをサポートしません。モデルに学習させる場合は、行が各観測値に対応する非スパースの数値行列または table を予測子データに使用してください。
fun
— カスタム モデル
関数ハンドル
カスタム モデル。関数ハンドルとして指定します。関数ハンドル fun
は、予測子データ Data
を受け入れ、出力を列ベクトルまたは行列の形式で返す関数を表す必要があります。出力の各行は、予測子データの各観測値 (行) に対応する必要があります。
既定では、partialDependence
は部分依存の計算に fun
のすべての出力列を使用します。使用する出力列は、名前と値の引数 OutputColumns
を設定して指定できます。
予測子データ (Data
) が table 内にある場合、partialDependence
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列または文字ベクトルの cell 配列のいずれかである場合に、変数を categorical であると見なします。予測子データが行列である場合、partialDependence
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors
を使用してそれらを指定します。
データ型: function_handle
Vars
— 予測子変数
正の整数のベクトル | 文字ベクトル | string スカラー | string 配列 | 文字ベクトルの cell 配列
予測子変数。正の整数のベクトル、文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。次の表に示されているように、1 つまたは 2 つの予測子変数を指定できます。
1 つの予測子変数
値 | 説明 |
---|---|
正の整数 | 予測子データの列に対応するインデックス値。 |
文字ベクトルまたは string スカラー | 予測子変数の名前。名前は、 |
2 つの予測子変数
値 | 説明 |
---|---|
正の整数が 2 つ含まれているベクトル | 予測子データの列に対応するインデックス値。 |
文字ベクトルの cell 配列または string 配列 | 予測子変数の名前。配列の各要素は予測子変数の名前です。名前は、 |
例: ["x1","x3"]
データ型: single
| double
| char
| string
| cell
Labels
— クラス ラベル
categorical 配列 | 文字配列 | logical ベクトル | 数値ベクトル | 文字ベクトルの cell 配列
クラス ラベル。categorical 配列、文字配列、logical ベクトル、数値ベクトル、または文字ベクトルの cell 配列を指定します。Labels
の値とデータ型は、ClassificationMdl
の ClassNames
プロパティ (ClassificationMdl.ClassNames
) のクラス名のものと一致しなければなりません。
1 つまたは複数のクラス ラベルを指定できます。
この引数は、分類モデル オブジェクト ClassificationMdl
を指定する場合のみ有効です。
例: ["red","blue"]
例: ClassificationMdl.ClassNames([1 3])
は、ClassificationMdl
の 1 番目と 3 番目のクラスとして Labels
を指定します。
データ型: single
| double
| logical
| char
| cell
| categorical
Data
— 予測子データ
数値行列 | テーブル
予測子データ。数値行列またはテーブルとして指定します。Data
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
回帰モデル (RegressionMdl
) と分類モデル (ClassificationMdl
) の両方で、Data
は、X
または Variables
プロパティに格納されている、モデルの学習に使用した予測子データと一致しなければなりません。
数値行列を使用してモデルに学習をさせた場合、
Data
は数値行列でなければなりません。Data
の列を構成する変数の個数と順序は、モデルに学習をさせた予測子変数のものと同じでなければなりません。table (たとえば
Tbl
) を使用してモデルに学習をさせた場合、Data
は table でなければなりません。Data
内のすべての予測子変数は、変数名およびデータ型がTbl
のものと同じでなければなりません。ただし、Data
の列の順序がTbl
の列の順序に対応する必要はありません。Data
はスパースであってはなりません。
予測子データを含まない回帰モデルまたは分類モデルを指定する場合、Data
を指定しなければなりません。モデルが予測子データを含む完全なモデル オブジェクトである場合に Data
引数を指定すると、partialDependence
はモデルの予測子データを無視し、Data
のみを使用します。
カスタム モデル fun
を指定する場合、Data
を指定しなければなりません。
データ型: single
| double
| table
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: partialDependence(Mdl,Vars,Data,"NumObservationsToSample",100,"UseParallel",true)
は、
から抽出した 100 個の観測値を使用し、Data
for
ループの反復を並列実行することにより、部分依存の値を計算します。
IncludeInteractions
— 交互作用項を含むというフラグ
true
| false
部分依存の計算に一般化加法モデル (GAM) の交互作用項を含むというフラグ。true
または false
として指定します。この引数は、GAM の場合のみ有効です。つまり、この引数を指定できるのは、RegressionMdl
が RegressionGAM
または CompactRegressionGAM
である場合か、ClassificationMdl
が ClassificationGAM
または CompactClassificationGAM
である場合だけです。
モデルに交互作用項が含まれる場合、IncludeInteractions
の既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
例: "IncludeInteractions",false
データ型: logical
IncludeIntercept
— 切片項を含むというフラグ
true
(既定値) | false
部分依存の計算に一般化加法モデル (GAM) の切片項を含むというフラグ。true
または false
として指定します。この引数は、GAM の場合のみ有効です。つまり、この引数を指定できるのは、RegressionMdl
が RegressionGAM
または CompactRegressionGAM
である場合か、ClassificationMdl
が ClassificationGAM
または CompactClassificationGAM
である場合だけです。
例: "IncludeIntercept",false
データ型: logical
NumObservationsToSample
— 抽出する観測値の個数
観測値の総数 (既定値) | 正の整数
抽出する観測値の個数。正の整数として指定します。既定値は、Data
またはモデル (RegressionMdl
または ClassificationMdl
) 内の観測値の総数です。観測値の総数より大きい値が指定された場合、partialDependence
はすべての観測値を使用します。
partialDependence
は、関数 datasample
を使用して観測値を非復元抽出し、抽出した観測値を部分依存の計算に使用します。
例: "NumObservationsToSample",100
データ型: single
| double
QueryPoints
— 部分依存を計算する点
数値列ベクトル | 2 列の数値行列 | 2 つの数値列ベクトルから成る cell 配列
数値予測子の部分依存を計算する点。数値列ベクトル、2 列の数値行列、または 2 つの数値列ベクトルの cell 配列として指定します。
Vars
内の予測子変数を 1 つ選択する場合、数値列ベクトルを使用します。Vars
内の予測子変数を 2 つ選択する場合、次のようにします。各予測子変数について同じ個数の点を指定するには、2 列の数値行列を使用します。
各予測子変数について異なる個数の点を指定するには、2 つの数値列ベクトルから成る cell 配列を使用します。
既定値は、数値列ベクトルまたは 2 列の数値行列で、選択した予測子変数の数に応じて決まります。各列には、予測子変数に対応する抽出した観測値の最小値と最大値の間に等間隔に並ぶ 100 個の点が含まれます。
カテゴリカル変数の QueryPoints
は変更できません。関数 partialDependence
では、選択した変数としてすべてカテゴリカル値を使用します。
1 つの数値変数と 1 つのカテゴリカル変数を選択した場合、数値列ベクトルと空の配列で構成される cell 配列を使用することにより、数値変数について QueryPoints
を指定できます。
例: "QueryPoints",{pt,[]}
データ型: single
| double
| cell
UseParallel
— 並列実行のフラグ
false
(既定値) | true
並列実行のフラグ。true
または false
として指定します。"UseParallel",true
を指定した場合、関数 partialDependence
は各観測値の応答またはスコアの予測と平均化を行う際、parfor
を使用して for
ループの反復を実行します。Parallel Computing Toolbox™ がある場合、ループが並列に実行されます。
例: "UseParallel",true
データ型: logical
CategoricalPredictors
— カスタム モデルのカテゴリカル予測子のリスト
正の整数のベクトル | logical ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列 | "all"
カスタム モデル fun
のカテゴリカル予測子のリスト。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、対応する予測子がカテゴリカルであることを示すインデックス値です。インデックス値の範囲は 1 ~ |
logical ベクトル |
|
文字行列 | 行列の各行は予測子変数の名前です。名前は、table 内の予測子データ Data の変数名と一致しなければなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの cell 配列または string 配列 | 配列の各要素は予測子変数の名前です。名前は、table 内の予測子データ Data の変数名と一致しなければなりません。 |
"all" | すべての予測子がカテゴリカルです。 |
既定では、予測子データ Data
が table 内にある場合、partialDependence
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列のいずれか、あるいは文字ベクトルの cell 配列である場合に、変数を categorical であると見なします。予測子データが行列である場合、partialDependence
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors
を使用してそれらを指定します。
この引数は、fun
を使用してカスタム モデルを指定する場合のみ有効です。
例: "CategoricalPredictors","all"
データ型: single
| double
| logical
| char
| string
| cell
OutputColumns
— カスタム モデルの出力列
"all"
(既定値) | 正の整数のベクトル | logical ベクトル
部分依存の計算に使用するカスタム モデル fun
の出力列。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、 |
logical ベクトル |
|
"all" | partialDependence は部分依存の計算にすべての出力列を使用します。 |
この引数は、fun
を使用してカスタム モデルを指定する場合のみ有効です。
例: "OutputColumns",[1 2]
データ型: single
| double
| logical
| char
| string
PredictionForMissingValue
— 予測子に欠損値がある観測値に使用する予測した応答値
"median"
(既定値) | "mean"
| 数値スカラー
R2024a 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"
、"mean"
、または数値スカラーとして指定します。
値 | 説明 |
---|---|
"median" | partialDependence は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。 |
"mean" | partialDependence は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
数値スカラー |
|
観測値で Vars
の予測子変数に欠損値がある場合、その観測値は partialDependence
による部分依存の計算に使用されません。
メモ
この名前と値の引数は、次のタイプの回帰モデルに対してのみ有効です。ガウス過程回帰、カーネル、線形、ニューラル ネットワーク、サポート ベクター マシン。つまり、この引数を指定できるのは、RegressionMdl
が RegressionGP
、CompactRegressionGP
、RegressionKernel
、RegressionLinear
、RegressionNeuralNetwork
、CompactRegressionNeuralNetwork
、RegressionSVM
、または CompactRegressionSVM
オブジェクトである場合だけです。
例: "PredictionForMissingValue","mean"
例: "PredictionForMissingValue",NaN
データ型: single
| double
| char
| string
出力引数
pd
— 部分依存の値
数値配列
部分依存の値。数値配列として返されます。
pd
の次元は、モデルのタイプ (回帰、分類、またはカスタム)、Vars
で指定された変数の数、Labels
で指定されたクラスの数 (分類モデルのみ)、および OutputColumns
で指定された列数 (カスタム モデルのみ) によって異なります。
回帰モデル (RegressionMdl
) の場合、次の条件が適用されます。
分類モデル (ClassificationMdl
) の場合、次の条件が適用されます。
Vars
で 2 つの変数を指定した場合、pd
はnum
xnumY
xnumX
の配列です。ここで、num
はLabels
のクラス ラベルの数です。pd(i,j,k)
の値は、Labels
のi
番目のクラス ラベルにおけるクエリ点
とy
(j)
の部分依存の値です。x
(k)Vars
で 1 つの変数を指定した場合、pd
はnum
行numX
列の行列です。Labels
で 1 つのクラスを指定した場合、pd
はnumY
行numX
列の行列です。1 つの変数と 1 つのクラスを指定した場合、
pd
は1
行numX
列のベクトルです。
カスタム モデル (fun
) の場合、次の条件が適用されます。
Vars
で 2 つの変数を指定した場合、pd
はnum
xnumY
xnumX
の配列です。ここで、num
はOutputColumns
の出力列の数です。pd(i,j,k)
の値は、OutputColumns
のi
番目の列におけるクエリ点
とy
(j)
の部分依存の値です。x
(k)Vars
で 1 つの変数を指定した場合、pd
はnum
行numX
列の行列です。OutputColumns
で 1 つの列を指定した場合、pd
はnumY
行numX
列の行列です。1 つの変数と 1 つの列を指定した場合、
pd
は1
行numX
列のベクトルです。
x
— 1 つ目の予測子変数のクエリ点
数値列ベクトル | categorical 列ベクトル
Vars
の 1 つ目の予測子変数のクエリ点。数値列ベクトルまたは categorical 列ベクトルとして返されます。
予測子変数が数値の場合、名前と値の引数 QueryPoints
を使用してクエリ点を指定できます。
データ型: single
| double
| categorical
y
— 2 つ目の予測子変数のクエリ点
数値列ベクトル | categorical 列ベクトル | []
Vars
の 2 つ目の予測子変数のクエリ点。数値列ベクトルまたは categorical 列ベクトルとして返されます。Vars
で変数を 1 つだけ指定した場合、この出力引数は空 ([]
) になります。
予測子変数が数値の場合、名前と値の引数 QueryPoints
を使用してクエリ点を指定できます。
データ型: single
| double
| categorical
詳細
回帰モデルの部分依存
部分依存[1]は、学習済みの回帰モデルにおける予測子変数と予測応答の関係を表します。partialDependence
は、他の変数を除外することにより、予測子変数のサブセットにおける予測応答の部分依存を計算します。
予測子変数全体の集合 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 に関する予測応答の期待値によって定義されます。
ここで、pC(XC) は XC の周辺確率です。つまり、 です。各観測値の確率が同程度であり、応答における XS と XC の間の従属および XS と XC の交互作用が強くないと仮定することにより、partialDependence
は観測された予測子データを使用して次のように部分依存を推定します。
(1) |
ここで、N は観測値の個数、Xi = (XiS, XiC) は i 番目の観測値です。
関数 partialDependence
を呼び出す場合、入力引数 RegressionMdl
と Vars
を使用して、学習済みモデル (f(·)) の指定と変数 (XS) の選択をそれぞれ行うことができます。partialDependence
は、XS からの 100 個の等間隔の点、または名前と値の引数 QueryPoints
で指定された点における部分依存を計算します。特定の予測子データから抽出する観測値の個数 (N) は、名前と値の引数 NumObservationsToSample
を使用して指定できます。
部分依存分類モデル
分類モデルの場合、partialDependence
は、回帰モデルと同じ方法で部分依存を計算します。1 つ違う点として、関数はモデルからの予測応答ではなく、Labels
で指定されたクラスの予測スコアを使用します。
重み付き走査アルゴリズム
重み付き走査アルゴリズム[1]は、木ベースのモデルの部分依存を推定する手法です。推定される部分依存は、木の走査時に到達した葉ノードに対応する応答またはスコアの値の加重平均です。
XS は変数全体の集合 X のサブセット、XC は X における XS の補集合であるとします。このアルゴリズムでは、部分依存を計算する XS の各値について、ルート (開始) ノードから葉 (終端) ノードに向かって木を走査し、葉ノードの重みを求めます。走査は、ルート ノードに 1 という重みの値を割り当てることにより始まります。XS でノードが分割される場合、XS の値に応じて適切な子ノードが走査されます。子ノードの重みは親ノードと同じになります。XC でノードが分割される場合、両方の子ノードが走査されます。各子ノードの重みは、各子ノードに対応する観測値の比率を親ノードの値に乗算した値になります。木の走査の完了後、割り当てられた重みを使用して加重平均が計算されます。
バギング木のアンサンブルの場合、推定される部分依存は、各木の加重平均の平均です。
アルゴリズム
回帰モデル (RegressionMdl
) と分類モデル (ClassificationMdl
) の両方で、partialDependence
は、関数 predict
を使用して応答またはスコアを予測します。partialDependence
は、モデルに従って適切な関数 predict
を選択し、既定の設定で predict
を実行します。各関数 predict
の詳細については、次の 2 つの表の関数 predict
を参照してください。指定したモデルが木ベースのモデル (木のブースティング アンサンブルを除く) の場合、partialDependence
は関数 predict
ではなく重み付き走査アルゴリズムを使用します。詳細については、重み付き走査アルゴリズムを参照してください。
回帰モデル オブジェクト
モデル タイプ | 完全またはコンパクトな回帰モデル オブジェクト | 応答を予測する関数 |
---|---|---|
決定木のアンサンブルのバギング | CompactTreeBagger | predict |
決定木のアンサンブルのバギング | TreeBagger | predict |
回帰モデルのアンサンブル | RegressionEnsemble , RegressionBaggedEnsemble , CompactRegressionEnsemble | predict |
ランダムな特徴量拡張を使用したガウス カーネル回帰モデル | RegressionKernel | predict |
ガウス過程回帰 | RegressionGP , CompactRegressionGP | predict |
一般化加法モデル | RegressionGAM , CompactRegressionGAM | predict |
一般化線形混合効果モデル | GeneralizedLinearMixedModel | predict |
一般化線形モデル | GeneralizedLinearModel , CompactGeneralizedLinearModel | predict |
線形混合効果モデル | LinearMixedModel | predict |
線形回帰 | LinearModel , CompactLinearModel | predict |
高次元データの線形回帰 | RegressionLinear | predict |
ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork , CompactRegressionNeuralNetwork | predict |
非線形回帰 | NonLinearModel | predict |
回帰木 | RegressionTree , CompactRegressionTree | predict |
サポート ベクター マシン | RegressionSVM , CompactRegressionSVM | predict |
分類モデル オブジェクト
モデル タイプ | 完全またはコンパクトな分類モデル オブジェクト | ラベルとスコアを予測する関数 |
---|---|---|
判別分析分類器 | ClassificationDiscriminant , CompactClassificationDiscriminant | predict |
サポート ベクター マシンまたはその他の分類器用のマルチクラス モデル | ClassificationECOC , CompactClassificationECOC | predict |
分類用のアンサンブル学習器 | ClassificationEnsemble , CompactClassificationEnsemble , ClassificationBaggedEnsemble | predict |
ランダムな特徴量拡張を使用したガウス カーネル分類モデル | ClassificationKernel | predict |
一般化加法モデル | ClassificationGAM , CompactClassificationGAM | predict |
k 最近傍モデル | ClassificationKNN | predict |
線形分類モデル | ClassificationLinear | predict |
単純ベイズ モデル | ClassificationNaiveBayes , CompactClassificationNaiveBayes | predict |
ニューラル ネットワーク分類器 | ClassificationNeuralNetwork , CompactClassificationNeuralNetwork | predict |
1 クラスおよびバイナリ分類用のサポート ベクター マシン | ClassificationSVM , CompactClassificationSVM | predict |
マルチクラス分類用の二分決定木 | ClassificationTree , CompactClassificationTree | predict |
決定木のバギング アンサンブル | TreeBagger , CompactTreeBagger | predict |
代替機能
plotPartialDependence
は部分依存の値を計算してプロットします。関数は個別条件付き期待値 (ICE) プロットも作成できます。
参照
[1] Friedman, Jerome. H. “Greedy Function Approximation: A Gradient Boosting Machine.” The Annals of Statistics 29, no. 5 (2001): 1189-1232.
[2] Hastie, Trevor, Robert Tibshirani, and Jerome Friedman. The Elements of Statistical Learning. New York, NY: Springer New York, 2009.
拡張機能
自動並列サポート
Parallel Computing Toolbox™ を使用して自動的に並列計算を実行することで、コードを高速化します。
並列実行するには、この関数を呼び出すときに名前と値の引数 UseParallel
を true
に設定します。
並列計算の全般的な情報については、自動並列サポートを使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
この関数は、次の回帰モデルと分類モデルの GPU 配列を完全にサポートします。
LinearModel
オブジェクトとCompactLinearModel
オブジェクトGeneralizedLinearModel
オブジェクトとCompactGeneralizedLinearModel
オブジェクトRegressionSVM
オブジェクトとCompactRegressionSVM
オブジェクトRegressionLinear
オブジェクトClassificationLinear
オブジェクト
この関数は、次の表に示す回帰モデルと分類モデルの GPU 配列を制限付きでサポートします。
完全またはコンパクトなモデル オブジェクト 制限 ClassificationECOC
またはCompactClassificationECOC
決定木学習器に対しては、代理分岐はサポートされません。
KNN 学習器に対しては、次のオプションの値を下記のように設定することはできません。
"NSMethod","kdtree"
"Distance"
,関数ハンドル"IncludeTies",true
ClassificationEnsemble
またはCompactClassificationEnsemble
決定木学習器に対しては、代理分岐はサポートされません。
ClassificationKNN
次のオプションの値を下記のように設定することはできません。
"NSMethod","kdtree"
"Distance"
,関数ハンドル"IncludeTies",true
ClassificationSVM
またはCompactClassificationSVM
1 クラス分類はサポートされていません。
Data
に無限値を含めることはできません。名前と値の引数について次の制限があります。
名前と値の引数
KernelFunction
をカスタム カーネル関数として指定することはできません。名前と値の引数
Solver
は "SMO
" としてのみ指定できます。名前と値の引数
OutlierFraction
またはShrinkagePeriod
は指定できません。
ClassificationTree
またはCompactClassificationTree
決定木に対しては、代理分岐はサポートされません。
RegressionEnsemble
またはCompactRegressionEnsemble
決定木学習器に対しては、代理分岐はサポートされません。
RegressionTree
またはCompactRegressionTree
決定木に対しては、代理分岐はサポートされません。
この関数は、カスタム関数が GPU 配列をサポートする場合はカスタム関数の GPU 配列を完全にサポートします。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2020b で導入R2024a: 予測子に欠損値がある観測値のサポート
RegressionMdl
がガウス過程回帰モデル、カーネル モデル、線形モデル、ニューラル ネットワーク モデル、またはサポート ベクター マシン モデルである場合に、予測子に欠損値がある観測値を部分依存の計算に使用できるようになりました。名前と値の引数 PredictionForMissingValue
を指定します。
値
"median"
は R2023b での動作と一致します。値
NaN
は R2023a での動作と一致し、予測子に欠損値がある観測値の使用が回帰モデルによる予測でサポートされません。
R2024a: RegressionLinear
モデルに対する GPU 配列の指定
partialDependence
で RegressionLinear
モデルの GPU 配列が完全にサポートされます。
R2024a: ClassificationLinear
の GPU 配列のサポート
R2024a 以降では、partialDependence
で ClassificationLinear
モデルの GPU 配列が完全にサポートされます。
R2023a: RegressionSVM
モデルと CompactRegressionSVM
モデルに対する GPU 配列のサポート
R2023a 以降では、partialDependence
で RegressionSVM
モデルと CompactRegressionSVM
モデルの GPU 配列が完全にサポートされます。
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)