このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
resubLoss
再代入回帰損失
説明
では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、L
= resubLoss(Mdl
,Name,Value
)'IncludeInteractions',false
は、一般化加法モデル Mdl
から交互作用項を除外するように指定します。
例
再代入損失
一般化加法モデル (GAM) に学習させてから、平均二乗誤差 (MSE) を使用して再代入損失を計算します。
patients
データ セットを読み込みます。
load patients
予測子変数 (Age
、Diastolic
、Smoker
、Weight
、Gender
、SelfAssessedHealthStatus
) と応答変数 (Systolic
) を格納する table を作成します。
tbl = table(Age,Diastolic,Smoker,Weight,Gender,SelfAssessedHealthStatus,Systolic);
tbl
内の予測子の線形項が格納されている一変量の GAM に学習させます。
Mdl = fitrgam(tbl,"Systolic")
Mdl = RegressionGAM PredictorNames: {'Age' 'Diastolic' 'Smoker' 'Weight' 'Gender' 'SelfAssessedHealthStatus'} ResponseName: 'Systolic' CategoricalPredictors: [3 5 6] ResponseTransform: 'none' Intercept: 122.7800 IsStandardDeviationFit: 0 NumObservations: 100
Mdl
は RegressionGAM
モデル オブジェクトです。
平均二乗誤差 (MSE) を使用して再代入損失を計算します。
L = resubLoss(Mdl)
L = 4.1957
カスタム再代入損失の計算
標本データを読み込んで 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 = resubLoss(mdl,'lossfun',fun)
L = 0.2345
回帰損失の検査による GAM の比較
予測子の線形項と交互作用項の両方が格納されている一般化加法モデル (GAM) に学習させ、学習データとテスト データについて交互作用項を含める場合と含めない場合の回帰損失 (平均二乗誤差、MSE) を推定します。回帰損失を推定する際に交互作用項を含めるかどうかを指定します。
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') % For reproducibility n = size(X,1); newInds = randsample(n,10); inds = ~ismember(1:n,newInds); XNew = X(newInds,:); YNew = Y(newInds);
X
内の使用可能なすべての線形項と交互作用項が格納されている一般化加法モデルに学習させます。
Mdl = fitrgam(X(inds,:),Y(inds),'Interactions','all');
Mdl
は RegressionGAM
モデル オブジェクトです。
Mdl
に交互作用項を含める場合と含めない場合の両方の再代入 MSE (つまり標本内 MSE) を計算します。交互作用項を除外するには、'IncludeInteractions',false
を指定します。
resubl = resubLoss(Mdl)
resubl = 0.0292
resubl_nointeraction = resubLoss(Mdl,'IncludeInteractions',false)
resubl_nointeraction = 4.7330
テスト データ セットについて、交互作用項を含める場合と含めない場合の両方の回帰 MSE を計算します。メモリ効率の高いモデル オブジェクトを計算に使用します。
CMdl = compact(Mdl);
CMdl
は CompactRegressionGAM
モデル オブジェクトです。
l = loss(CMdl,XNew,YNew)
l = 12.8604
l_nointeraction = loss(CMdl,XNew,YNew,'IncludeInteractions',false)
l_nointeraction = 15.6741
学習データ セットとテスト データ セットのいずれについても、交互作用項を含めた方が誤差が小さくなります。
入力引数
Mdl
— 回帰機械学習モデル
完全な回帰モデル オブジェクト
回帰機械学習モデル。完全な回帰モデル オブジェクトとして指定します。サポートされるモデルは次の表に記載されています。
モデル | 回帰モデル オブジェクト |
---|---|
ガウス過程回帰モデル | RegressionGP |
一般化加法モデル (GAM) | RegressionGAM |
ニューラル ネットワーク モデル | RegressionNeuralNetwork |
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: resubLoss(Mdl,'IncludeInteractions',false)
は、一般化加法モデル Mdl
から交互作用項を除外します。
IncludeInteractions
— 交互作用項を含むというフラグ
true
| false
モデルの交互作用項を含むというフラグ。true
または false
として指定します。この引数は、一般化加法モデルの場合のみ有効です。つまり、この引数を指定できるのは、Mdl
が RegressionGAM
である場合だけです。
Mdl
に交互作用項が含まれる場合、既定値は true
です。モデルに交互作用項が含まれない場合、値は false
でなければなりません。
例: 'IncludeInteractions',false
データ型: logical
LossFun
— 損失関数
'mse'
(既定値) | 関数ハンドル
損失関数。'mse'
または関数ハンドルとして指定します。
'mse'
— 重み付けされた平均二乗誤差。関数ハンドル — カスタム損失関数を指定するには、関数ハンドルを使用します。関数は次の形式でなければなりません。
lossval = lossfun(Y,YFit,W)
出力引数
lossval
は浮動小数点スカラーです。関数名 (
) を指定します。lossfun
Y
は、観測応答の長さ n の数値ベクトルです。ここで、n はTbl
またはX
に含まれている観測値の個数です。YFit
は、対応する予測応答の長さ n の数値ベクトルです。W
は、観測値の重みの n 行 1 列の数値ベクトルです。
例: 'LossFun',@
lossfun
データ型: char
| string
| function_handle
PredictionForMissingValue
— 予測子に欠損値がある観測値に使用する予測した応答値
"median"
| "mean"
| "omitted"
| 数値スカラー
R2023b 以降
予測子に欠損値がある観測値に使用する予測した応答値。"median"
、"mean"
、"omitted"
、または数値スカラーとして指定します。この引数は、ガウス過程回帰モデルまたはニューラル ネットワーク モデルに対してのみ有効です。つまり、この引数を指定できるのは、Mdl
が RegressionGP
オブジェクトまたは RegressionNeuralNetwork
オブジェクトである場合だけです。
値 | 説明 |
---|---|
"median" |
この値は、 |
"mean" | resubLoss は、予測子に欠損値がある観測値について予測した応答値として、学習データ内の観測された応答値の平均値を使用します。 |
"omitted" | resubLoss は、予測子に欠損値がある観測値を損失の計算から除外します。 |
数値スカラー | resubLoss は、予測子に欠損値がある観測値について予測した応答値として、この値を使用します。 |
観測された応答値または観測値の重みが観測値にない場合、その観測値は resubLoss
による損失の計算に使用されません。
例: "PredictionForMissingValue","omitted"
データ型: single
| double
| char
| string
詳細
重み付けされた平均二乗誤差
重み付けされた平均二乗誤差は、回帰モデルの予測誤差を測定します。複数のモデルで同じタイプの損失を比較した場合、誤差が小さい方が予測モデルとして優れていることになります。
重み付けされた平均二乗誤差は、次のように計算されます。
ここで、
n は、データの行数です。
xj は、データの j 番目の行です。
yj は、xj に対する真の応答です。
f(xj) は、xj に対するモデル
Mdl
の応答予測です。w は、観測値の重みのベクトルです。
アルゴリズム
resubLoss
は、オブジェクト (Mdl
) の対応する関数 loss
に従って回帰損失を計算します。モデル固有の説明については、次の表に示す関数 loss
のリファレンス ページを参照してください。
モデル | 回帰モデル オブジェクト (Mdl ) | オブジェクト関数 loss |
---|---|---|
ガウス過程回帰モデル | RegressionGP | loss |
一般化加法モデル | RegressionGAM | loss |
ニューラル ネットワーク モデル | RegressionNeuralNetwork | loss |
代替機能
新しい予測子データの応答損失を計算するには、オブジェクト (Mdl
) の対応する関数 loss
を使用します。
バージョン履歴
R2015b で導入R2023b: 予測子に欠損値がある観測値に使用する予測した応答値の指定
R2023b 以降で損失を予測または計算する際、一部の回帰モデルでは、予測子に欠損値がある観測値について予測した応答値を指定できます。名前と値の引数 PredictionForMissingValue
を指定して、予測値として数値スカラー、学習セットの中央値、または学習セットの平均値を使用します。損失を計算するときに、予測子に欠損値がある観測値を省略するように指定することもできます。
次の表は、名前と値の引数 PredictionForMissingValue
をサポートするオブジェクト関数の一覧です。既定では、これらの関数は、予測子に欠損値がある観測値について予測した応答値として、学習セットの中央値を使用します。
モデル タイプ | モデル オブジェクト | オブジェクト関数 |
---|---|---|
ガウス過程回帰 (GPR) モデル | RegressionGP , CompactRegressionGP | loss , predict , resubLoss , resubPredict |
RegressionPartitionedGP | kfoldLoss , kfoldPredict | |
ガウス カーネル回帰モデル | RegressionKernel | loss , predict |
RegressionPartitionedKernel | kfoldLoss , kfoldPredict | |
線形回帰モデル | RegressionLinear | loss , predict |
RegressionPartitionedLinear | kfoldLoss , kfoldPredict | |
ニューラル ネットワーク回帰モデル | RegressionNeuralNetwork , CompactRegressionNeuralNetwork | loss , predict , resubLoss , resubPredict |
RegressionPartitionedNeuralNetwork | kfoldLoss , kfoldPredict | |
サポート ベクター マシン (SVM) 回帰モデル | RegressionSVM , CompactRegressionSVM | loss , predict , resubLoss , resubPredict |
RegressionPartitionedSVM | kfoldLoss , kfoldPredict |
以前のリリースでは、上記の回帰モデル関数 loss
および predict
は、予測子に欠損値がある観測値について予測した応答値として NaN
を使用していました。予測子に欠損値がある観測値は、予測と損失の再代入 ("resub") と交差検証 ("kfold") の計算で省略されていました。
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)