Main Content

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

loss

ガウス過程回帰モデルの回帰誤差

構文

L = loss(gprMdl,Xnew,Ynew)
L = loss(gprMdl,Xnew,Ynew,Name,Value)

説明

L = loss(gprMdl,Xnew,Ynew) は、Xnew の予測子と Ynew の観測された応答を使用して、ガウス過程回帰 (GPR) モデル gprMdl の平均二乗誤差を返します。

L = loss(gprMdl,Xnew,Ynew,Name,Value) は、1 つ以上の名前と値の引数で指定された追加オプションを使用して、GPR モデル gprMdl の平均二乗誤差を返します。たとえば、カスタムな損失関数や観測値の重みを指定できます。

入力引数

すべて展開する

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

新しいデータ。table または n 行 d 列の行列として指定します。m は観測値の数、d は学習データに含まれている予測子変数の数です。

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

Xnew がテーブルの場合、Ynew も含めることができます。このようにした場合、Ynew を指定する必要はありません。

行列に対して gprMdl を学習させた場合、Xnew は d 列の数値行列でなければならず、予測子変数の値のみを含めることができます。

データ型: single | double | table

Xnew の予測子の値に対応する、新しい観測された応答値。n 行 1 列のベクトルとして指定します。n は Xnew の行数です。Ynew の各エントリは、Xnew の対応する行の予測子データに基づく、観測された応答です。

Xnew がテーブルであり、新しい応答値が含まれている場合、Ynew を指定する必要はありません。

データ型: single | double

名前と値の引数

オプションの Name,Value 引数のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

損失関数。'mse' (平均二乗誤差) または関数ハンドルを指定します。

関数ハンドル (たとえば fun) を渡した場合、loss はこれを fun(Y,Ypred,W) という形式で呼び出します。YYpred および W は、長さが n の数値ベクトルです。n は、Xnew の行数です。Y は観測された応答、Ypred は予測された応答、W は観測値の重みです。

例: 'lossfun',Fct は、損失関数 Fct を呼び出します。

データ型: char | string | function_handle

R2023b 以降

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

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

すべての予測子の値、観測された応答値、または観測値の重みが観測値にない場合、その観測値は loss での損失の計算に使用されません。

例: "PredictionForMissingValue","omitted"

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

観測値の重み。n 行 1 列のベクトルとして指定します。n は Xnew の行数です。既定の設定では、各観測値の重みは 1 です。

例: 'weights',W は、ベクトル W に含まれている観測値の重みを使用します。

データ型: double | single

出力引数

すべて展開する

学習済みガウス過程回帰モデル gprMdl の回帰誤差。スカラー値として返されます。

すべて展開する

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

load('gprdata.mat')

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

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

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

テスト データの回帰誤差を計算します。

L = loss(gprMdl,Xtest,ytest)
L = 0.6928

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

ypredtest = predict(gprMdl,Xtest);

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

figure;
plot(ytest,'r');
hold on;
plot(ypredtest,'b');
legend('Data','Predictions','Location','Best');

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Data, Predictions.

回帰損失を手動で計算します。

L = (ytest - ypredtest)'*(ytest - ypredtest)/length(ytest)
L = 0.6928

標本データを読み込んで 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');

学習済みのモデルを使用して、応答を予測します。

ypred = predict(mdl,tbl);

平均絶対誤差を計算します。

n = height(tbl);
y = tbl.meas1;
fun = @(y,ypred,w) sum(abs(y-ypred))/n;
L = loss(mdl,tbl,'lossfun',fun)
L = 0.2345

代替方法

resubLoss を使用すると、学習データに含まれている観測値における学習済み GPR モデルの回帰誤差を計算できます。

拡張機能

バージョン履歴

R2015b で導入

すべて展開する