Main Content

predict

ガウス過程回帰モデルの予測応答

構文

ypred = predict(gprMdl,Xnew)
[ypred,ysd,yint] = predict(gprMdl,Xnew)
[ypred,ysd,yint] = predict(gprMdl,Xnew,Name,Value)

説明

ypred = predict(gprMdl,Xnew) は、ガウス過程回帰 (GPR) モデル gprMdlXnew 内の予測子の値について予測した応答 ypred を返します。

[ypred,ysd,yint] = predict(gprMdl,Xnew) は、学習済みの GPR モデルを使用して Xnew 内の各観測値で評価した応答変数の標準偏差 ysd と 95% の予測区間 yint も返します。

[ypred,ysd,yint] = predict(gprMdl,Xnew,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、予測区間 yint の信頼水準の有意水準を指定します。

入力引数

すべて展開する

ガウス過程回帰モデル。RegressionGP (完全) または CompactRegressionGP (コンパクト) オブジェクトとして指定します。

fitrgp で GPR モデルを学習させるために使用する予測子の新しい値。table または m 行 d 列の行列として指定します。m は観測値の数、d は学習データに含まれている予測子変数の数です。

table に対して gprMdl を学習させた場合、XnewgprMdl を学習させるために使用した予測子変数がすべて含まれている table でなければなりません。

行列に対して gprMdl を学習させた場合、Xnew は d 列の数値行列でなければなりません。

データ型: single | double | table

名前と値の引数

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

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

例: predict(grpMdl,Xnew,"Alpha",0.1) は、予測区間の信頼水準を 90% として指定します。

予測区間 yint の信頼水準の有意水準。範囲 [0,1] の数値スカラーとして指定します。yint の信頼水準は 100(1 – Alpha)% と等しくなります。

例: 'Alpha',0.01 は、99% の予測区間を返すように指定します。

データ型: single | double

R2023b 以降

予測子に欠損値がある観測値に使用する予測した応答値。"median""mean"、または数値スカラーとして指定します。

説明
"median"predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の中央値を使用します。
"mean"predict は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。
数値スカラーpredict は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。

例: "PredictionForMissingValue","mean"

例: "PredictionForMissingValue",NaN

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

出力引数

すべて展開する

予測応答。長さが n の列ベクトルとして返されます。n は、予測子データ Xnew に含まれている観測値の個数です。

予測子データ Xnew 内の各観測値で評価した応答変数の標準偏差。長さが n の列ベクトルとして返されます。n は、予測子データ Xnew に含まれている観測値の個数です。i 番目の要素 ysd(i) に、学習済みの GPR モデル gprMdl を使用して評価した i 番目の観測値 Xnew(i,:) に対する i 番目の応答の標準偏差が格納されます。

予測子データ Xnew 内の各観測値で評価した応答変数の予測区間。n 行 2 列の行列として返されます。n は、予測子データ Xnew に含まれている観測値の個数です。i 番目の行 yint(i,:) に、i 番目の観測値 Xnew(i,:) に対する i 番目の応答の 100(1 – Alpha)% の予測区間が格納されます。Alpha 値は、予測区間に Xnew(i,:) に対する真の応答値が含まれない確率です。yint の 1 列目には予測区間の下限が、2 列目には上限が格納されます。

すべて展開する

標本データを生成します。

n = 10000;
rng(1) % For reproducibility
x = linspace(0.5,2.5,n)';
y = sin(10*pi.*x) ./ (2.*x)+(x-1).^4 + 1.5*rand(n,1);

各予測子について長さスケールが異なり、アクティブ セットのサイズが 100 の Matern 3/2 カーネル関数を使用して、GPR モデルを当てはめます。パラメーター推定には回帰変数サブセット近似法を、予測には完全独立条件法を使用します。

gprMdl = fitrgp(x,y,'KernelFunction','ardmatern32', ...
    'ActiveSetSize',100,'FitMethod','sr','PredictMethod','fic');

予測を計算します。

[ypred,~,yci] = predict(gprMdl,x);

データを予測および予測区間とともにプロットします。

plot(x,y,'r.')
hold on
plot(x,ypred,'b-')
plot(x,yci(:,1),'k--')
plot(x,yci(:,2),'k--')
xlabel('x')
ylabel('y')
legend('True responses','GPR predictions', ...
    'Prediction interval limits','Location','best')

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent True responses, GPR predictions, Prediction interval limits.

標本データを読み込んで table に格納します。

load fisheriris
tbl = table(meas(:,1),meas(:,2),meas(:,3),meas(:,4),species,...
'VariableNames',{'meas1','meas2','meas3','meas4','species'});

1 番目の測定値を応答として、他の変数を予測子として使用して、GPR モデルを当てはめます。

mdl = fitrgp(tbl,'meas1');

予測と 99% の信頼区間を計算します。

[ypred,~,yci] = predict(mdl,tbl,'Alpha',0.01);

真の応答と予測を予測区間とともにプロットします。

figure();
plot(mdl.Y,'r.');
hold on;
plot(ypred);
plot(yci(:,1),'k:');
plot(yci(:,2),'k:');
legend('True response','GPR predictions',...
'Lower prediction limit','Upper prediction limit',...
'Location','Best');

Figure contains an axes object. The axes object contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent True response, GPR predictions, Lower prediction limit, Upper prediction limit.

標本データを読み込みます。

load('gprdata.mat');

データには、学習データとテスト データが含まれています。学習データには 500 個、テスト データには 100 個の観測値があります。データには 6 つの予測子変数があります。このデータは、シミュレーションされたものです。

各予測子について長さスケールが異なる二乗指数カーネル関数を使用して、GPR モデルを当てはめます。学習データの予測子を標準化します。厳密な近似法および予測法を使用します。

gprMdl = fitrgp(Xtrain,ytrain,'Basis','constant',...
'FitMethod','exact','PredictMethod','exact',...
'KernelFunction','ardsquaredexponential','Standardize',1);

テスト データの応答を予測します。

[ytestpred,~,ytestci] = predict(gprMdl,Xtest);

テストの応答と予測をプロットします。

figure;
plot(ytest,'r');
hold on;
plot(ytestpred,'b');
plot(ytestci(:,1),'k:');
plot(ytestci(:,2),'k:');
legend('Actual response','GPR predictions',...
'95% lower','95% upper','Location','Best');
hold off

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Actual response, GPR predictions, 95% lower, 95% upper.

ヒント

  • fitrgp で名前と値のペアの引数 PredictMethod を使用すると、GPR モデルを学習させるときの予測方法を選択できます。既定の予測方法は、n ≤ 10000 の場合は 'exact'、それ以外の場合は 'bcd' (ブロック座標降下) です。n は、学習データに含まれている観測値の数です。

  • PredictMethod'bcd' の場合、標準偏差 ysd と予測区間 yint の計算はサポートされません。

  • gprMdlCompactRegressionGP オブジェクトの場合、PredictMethod'sr' または 'fic' に等しいと、標準偏差 ysd と予測区間 yint を計算できません。PredictMethod'sr' または 'fic' に等しい場合に ysdyint を計算するには、完全な回帰オブジェクト (RegressionGP) を使用します。

代替方法

resubPredict を使用すると、学習データに含まれている観測値における学習済み GPR モデルの予測応答を計算できます。

Simulink ブロック

Simulink® にガウス過程回帰モデルの予測を統合するには、Statistics and Machine Learning Toolbox™ ライブラリにある RegressionGP Predict ブロックを使用するか、MATLAB® Function ブロックを関数 predict と共に使用します。例については、RegressionGP Predict ブロックの使用による応答の予測MATLAB Function ブロックの使用によるクラス ラベルの予測を参照してください。

使用するアプローチを判断する際は、以下を考慮してください。

  • Statistics and Machine Learning Toolbox ライブラリ ブロックを使用する場合、固定小数点ツール (Fixed-Point Designer)を使用して浮動小数点モデルを固定小数点に変換できます。

  • MATLAB Function ブロックを関数 predict と共に使用する場合は、可変サイズの配列に対するサポートを有効にしなければなりません。

  • MATLAB Function ブロックを使用する場合、予測の前処理や後処理のために、同じ MATLAB Function ブロック内で MATLAB 関数を使用することができます。

拡張機能

バージョン履歴

R2015b で導入

すべて展開する