loss
ガウス過程回帰モデルの回帰誤差
構文
L = loss(gprMdl,Xnew,Ynew)
L = loss(gprMdl,Xnew,Ynew,Name,Value)
説明
は、L
= loss(gprMdl
,Xnew
,Ynew
)Xnew
の予測子と Ynew
の観測された応答を使用して、ガウス過程回帰 (GPR) モデル gpr
の平均二乗誤差を返します。
は、1 つ以上の L
= loss(gprMdl
,Xnew
,Ynew
,Name,Value
)Name,Value
ペア引数で指定された追加オプションを使用して、GPR モデル gpr
の平均二乗誤差を返します。たとえば、カスタムな損失関数や観測値の重みを指定できます。
メモ
予測子データ Xnew
に欠損値がある場合、関数 loss
で NaN が返されることがあります。詳細については、欠損値がある予測子データに対して loss で NaN が返されることがあるを参照してください。
入力引数
gprMdl
— ガウス過程回帰モデル
RegressionGP
オブジェクト | CompactRegressionGP
オブジェクト
ガウス過程回帰モデル。RegressionGP
(完全) または CompactRegressionGP
(コンパクト) オブジェクトとして指定します。
Xnew
— 新しい観測データ
table
| m 行 d 列の行列
新しいデータ。table
または n 行 d 列の行列として指定します。m は観測値の数、d は学習データに含まれている予測子変数の数です。
table
に対して gprMdl
を学習させた場合、Xnew
は gprMdl
を学習させるために使用した予測子変数がすべて含まれている table
でなければなりません。
Xnew
がテーブルの場合、Ynew
も含めることができます。このようにした場合、Ynew
を指定する必要はありません。
行列に対して gprMdl
を学習させた場合、Xnew
は d 列の数値行列でなければならず、予測子変数の値のみを含めることができます。
データ型: single
| double
| table
Ynew
— 新しい応答値
n 行 1 列のベクトル
Xnew
の予測子の値に対応する、新しい観測された応答値。n 行 1 列のベクトルとして指定します。n は Xnew
の行数です。Ynew
の各エントリは、Xnew
の対応する行の予測子データに基づく、観測された応答です。
Xnew
がテーブルであり、新しい応答値が含まれている場合、Ynew
を指定する必要はありません。
データ型: single
| double
名前と値の引数
オプションの Name,Value
引数のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
lossfun
— 損失関数
'mse'
(既定値) | 関数ハンドル
損失関数。'mse'
(平均二乗誤差) または関数ハンドルを指定します。
関数ハンドル (たとえば fun
) を渡した場合、loss
はこれを fun(Y,Ypred,W)
という形式で呼び出します。Y
、Ypred
および W
は、長さが n の数値ベクトルです。n は、Xnew
の行数です。Y
は観測された応答、Ypred
は予測された応答、W
は観測値の重みです。
例: 'lossfun',Fct
は、損失関数 Fct
を呼び出します。
データ型: char
| string
| function_handle
weights
— 観測値の重み
1 から成るベクトル (既定値) | n 行 1 列のベクトル
観測値の重み。n 行 1 列のベクトルとして指定します。n は Xnew
の行数です。既定の設定では、各観測値の重みは 1 です。
例: 'weights',W
は、ベクトル W
に含まれている観測値の重みを使用します。
データ型: double
| single
例
検定データの回帰損失の計算
標本データを読み込みます。
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');
回帰損失を手動で計算します。
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 モデルの回帰誤差を計算できます。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は、tall 配列を完全にサポートします。詳細は、tall 配列を参照してください。
バージョン履歴
R2015b で導入R2022a: 欠損値がある予測子データに対して loss
で NaN が返されることがある
関数 loss
で加重平均回帰損失を計算する際に、予測が NaN の観測値が省略されなくなりました。そのため、予測子データ Xnew
に欠損値がある場合に loss
で NaN が返されることがあります。ほとんどの場合、検定セットの観測値に予測子の欠損がなければ、関数 loss
で NaN が返されることはありません。
この変更により、fitrauto
を使用する場合の回帰モデルの自動選択が改善されます。この変更の前は、NaN 以外の予測子が少ないモデルが選択される (新しいデータの応答の予測に最適であると予測される) ことがありました。
コードの loss
で NaN が返される場合、このような結果にならないようにコードを更新できます。rmmissing
または fillmissing
を使用して、欠損値を削除するか置き換えます。
次の表に、オブジェクト関数 loss
で NaN が返される可能性がある回帰モデルを示します。詳細については、それぞれの関数 loss
の「互換性の考慮事項」を参照してください。
モデル タイプ | 完全またはコンパクトなモデル オブジェクト | オブジェクト関数 loss |
---|---|---|
ガウス過程回帰 (GPR) モデル | RegressionGP , CompactRegressionGP | loss |
ガウス カーネル回帰モデル | RegressionKernel | loss |
線形回帰モデル | RegressionLinear | loss |
ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork , CompactRegressionNeuralNetwork | loss |
サポート ベクター マシン (SVM) 回帰モデル | RegressionSVM , CompactRegressionSVM | loss |
参考
fitrgp
| RegressionGP
| CompactRegressionGP
| compact
| resubLoss
| predict
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)