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
Properties, Methods
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: [1×1 BayesianOptimization]
Properties, Methods
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

入力引数
一般化加法モデル。RegressionGAM または CompactRegressionGAM モデル オブジェクトとして指定します。
予測子データ。数値行列または table として指定します。
X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。
数値行列の場合
Xの列を構成する変数の順序は、Mdlに学習させた予測子変数の順序と同じでなければなりません。table を使用して
Mdlに学習をさせた場合、table に含まれている予測子変数がすべて数値変数であれば、Xを数値行列にすることができます。
table の場合
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% として指定し、計算から交互作用項を除外します。
予測区間 yInt の信頼水準の有意水準。範囲 [0,1] の数値スカラーとして指定します。yInt の信頼水準は 100(1 – Alpha)% と等しくなります。
この引数は、Mdl の IsStandardDeviationFit プロパティが true である場合のみ有効です。標準偏差のモデルを当てはめるには、fitrgam の名前と値の引数 'FitStandardDeviation' として true を指定します。
例: 'Alpha',0.01 は、99% の予測区間を返すように指定します。
データ型: single | double
モデルの交互作用項を含むというフラグ。true または false として指定します。
Mdl に交互作用項が含まれる場合、'IncludeInteractions' の既定値は true です。モデルに交互作用項が含まれない場合、値は false でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
出力引数
予測応答。長さが n の列ベクトルとして返されます。n は、予測子データ X に含まれている観測値の個数です。
予測子データ X 内の各観測値で評価した応答変数の標準偏差。長さが n の列ベクトルとして返されます。n は、予測子データ X に含まれている観測値の個数です。i 番目の要素 ySD(i) に、Mdl の学習済みの標準偏差モデルを使用して評価した i 番目の観測値 に対する X(i,:)i 番目の応答の標準偏差が格納されます。
この引数は、Mdl の IsStandardDeviationFit プロパティが true である場合のみ有効です。標準偏差のモデルを当てはめるには、fitrgam の名前と値の引数 'FitStandardDeviation' として true を指定します。
予測子データ 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 Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)