predict
説明
では、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、yFit
= predict(Mdl
,X
,Name,Value
)'IncludeInteractions',true
は、計算に交互作用項を含めるために指定します。
[
は、前の構文におけるいずれかの入力引数の組み合わせを使用して、予測子データ yFit
,ySD
,yInt
] = predict(___)X
内の各観測値で評価した応答変数の標準偏差と予測区間も返します。この構文は、Mdl
の学習に fitrgam
の 'FitStandardDeviation'
を true
として指定し、Mdl
の IsStandardDeviationFit
プロパティが true
である場合のみ有効です。
例
テスト標本応答の予測
学習標本を使用して一般化加法モデルに学習させてから、テスト標本応答を予測します。
patients
データ セットを読み込みます。
load patients
予測子変数 (Age
、Diastolic
、Smoker
、Weight
、Gender
、SelfAssessedHealthStatus
) と応答変数 (Systolic
) を格納する table を作成します。
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
観測値を学習セットとテスト セットに無作為に分割します。テスト用に 10% のホールドアウト標本を指定します。
rng('default') % For reproducibility cv = cvpartition(size(tbl,1),'HoldOut',0.10);
学習インデックスとテスト インデックスを抽出します。
trainInds = training(cv); testInds = test(cv);
tbl
内の予測子の線形項が格納されている一変量の GAM に学習させます。
Mdl = fitrgam(tbl(trainInds,:),'Systolic')
Mdl = RegressionGAM PredictorNames: {'Age' 'Diastolic' 'Smoker' 'Weight' 'Gender' 'SelfAssessedHealthStatus'} ResponseName: 'Systolic' CategoricalPredictors: [3 5 6] ResponseTransform: 'none' Intercept: 122.7444 IsStandardDeviationFit: 0 NumObservations: 90
Mdl
は RegressionGAM
モデル オブジェクトです。
テスト セットの応答を予測します。
yFit = predict(Mdl,tbl(testInds,:));
観測応答値と予測応答値を格納する table を作成します。
table(tbl.Systolic(testInds),yFit, ... 'VariableNames',{'Observed Value','Predicted Value'})
ans=10×2 table
Observed Value Predicted Value
______________ _______________
124 126.58
121 123.95
130 116.72
115 117.35
121 117.45
116 118.5
123 126.16
132 124.14
125 127.36
124 115.99
予測応答の比較
予測子の線形項と交互作用項の両方が格納されている一般化加法モデルを使用して、新しい観測値の応答を予測します。メモリ効率の高いモデル オブジェクトを使用し、応答を予測する際に交互作用項を含めるかどうかを指定します。
carbig
データ セットを読み込みます。このデータ セットには、1970 年代と 1980 年代初期に製造された自動車の測定値が格納されています。
load carbig
予測子変数 (X
) として Acceleration
、Displacement
、Horsepower
および Weight
を、応答変数 (Y
) として MPG
を指定します。
X = [Acceleration,Displacement,Horsepower,Weight]; Y = MPG;
データ セットを 2 つのセットに分割します。1 つは学習データを含め、もう 1 つは新しい未観測のテスト データを含めます。新しいテスト データ セットの 10 件の観測値を保持します。
rng('default')
n = size(X,1);
newInds = randsample(n,10);
inds = ~ismember(1:n,newInds);
XNew = X(newInds,:);
YNew = Y(newInds);
X
内の使用可能なすべての線形項と交互作用項が格納されている GAM に学習させます。
Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');
Mdl
は RegressionGAM
モデル オブジェクトです。
学習させたモデルのサイズを減らし、メモリの消費量を抑えます。
CMdl = compact(Mdl); whos('Mdl','CMdl')
Name Size Bytes Class Attributes CMdl 1x1 1255766 classreg.learning.regr.CompactRegressionGAM Mdl 1x1 1289882 RegressionGAM
CMdl
は CompactRegressionGAM
モデル オブジェクトです。
線形項と交互作用項の両方を使用して応答を予測してから、線形項のみを使用して応答を予測します。交互作用項を除外するには、'IncludeInteractions',false
を指定します。
yFit = predict(CMdl,XNew);
yFit_nointeraction = predict(CMdl,XNew,'IncludeInteractions',false);
観測応答値と予測応答値を格納する table を作成します。
t = table(YNew,yFit,yFit_nointeraction, ... 'VariableNames',{'Observed Response', ... 'Predicted Response','Predicted Response Without Interactions'})
t=10×3 table
Observed Response Predicted Response Predicted Response Without Interactions
_________________ __________________ _______________________________________
27.9 23.04 23.649
NaN 37.163 35.779
NaN 25.876 21.978
13 12.786 14.141
36 28.889 27.281
19.9 22.199 18.451
24.2 23.995 24.885
12 14.247 13.982
38 33.797 33.528
13 12.225 11.127
予測区間のプロット
一般化加法モデル (GAM) に学習させてから、応答値の予測区間を計算し、プロットします。
patients
データ セットを読み込みます。
load patients
予測子変数 (Age
、Diastolic
、Smoker
、Weight
、Gender
、SelfAssessedHealthStatus
) と応答変数 (Systolic
) を格納する table を作成します。
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
tbl
内の予測子の線形項が格納されている一変量の GAM に学習させます。学習済みモデルを使用して予測区間を計算できるように、名前と値の引数 FitStandardDeviation
を true
として指定します。標準偏差モデルを標準偏差推定の精度に当てはめる場合、最適なハイパーパラメーターの使用が推奨されます。'all-univariate'
として 'OptimizeHyperparameters'
を指定します。再現性を得るために、'expected-improvement-plus'
の獲得関数を使用します。'ShowPlots'
を false
として、'Verbose'
を 0 として指定し、プロットの表示とメッセージの表示をそれぞれ無効にします。
rng('default') % For reproducibility Mdl = fitrgam(tbl,'Systolic','FitStandardDeviation',true, ... 'OptimizeHyperparameters','all-univariate', ... 'HyperparameterOptimizationOptions',struct('AcquisitionFunctionName','expected-improvement-plus', ... 'ShowPlots',false,'Verbose',0))
Mdl = RegressionGAM PredictorNames: {'Age' 'Diastolic' 'Smoker' 'Weight' 'Gender' 'SelfAssessedHealthStatus'} ResponseName: 'Systolic' CategoricalPredictors: [3 5 6] ResponseTransform: 'none' Intercept: 122.7800 IsStandardDeviationFit: 1 NumObservations: 100 HyperparameterOptimizationResults: [1x1 BayesianOptimization]
Mdl
は、最適な推定実行可能点を使用する RegressionGAM
モデル オブジェクトです。最適な推定実行可能点は、ベイズ最適化プロセスの基となる目的関数モデルに基づいて目的関数値の信頼限界の上限を最小化するハイパーパラメーターのセットを示します。最適化プロセスの詳細については、OptimizeHyperparameters を使用した GAM の最適化を参照してください。
tbl
内の学習データの応答を予測し、応答変数の 99% の予測区間を計算します。有意水準 ('Alpha'
) を 0.01 として指定し、予測区間の信頼水準を 99% に設定します。
[yFit,~,yInt] = predict(Mdl,tbl,'Alpha',0.01);
並べ替えられた真の応答を予測応答および予測区間と一緒にプロットします。
figure yTrue = tbl.Systolic; [sortedYTrue,I] = sort(yTrue); plot(sortedYTrue,'o') hold on plot(yFit(I)) plot(yInt(I,1),'k:') plot(yInt(I,2),'k:') legend('True responses','Predicted responses', ... 'Prediction interval limits','Location','best') hold off
入力引数
Mdl
— 一般化加法モデル
RegressionGAM
モデル オブジェクト | CompactRegressionGAM
モデル オブジェクト
一般化加法モデル。RegressionGAM
または CompactRegressionGAM
モデル オブジェクトとして指定します。
X
— 予測子データ
数値行列 | table
予測子データ。数値行列またはテーブルとして指定します。
X
の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
数値行列の場合
X
の列を構成する変数の順序は、Mdl
に学習させた予測子変数の順序と同じでなければなりません。table を使用して
Mdl
に学習をさせた場合、table に含まれている予測子変数がすべて数値変数であれば、X
を数値行列にすることができます。
テーブルの場合
table (たとえば
Tbl
) を使用してMdl
に学習をさせた場合、X
内のすべての予測子変数は変数名およびデータ型がTbl
内の変数と同じでなければなりません。ただし、X
の列の順序がTbl
の列の順序に対応する必要はありません。数値行列を使用して
Mdl
に学習をさせた場合、Mdl.PredictorNames
内の予測子名とX
内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定するには、名前と値の引数'PredictorNames'
を使用します。X
内の予測子変数はすべて数値ベクトルでなければなりません。X
に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict
はこれらを無視します。predict
は、文字ベクトルの cell 配列ではない cell 配列や複数列の変数をサポートしません。
データ型: table
| double
| single
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'Alpha',0.01,'IncludeInteractions',false
は信頼水準を 99% として指定し、計算から交互作用項を除外します。
Alpha
— 有意水準
0.05 (既定値) | [0,1]
の数値スカラー
予測区間 yInt
の信頼水準の有意水準。範囲 [0,1]
の数値スカラーとして指定します。yInt
の信頼水準は 100(1 – Alpha)%
と等しくなります。
この引数は、Mdl
の IsStandardDeviationFit
プロパティが true
である場合のみ有効です。標準偏差のモデルを当てはめるには、fitrgam
の名前と値の引数 'FitStandardDeviation'
として true
を指定します。
例: 'Alpha',0.01
は、99% の予測区間を返すように指定します。
データ型: single
| double
IncludeInteractions
— 交互作用項を含むというフラグ
true
| false
モデルの交互作用項を含むというフラグ。true
または false
として指定します。
Mdl
に交互作用項が含まれる場合、'IncludeInteractions'
の既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
出力引数
yFit
— 予測応答
列ベクトル
予測応答。長さが n の列ベクトルとして返されます。n は、予測子データ X
に含まれている観測値の個数です。
ySD
— 応答変数の標準偏差
列ベクトル
予測子データ X
内の各観測値で評価した応答変数の標準偏差。長さが n の列ベクトルとして返されます。n は、予測子データ X
に含まれている観測値の個数です。i
番目の要素 ySD(i)
に、Mdl
の学習済みの標準偏差モデルを使用して評価した i
番目の観測値
に対する X
(i,:)i
番目の応答の標準偏差が格納されます。
この引数は、Mdl
の IsStandardDeviationFit
プロパティが true
である場合のみ有効です。標準偏差のモデルを当てはめるには、fitrgam
の名前と値の引数 'FitStandardDeviation'
として true
を指定します。
yInt
— 応答変数の予測区間
2 列の行列
予測子データ X
内の各観測値で評価した応答変数の予測区間。n 行 2 列の行列として返されます。n は、予測子データ X
に含まれている観測値の個数です。i
番目の行 yInt(i,:)
に、i
番目の観測値
に対する X
(i,:)i
番目の応答の 100(1–
の予測区間が格納されます。Alpha
)%Alpha
値は、予測区間に
に対する真の応答値が含まれない確率です。X
(i,:)yInt
の 1 列目には予測区間の下限が、2 列目には上限が格納されます。
この引数は、Mdl
の IsStandardDeviationFit
プロパティが true
である場合のみ有効です。標準偏差のモデルを当てはめるには、fitrgam
の名前と値の引数 'FitStandardDeviation'
として true
を指定します。
アルゴリズム
標準偏差および予測区間
predict
は予測応答 (yFit
) を返し、X
内の各観測値で評価した応答変数の標準偏差 (ySD
) と予測区間 (yInt
) をオプションとして返します。
回帰用の一般化加法モデル (GAM)は、応答変数 y が平均 μ および標準偏差 σ をもつ正規分布に従うと仮定します。fitrgam
の 'FitStandardDeviation'
として false
(既定値) を指定した場合、fitrgam
は μ についてモデルに学習させます。'FitStandardDeviation'
として true
を指定した場合、fitrgam
は σ について追加のモデルに学習させて、GAM オブジェクトの IsStandardDeviationFit
プロパティを true
に設定します。出力 yFit
および ySD
は、それぞれ推定された平均 μ および標準偏差 σ に対応します。
バージョン履歴
R2021a で導入
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)